관리 메뉴

HAMA 블로그

Vert.x 클러스터링과 공유데이터 본문

Vert.x

Vert.x 클러스터링과 공유데이터

[하마] 이승현 (wowlsh93@gmail.com) 2015. 10. 1. 17:43


Vert.x 클러스터링 (여러 머신상에서 vert.x 인스턴스끼리 데이터공유) 을 할때 대해서 정리


1. ClusterManager 를 사용한다.

ClusterManager clusterManager = ((VertxInternal)vertx).clusterManager();
Map map = clusterManager.getSyncMap("mapName"); // shared distributed map


뒤에 Hazelcast IMap 을 사용하게된다. -cluster  파라미터와 헤즐케스트에 대한 설정을 했다고 가정한다.

이것은 내부 API 로서 사용되므로 ,일반적으로 제품에 대해서 추천하지 않는다. 테스트용으로는 괜찮을지도.


2. 헤즐케스트를 적극적으로 사용한다.

Hazelcast 를 워커버티클에서 직접적으로 접근해서 사용하라 Hazelcast 의 정적함수를 이용.

    Set<HazelcastInstance> instances = Hazelcast.getAllHazelcastInstances();
    HazelcastInstance hz = instances.stream().findFirst().get();
    Map map = hz.getMap("mapName"); // shared distributed map


주의 : . 헤즐케스트 API 는 블러킹되기때문에 워커버티클에서만 사용하라


3. Vert.x 2 버전은 클러스터 공유데이터를 지원하지 않는다. Vert.x 3 부터는  헤즐케스트 클러스터 매니저를

감싼 비동기 api 를 통해서 지원한다. (비동기에 유념하라)  


4. 일반적인 공유DB 를 사용하라.


5. 하나의 버티클을 공유맵 인스턴스를 가지고 관리하는 전용으로 만들어라. 다른 버티클들과 이벤트버스를

    통해서  관리하라.  


6. 어플리케이션을 애초에 공유데이터가 필요없게 만들어라.




http://stackoverflow.com/questions/12299132/clustering-and-shared-data-in-vert-x  참고 





Comments