Zookeeper中主从模式结构场景练习
下面这个部分,我们将通过zkCli工具来实现简单的主从结构模式,主从模式结构设计到了下面的几个角色。MasterMaster监视着新的worker和tasks,并且分配任务到workers上WorkerWorker注册到系统中,好让master知道他们是可以来执行任务的ClientClient用来创建任务并且等待系统的响应, TheMaster Role由于只能有一个master,所以只能有一个进
下面这个部分,我们将通过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的本质都是一样的。
更多推荐
所有评论(0)