클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js

요 몇일 Vert.x를 분석해보고.. (메모)

Terry Cho 2014. 2. 3. 00:37

요즘 대용량 Concurrent 처리가 가능한 프레임웍을 보는중 Vert.x를 보고 있는데.

한마디로 정말 예술적으로 잘 만들었다.

  • MINA를 기반으로 하고 있기 때문에 대용량, 고속 네트워크 처리에 능함
  • Python,java,js,scala,groovy등 다양한 언어를 지원
  • 프레임웍 형식으로 매우 직관적이며 코딩양이 매우 적음
  • instance 개념을 도입하여 isolation 을 해줌으로써 multi thread 처리가 필요 없으면서, 같은 코드를 여러개의 instance에 로딩해서 각기 다른 thread에서 수행하게 해서 마치 multi thread와 유사한 성능을 냄. - 이런 구조는 Tuxedo의 Service 개념과 유사함. 이 구조 때문에, multi core machine에서는 node.js보다 성능이 더 나옴. 
  • Hazelcast를 이용하여, instance나 node간의 상태 정보 공유가 가능함? --> 문서에는 안된다고 나옴  확인 필요!! 왜안되지? IMDB 가 뒤에 붙었는데?? 이해 안됨. 

http://vertx.io/core_manual_java.html#shared-data

Sometimes it makes sense to allow different verticles instances to share data in a safe way. Vert.x allows simplejava.util.concurrent.ConcurrentMap and java.util.Set data structures to be shared between verticles.

There is a caveat: To prevent issues due to mutable data, Vert.x only allows simple immutable types such as number, boolean and string or Buffer to be used in shared data. With a Buffer, it is automatically copied when retrieved from the shared data, so different verticle instances never see the same object instance.

Currently data can only be shared between verticles in the same Vert.x instance. In later versions of Vert.x we aim to extend this to allow data to be shared by all Vert.x instances in the cluster.


  • worker instance를 이용한 비동기 처리가 가능함
  • 아직 많이 활성화 되지 않아서 관련 자료 찾기가 어려움
  • groups.google.com이 활성화 되어 있음
  • Tuxedo의 Service = instance, BBL = Hazelcast와 개념이 유사함
  • Single Thread 기반인데도, Stream 기능인지. 파일 업로드 처리 (Long tx)가 가능함.. (이건 더 봐야 될거 같고)

근래에 새로운 기술 배우겠다고, mongodb,python,angularjs 등 보다가 간만에 서버 백엔드에 자바코드 보니까는 마음이 편안해짐...