协同服务说明
设计一个master-worker的组成员管理系统,要求系统中只有一个master,master能实时获取系统中worker的情况。
保证组里只有一个master
- 启动客户端cli1
zkCli.sh
- 创建znode节点,代表master
create -e /master "m1:2233"
- 启动另外一个客户端cli2,执行如下命令,尝试成为master
create -e /master "m2:2233"
如果master节点正常,这个命令会执行失败。 - 执行
stat -w /master
监控master状态。
当master状态发生改变时,cli2会收到通知。
如果master被删除,cli2可以再次发起成为master的请求:
create -e /master "m2:2233"
。
master监控组里worker状态
用workers下的znode表示znode。
- 查看workers下znode节点状态
ls -w /workers
- 执行
zkCli.sh
启动一个客户端, 作为worker1 - 执行如下命令创建worker1
create -e /workers/w1 "w1:2224"
执行成功后,master会收到一个通知。当执行ls -w /workers
就可以看到w1。 - 另起一个zkCli,worker1不要退出,创建一个w2.
- master客户端也会收到一个通知。当执行
ls -w /workers
可以看到w1和w2。 - 在w1的客户端中执行
quit
命令,退出w1 - master客户端会收到w1被删除通知。当执行
ls -w /workers
只能看到w2。
这就实现了一个master-worker的组成员管理系统。
网友评论