Zookeeper学习(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alphags/article/details/52938110

《Zookeeper distributed process coordination》学习笔记。
所有学习代码均托管在https://github.com/alphg/zkstudy

第一部分Zookeeper基础
通过搭建使用zookeeper管理Master-Worker模式集群,加深对基的理解。

系统结构图如下
这里写图片描述
我们使用工具zkCli以该图为基础实现书中的示例

一、Master节点

Master节点负责管理workers和tasks,并且负责分配任务(task)给合适的worker。
由于Master在集群中起到很重要的作用,所以应考虑单点故障,所以我们使用多点备份的方式。
为了实现同一时间只能有一个master对集群进行管理,master在集群中新建一个临时节点 /master
打开一个linux终端,运行zkCli.sh
这里写图片描述

分别运行下面三条命令
“`
create -e /master “master1.example.com:2333” #创建/master临时节点
ls / #列出zookeeper中所有节点
get /master #得到/master节点的metadata 和 data

 本机运行结果如下

![这里写图片描述](https://img-blog.csdn.net/20161027210529973)

 接下来我们可以另外启动一个终端模拟另外一个master进行测试
 运行以下命令


create -e /master “master2.example.com:2333” #创建/master临时节点
“`

这里写图片描述
结果如上图红框中所示,表示创建失败,失败原因是/master节点已经存在
为了实现当master1挂掉的时候master2可以自动得到这个信息,我们可以在master2创建一个watch监控/master的变化(因为/master是临时节点,当master1挂掉的时候,由其创建的临时节点/master会被自动删除,master2通过监控/master节点的变化(删除)来知道master1已经挂掉)
运行以下命令

这里写图片描述

然后我们现在手动将master1断掉(使用quit命令关闭zkCli,关闭连接)

这里写图片描述

在master2我们可以看到

这里写图片描述

我们可以看到master2得到了 /master 节点被删除的通知。之后master2再次创建/master节点,以保证其在集群中的管理者地位(其他的master创建节点/master都会因为已存在而失败)

这里写图片描述

我们可以看到/master中的数据已经变成了“master2.example.com:2333”说明该节点确实为master2创建。
二、Workers、Tasks、Assignments
在讨论后续步骤之前我们需要创建三个重要的父节点/workers ,/tasks ,/assign
这里写图片描述

master需要监控/workers和/tasks节点

这里写图片描述

三、worker
我们再启动一个终端启动zkCli.sh让其充当一个worker
为了使zookeeper可以监控到该worker的状态(在线或掉线),所以需要worker在节点/workers下创建动态子节点,同时为了该worker可以接收任务,我们在/assign下创建静态子节点并监控其变化

这里写图片描述
(上图中最后一条命令出错,应该是 ls /assign/worker1 true)
四、Client
接下来我们启动第4个终端,启动zkCli.sh模拟一个客户的访问,其作用是发布任务(task)并监控任务以得到任务的处理结果。

这里写图片描述

五、流程

在完成上述四步命令后我们返回第2个终端(master),发现其已经检测到/task节点的变化(有新的任务被创建)

这里写图片描述
(这里有两个watch通知,第一个是我们前边在创建worker时的通知(/workers发生变化),第二个就是有新的任务被创建而产生的通知)
接下来就是检查/tasks和/workers节点,并将任务分配给worker

这里写图片描述

接下来我们返回第3个终端(worker)

这里写图片描述
我们可以看到其下已经分配到任务task-0000000000

此处worker不对任务进行任何处理,直接通过写入/tasks/task-0000000000的任务状态通知客户端已处理完成

这里写图片描述

返回第4个终端我们可以看到client已经得到任务被处理完成的通知

这里写图片描述
六、总结

至此就完成了简单master-workers集群的搭建过程,也了解了其控制流程。理解本文内容为处理更复杂的生产环境中集群搭建、控制流程梳理提供帮助。

阅读更多

没有更多推荐了,返回首页