实现Master-Worker的例子 - 工人、任务和指派关系

优质
小牛编辑
133浏览
2023-12-01

Created /workers

[zk: localhost:2181(CONNECTED) 1] create /tasks ""

Created /tasks

[zk: localhost:2181(CONNECTED) 3] ls /

[assign, tasks, workers, master, zookeeper]

[zk: localhost:2181(CONNECTED) 4]

这三个节点都是持久化的节点,并不包含数据。在本例中我们使用这些节点来告诉我们哪些worker是可用的,还有哪些任务等着被分配,同时分配给worker的任务。

在现实的应用中,这些节点要么是被主进程在分配任务之前创建的,要么是某些引导步骤创建的。不论它们是如何创建的,一旦它们被创建,主节点就需要监视孩子节点\/workers和\/tasks的变化:

[zk: localhost:2181(CONNECTED) 5] ls /tasks true

[]

[zk: localhost:2181(CONNECTED) 6]

注意到我们在ls命令中使用了可选参数true,像我们之前在master上使用stat一样。true参数在本例中设置了相应节点的孩子节点变化的监视器。