使用ZooKeeper设计一个组成员管理系统

2020-02-14  本文已影响0人  金果儿

协同服务说明

设计一个master-worker的组成员管理系统,要求系统中只有一个master,master能实时获取系统中worker的情况。

保证组里只有一个master

  1. 启动客户端cli1
    zkCli.sh
  2. 创建znode节点,代表master
    create -e /master "m1:2233"

  1. 启动另外一个客户端cli2,执行如下命令,尝试成为master
    create -e /master "m2:2233"
    如果master节点正常,这个命令会执行失败。
  2. 执行stat -w /master监控master状态。
    当master状态发生改变时,cli2会收到通知。
    如果master被删除,cli2可以再次发起成为master的请求:
    create -e /master "m2:2233"

master监控组里worker状态

用workers下的znode表示znode。

  1. 执行zkCli.sh启动一个客户端, 作为worker1
  2. 执行如下命令创建worker1
    create -e /workers/w1 "w1:2224"
    执行成功后,master会收到一个通知。当执行ls -w /workers就可以看到w1。
  3. 另起一个zkCli,worker1不要退出,创建一个w2.
  4. master客户端也会收到一个通知。当执行ls -w /workers可以看到w1和w2。
  5. 在w1的客户端中执行quit命令,退出w1
  6. master客户端会收到w1被删除通知。当执行ls -w /workers只能看到w2。

这就实现了一个master-worker的组成员管理系统。

上一篇下一篇

猜你喜欢

热点阅读