-
获取2017年InTouch管理权培训资料
资源介绍
3.3 获取管理权
现在我们有了会话,我们的Master程序需要获得管理权,虽然现在
我们只有一个主节点,但我们还是要小心仔细。我们需要运行多个进
程,以便在活动主节点发生故障后,可以有进程接替主节点。
为了确保同一时间只有一个主节点进程出于活动状态,我们使用
ZooKeeper来实现简单的群首选举算法(在2.4.1节中所描述的)。这个
算法中,所有潜在的主节点进程尝试创建/master节点,但只有一个成
功,这个成功的进程成为主节点。
常量ZooDefs.Ids.OPEN_ACL_UNSAFE为所有人提供了所有权限
(正如其名所显示的,这个ACL策略在不可信的环境下使用是非常不安
全的)。
ZooKeeper通过插件式的认证方法提供了每个节点的ACL策略功
能,因此,如果我们需要,就可以限制某个用户对某个znode节点的哪
些权限,但对于这个简单的例子,我们继续使用OPEN_ACL_UNSAFE
策略。当然,我们希望在主节点死掉后/master节点会消失。正如我们在
2.1.2节中所提到的持久性和临时性znode节点,我们可以使用ZooKeeper
的临时性znode节点来达到我们的目的。我们将定义一个EPHEMERAL
的znode节点,当创建它的会话关闭或无效时,ZooKeeper会自动检测