zookeeper的选举法怎么用
本篇内容主要讲解“zookeeper的选举法怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“zookeeper的选举法怎么用”吧!
Curator的实现有2个种:
LeaderLatch:
这种是有阻塞的,就是大家一起上,谁先上了,就一直阻塞着,直到方法执行完成。如果执行结束,那么其他的兄弟就选一个出来。我觉得这种适合主备,比如开2 个 job,一个挂了另一个就上。
代码,这种代码最好是开2个eclipse看效果,顺序打开,看效果,再领悟:
packagecurator.selector; importorg.apache.curator.RetryPolicy; importorg.apache.curator.framework.CuratorFramework; importorg.apache.curator.framework.CuratorFrameworkFactory; importorg.apache.curator.framework.recipes.leader.LeaderLatch; importorg.apache.curator.retry.ExponentialBackoffRetry; publicclassLeaderLatchDemo{ publicstaticvoidmain(String[]args)throwsException{ RetryPolicyretryPolicy=newExponentialBackoffRetry(1000,3); CuratorFrameworkclient=CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(2000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build(); client.start(); //选举Leader启动 LeaderLatchlatch=newLeaderLatch(client,"/path"); latch.start(); latch.await(); System.err.println("我启动了"); Thread.currentThread().sleep(1000000); latch.close(); client.close(); } }
LeaderSelector:
这种复杂一点,他有个leaderSelector.autoRequeue();就是自动抢,比如打印一个helloworld,第一个打印完,第2个打印,然后第3个打印。然后第一个再打印,大家一起抢。有点动态选举的味道。
代码:
packagecurator.selector; importorg.apache.curator.RetryPolicy; importorg.apache.curator.framework.CuratorFramework; importorg.apache.curator.framework.CuratorFrameworkFactory; importorg.apache.curator.framework.recipes.leader.LeaderSelector; importorg.apache.curator.framework.recipes.leader.LeaderSelectorListenerAdapter; importorg.apache.curator.retry.ExponentialBackoffRetry; publicclassLeaderSelectorDemo{ publicstaticvoidmain(String[]args)throwsException{ RetryPolicyretryPolicy=newExponentialBackoffRetry(1000,3); finalCuratorFrameworkclient=CuratorFrameworkFactory.builder().connectString("127.0.0.1:2181").sessionTimeoutMs(5000).connectionTimeoutMs(10000).retryPolicy(retryPolicy).namespace("text").build(); client.start(); finalLeaderSelectorleaderSelector=newLeaderSelector(client,"/led",newLeaderSelectorListenerAdapter(){ @Override publicvoidtakeLeadership(CuratorFrameworkclient)throwsException{ System.err.println("working..."); Thread.currentThread().sleep(3000); System.err.println("end"); } }); leaderSelector.autoRequeue(); leaderSelector.start(); System.in.read(); } }
到此,相信大家对“zookeeper的选举法怎么用”有了更深的了解,不妨来实际操作一番吧!
版权声明
本文仅代表作者观点,不代表博信信息网立场。
上一篇:如何进行paxos算法分析 下一篇:linux云主机有什么用