Zookeeper中主从模式结构场景练习

来源:互联网 发布:背单词的app 知乎 编辑:程序博客网 时间:2024/05/22 08:27

下面这个部分,我们将通过zkCli工具来实现简单的主从结构模式,主从模式结构设计到了下面的几个角色。


Master

Master监视着新的worker和tasks,并且分配任务到workers上

Worker

Worker注册到系统中,好让master知道他们是可以来执行任务的

Client

Client用来创建任务并且等待系统的响应,

 

TheMaster Role

由于只能有一个master,所以只能有一个进程来获得主控权去成为master,为了表示master,我们来创建一个临时的节点叫做/master


上面操作中,我们创建了一个临时的节点/master,并且让该节点保存了一些主机的信息,上面的-e参数表明了我们创建的是一个临时的节点。


此时我们在开启另外一个进程,执行下面的操作




当再次创建/master时,告诉我们已经存在,此时,我们在此节点上创建一个监听,用stat命令操作,此时关闭刚才的进程,我们在当前的进程中会看到如下的提示内容


监视告诉我们master节点已经删除了。





Workers,.tasksand assignment


在我们进一步的讨论workers和client之前,我们先创建几个重要的节点信息






上面的三个节点都是永久性的节点并且没有包含数据,我们想用这些节点来告诉我们那些workers是可用的,当我们要分配工作的时候给他们。

在实际的应用中,这些节点既可以被主master创建,也可以被其他的引导程序来创建。下面我需要对这些节点添加一个监听。




在上面中,我们利用可选的true参数来添加监听,效果与stat命令一样。


TheWorker Role

首先,worker需要通知master它是可以执行task的,因此我们创建一个临时的节点来代表worker的子节点。注意到workers下面创建了子节点,我们可以从监听中看到相应的输出信息。




接下来,worker需要创建一个父节点/assign/worker1.example.com,并且对他进行监听的操作




Worker现在已经开始受到作业了,接下来我们将会讨论客户端的角色。

 

 

Client的角色

Client添加任务到系统中。这个例子的目的并不在于任务是否真正的被执行了。在这里我们假设客户端让主从模式系统执行了一个cmd的命令,为了向系统中添加任务,客户端需要执行以下操作。




一旦task节点被创建,将会看到如下的输出信息




接下来master检查新的任务,得到可以利用的worker信息,并且分配任务




 

紧接着worker收到了监听的信息,如下所示





Worker接下来检查taske信息



一旦worker完成了正在执行的任务,他就会添加一个状态的节点到/asks

接下来客户端收到了通知,就开始检查结果



客户端检查状态节点的内容决定是否成功的被执行,如果被执行的话,那么内容将会是done信息。当然了也可能会涉及到其他的分布式系统,但不管是什么,机制都是一样的,毕竟zookeeper的本质都是一样的。


1 0
原创粉丝点击