Curator selector
生活随笔
收集整理的這篇文章主要介紹了
Curator selector
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
zookeeper最經典的用法,選舉。Curator的實現有2個種:
LeaderLatch:
? ? ? ?這種是有阻塞的,就是大家一起上,誰先上了,就一直阻塞著,直到方法執行完成。如果執行結束,那么其他的兄弟就選一個出來。我覺得這種適合主備,比如開2 個 job,一個掛了另一個就上。
代碼,這種代碼最好是開2個eclipse看效果,順序打開,看效果,再領悟:
package?curator.selector;import?org.apache.curator.RetryPolicy; import?org.apache.curator.framework.CuratorFramework; import?org.apache.curator.framework.CuratorFrameworkFactory; import?org.apache.curator.framework.recipes.leader.LeaderLatch; import?org.apache.curator.retry.ExponentialBackoffRetry;public?class?LeaderLatchDemo?{public?static?void?main(String[]?args)?throws?Exception?{RetryPolicy?retryPolicy?=?new?ExponentialBackoffRetry(1000,?3);CuratorFramework?client?=?CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(2000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build();client.start();//?選舉Leader?啟動LeaderLatch?latch?=?new?LeaderLatch(client,"/path");latch.start();latch.await();System.err.println("我啟動了");Thread.currentThread().sleep(1000000);latch.close();client.close();} }?
LeaderSelector:
? ? ? 這種復雜一點,他有個leaderSelector.autoRequeue();就是自動搶,比如打印一個helloworld,第一個打印完,第2個打印,然后第3個打印。然后第一個再打印,大家一起搶。有點動態選舉的味道。
代碼:
package?curator.selector;import?org.apache.curator.RetryPolicy; import?org.apache.curator.framework.CuratorFramework; import?org.apache.curator.framework.CuratorFrameworkFactory; import?org.apache.curator.framework.recipes.leader.LeaderSelector; import?org.apache.curator.framework.recipes.leader.LeaderSelectorListenerAdapter; import?org.apache.curator.retry.ExponentialBackoffRetry;public?class?LeaderSelectorDemo?{public?static?void?main(String[]?args)?throws?Exception?{RetryPolicy?retryPolicy?=?new?ExponentialBackoffRetry(1000,?3);final?CuratorFramework?client?=?CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(5000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build();client.start();final?LeaderSelector?leaderSelector?=?new?LeaderSelector(client,?"/led",?new?LeaderSelectorListenerAdapter(){@Overridepublic?void?takeLeadership(CuratorFramework?client)?throws?Exception?{System.err.println("work?ing...");Thread.currentThread().sleep(3000);System.err.println("end");}});leaderSelector.autoRequeue();leaderSelector.start();System.in.read();} }?
?
?
轉載于:https://my.oschina.net/u/1378390/blog/297057
總結
以上是生活随笔為你收集整理的Curator selector的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AsyncTask中各个函数详细的调用过
- 下一篇: Lync Server 2013与OWA