ZookeeperMasterSelector

2017-06-17  本文已影响16人  时待吾

master选举

什么是master选举?为什么需要master选举?

为实现提供7*24的客户服务,我们通常采用集群模式进行服务发布,进行接受请求 处理请求的即为master,为保证高可用性,通常采用

master-slave模式,当master出现宕机等故障导致无法提供正常的客户服务时,选举出一台slave机作为master提供客户服务,这个选举的过程就是master选举。

架构图:

zookeeper集群:

zookeeper

/master -- master节点

/servers -- 服务器列表节点

/ work server1

/ work server2

/ work server3

工作服务器集群

work server1

work server2

work server3

主题流程:

1/ 每一台工作服务器 在启动时都会向 work server 节点注册一个临时节点 写入自己的基本信息 (服务注册用以服务发现) 此处暂时不开展

2/ 每一台工作服务器 在启动时 都会向master节点 注册监听(监听master节点的删除时间),如果发生删除事件,则进行 创建master 操作。  -- 临时节点

启动时 进行 创建master操作  -- 临时节点

3/ 如果 master创建 操作 执行成功 则返回当前的master节点 并标记自己为master

如果创建不成功 则 读取master节点并返回

4  如果master节点读取不成功 说明读取时候发生了宕机,则重新开始 创建master操作

会话失效则创建的临时节点自动删除,服务器宕机直接导致连接超时,会话失效,

监听master的删除事件可以监控当前的服务器在线情况。如果发生宕机,则要开启新一轮的选主操作。

LeaderSelectorZklient 调度器  启动和停止workerver

WorkServer 服务器类 主工作类

Runningata 服务器的描述信息

网络抖动:

网络延迟从20ms变为5ms,网络抖动为15毫秒,描述的是网络不稳定性。

影响:

每一次由网络抖动所引发的master节点的宕机,将会导致master节点数据以及相关管理数据的迁移重新分配,因此应付

网络抖动策略就是 当之前的master节点 是自己时 就立马 发起创建master节点操作,这样就会提前创建master节点,

降低 数据重新迁移带来的影响, 而哪些 之前的master节点不是自己的服务器,意味者如果当前master节点选择为自己的话,

需要进行数据迁移,网络本身就不稳定了,再添加数据迁移无疑将会加大网络瓶颈。因此,当之前的master节点不是自己时,

延迟5秒创建master,给上一个master充足的时间,让他继续当老大。

应用场景:

上一篇 下一篇

猜你喜欢

热点阅读