Zookeeper应用 - Master选举
2016-08-01 23:12
302 查看
转载自:http://www.cnblogs.com/shengkejava/p/5726794.html
Master 选举
1、原理服务器争抢创建标志为Master的临时节点
服务器监听标志为Master的临时节点,当监测到节点删除事件后展开新的一轮争抢
某个服务器成功创建则为Master
2、架构图
Master:服务器争抢节点
Servers:服务器列表节点
work Server:服务器节点
3、流程图
4、核心代码
workServer监听
public WorkServer(final ServerData serverData) { this.serverData = serverData; dataListener = new IZkDataListener() { @Override public void handleDataChange(String s, Object o) throws Exception { } @Override public void handleDataDeleted(String s) throws Exception { //toBeMaster(); //适应网络抖动 if(null!=masterData && masterData.getName().equals(serverData.getName())) { toBeMaster(); }else{ executorService.schedule(new Runnable() { @Override public void run() { toBeMaster(); } },10, TimeUnit.SECONDS); } } }; }
适应网络抖动:当网络发生异常可能会出现短时间的断开,发生此情况时给予节点创建的延时,如果上次保存Master信息为当前节点,则此次Master节点争抢会有10秒钟的优势
争抢Master
public void toBeMaster() { if(!running) return; //创建临时节点,session连接失败自动删除 try{ zkClient.create(MASTER_NOTE,serverData, CreateMode.EPHEMERAL); masterData = serverData; System.out.println("当前master:"+masterData.getName()); //测试使用,每5秒释放master节点 if(checkMaster()) { executorService.schedule(new Runnable() { @Override public void run() { releaseMaster(); } },detay,TimeUnit.SECONDS); } }catch (ZkNodeExistsException e){ //如果master节点已经存在 读取 ServerData data = zkClient.readData(MASTER_NOTE,true); //数据为空说明此时master 宕机 if(null==data){ toBeMaster(); }else{ masterData = data; } } }
ZkNodeExistsException :说明已存在Master节点
存在后读取节点数据,如果节点数据不存在则说明此时Master宕机,进行争抢
编程改变生活,改变人生
分类: Zookeeper
相关文章推荐
- zookeeper典型应用场景之一:master选举
- ZooKeeper的典型应用场景之Master选举。
- zookeeper典型应用场景之一:master选举
- (原)3.1 Zookeeper应用 - Master选举
- zookeeper典型应用场景之一:master选举
- golang通过zookeeper实现master选举
- zookeeper在mysql主库选举切换中的应用
- zookeeper原理(选举,应用)
- Distributed System: ZooKeeper系列之三 (Master选举和分布式锁)
- ZooKeeper场景实践:(6)集群监控和Master选举
- Distributed System: ZooKeeper系列之三 (Master选举和分布式锁)
- Zookeeper实例Curator API-Master选举
- ZooKeeper场景实践:(6)集群监控和Master选举
- 使用zookeeper实现分布式master选举(c 接口版本)
- Zookeeper 实现 master 选举
- Distributed System: ZooKeeper系列之三 (Master选举和分布式锁)
- Distributed System: ZooKeeper系列之三 (Master选举和分布式锁)
- (未完成)Zookeeper学习(七):Master的选举
- zookeeper应用 - leader选举 锁
- Zookeeper实现master选举