这是kazoo readthedocs上提到的代码
election=zk.Election("/electionpath", "my-identifier")
要传递哪些输入参数以使特定节点成为领导者?(即 /electionpath 和 my-identifier 在这里指的是什么?)
这是kazoo readthedocs上提到的代码
election=zk.Election("/electionpath", "my-identifier")
要传递哪些输入参数以使特定节点成为领导者?(即 /electionpath 和 my-identifier 在这里指的是什么?)
简而言之:“/electionpath”是您感兴趣的路径,您将在其中创建节点、添加数据和使用 dataWatchers 监视节点。“my-identifier”是不可重入锁的标识符,用于验证谁是竞争者中的领导者,并只允许对领导者进行写入。
详细:为了简化它首先解释为什么动物园管理员应该有领导者。负责所有写入操作和连接相关处理的领导者。考虑以下示例来理解领导者选举的概念。
在[1]中:zk_client.create('test_zk/path_of_interest/test_ephemeral', ephemeral=True)
在[9]中:zk_client.get("test_zk/path_of_interest/test_ephemeral")
Out [9]: ('',ZnodeStat(czxid=678608988239, mzxid=687195015354, ctime=1476960597584, mtime=1477310417594, version=1145, cversion=0, aversion=0, ephemeralOwner=0, dataLength=185, numChildren=0 , pzxid=678608988239))
创建 id(czxid) 最小的节点将被选举为领导者后领导者选举过程。
领导者选举在内部为选举节点(最小的CZXID)提供了非重新输入锁定,并将某些标识符设置为该锁定的标识符,该锁将用于验证谁是竞争者(您的“ My-My-Identifier”)的领导者。
现在让我们看看选举领导者的实际代码。
In [7]: election = zk_client.Election('/test_zk/path_of_interest', 'test-election')
In [8]: def leader_func():
...: print 'Election Completed...!'
...:
In [9]: election.run(leader_func)
Election Completed...!
一个 callable 被传递给 run 方法来做一些选举后的事情。
我希望这有帮助。