zookeeper实现一主多从协同服务的示例

介绍

本文介绍zookeeper如何实现对一主多从的集群进行协同,要求系统中只能有一个master,master能实时监控系统中worker的情况。

前期准备

需要安装zookeeper,配好配置文件,启动zkServer.sh服务。可以参考:通过Zookeeper实现分布式锁示例

实现只能有一个master

启动两个zkCli.sh服务,其中一个客户端创建/master节点,此时另外一个就会创建失败:
在这里插入图片描述
当master1创建/master临时节点,带上节点名m1和端口号8081,创建成功。此时master2进行创建/master节点失败。此时master2可以对/master节点注册一个监听,这样当master节点发生变化时,就会收到通知。
在这里插入图片描述
此时主节点/master宕机,监听节点就会收到type:NodeDeleted path:/master的通知。
在这里插入图片描述
收到主节点移除的回调后:
master2可以再次尝试获取master:
在这里插入图片描述
由此保证了只有一个master节点。(这个原理与zookeeper实现分布式锁一样)

主节点实现对worker节点的监控

我们创建三个客户端,前面我们说过,节点会尝试成为主节点,/master节点创建失败的节点就会申请成为从节点,我们这里假设从节点就在/worker节点下:
主节点对worker节点进行监控:
在这里插入图片描述

-w表示对/workers节点进行监控,此时两个从节点进行节点注册:

小贴士:
这里的worker节点需为持久性节点,zookeeper规定,临时节点下不允许有子节点。如果你创建的/workers是一个临时节点,那么当你创建它的子节点时会报Ephemerals cannot have children: /workers/w1错误。

注册w1从节点,master就会收到通知,此时查看/workers从节点就可以看到w1:
在这里插入图片描述
同理,创建w2从节点,master节点也会收到通知。
在这里插入图片描述
与此同时,当从节点宕机,master节点也能收到回调:
在这里插入图片描述
这样就实现了zookeeper对从节点的监控。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值