07. Step-5. Clustering the application :: 2015/04/08 12:51

이번 단계에서는 강력한 infinispan clustering 대해 알아볼 것이다. Multiple node 데이터를 어떻게 공유할 있는지를 보여줄 것이다. multiple node 동일 physical host 있을 수도 있고, 분리된 VM이나 따로 떨어진 machine 있을 수도 있다. tutorial 목적에 맞도록 동일한 host에서 모든 node 실행하는 것은 network이나 firewall 대한 변경작업이 필요 없이 때문에 가장 쉬운 방법이다. 최고의 결과를 위해 vertical splitting (여러 개의 터미널 윈도우 사용) 지원하는 terminal 사용하라. (Linux : Terminator, OSX : iTerm2, Windows : ConEmu)


CacheManager Cluster 속하도록 설정하기 위하여 특별히 전송이 가능한 "global" configuration 설정해야 한다.


GlobalConfigurationBuilder global = GlobalConfigurationBuilder.defaultClusteredBuilder(); global.transport().clusterName("WeatherApp");

cacheManager = new DefaultCacheManager(global.build(), config.build());


우리는 편리한 defaultClusterBuilder() method 사용하여 쉽게 갔지만, GlobalConfigurationBuilder 구성하고 필요한 파라미터들을 수정함으로 동일한 결과를 얻을 있다. Clustered CacheManager 만드는 것만으로는 충분하지 않다. 우리는 Clustered Cache 원한다. 예제에서는 default cache configuration 수정하여 기본적으로 2곳에 데이터를 저장하는 distributed synchronous cache 사용할 것이다.


config.clustering().cacheMode(CacheMode.DIST_SYNC);


우리가 저장한 Entries들은 network 통해 node 전송되어야 하기 때문에, key value 대해서 java.io.Serializable interface 통해 구현할 필요가 있다. Entry들은 key hash하여 cluster member 사이에 분산처리 된다. 2곳에 저장하도록 설정했기 때문에, entry primary owner backup owner 가질 것이다. 이제 여러 개의 terminal 띄워 놓고 다음과 같이 해보자.


git checkout -f step-5

mvn clean package exec:exec # from terminal 1

mvn exec:exec # from terminal 2


서로간에 "wait"하도록 설정하지 않았기 때문에 첫번째 instance 시작되자마자 두번째 instance 시작하라. 최종 결과는 이전 단계와 유사하겠지만 (2곳에서 보여짐), 서로 간의 node discovery 관련된 추가적인 logging 있을 것이다. 우리는 이런 동작을 통제하기 위해서 다음 단계에서는 listener 추가할 것이다.

2015/04/08 12:51 2015/04/08 12:51
Trackback Address :: http://www.yongbi.net/trackback/672
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret
< PREV |  1  |  ...  130  |  131  |  132  |  133  |  134  |  135  |  136  |  137  |  138  |  ...  566  |  NEXT >