意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

zookeeper的选举法怎么用

来源:恒创科技 编辑:恒创科技编辑部
2024-02-01 15:42:59

本篇内容主要讲解“zookeeper的选举法怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“zookeeper的选举法怎么用”吧!

Curator的实现有2个种:

LeaderLatch:


zookeeper的选举法怎么用

这种是有阻塞的,就是大家一起上,谁先上了,就一直阻塞着,直到方法执行完成。如果执行结束,那么其他的兄弟就选一个出来。我觉得这种适合主备,比如开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算法在大型系统中常见的应用场景是什么 下一篇: 手机怎么远程登录云服务器?