使用Zookeeper实现选举策略

 

场景

  有一个向外提供的服务,服务必须7*24小时提供服务,不能有单点故障。所以采用集群的方式,采用master、slave的结构。一台主机多台备机。主机向外提供服务,备机负责监听主机的状态,一旦主机宕机,备机要迅速接代主机继续向外提供服务。从备机选择一台作为主机,就是master选举。

 

原理分析

 右边三台主机会尝试创建master节点,谁创建成功了,就是master,向外提供。其他两台就是slave。

所有slave必须关注master的删除事件(临时节点,如果服务器宕机了,Zookeeper会自动把master节点删除)。如果master宕机了,会进行新一轮的master选举。本次我们主要关注master选举,服务注册、发现先不讨论。

使用Zookeeper原理

» 领导者(leader),负责进行投票的发起和决议,更新系统状态
» 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
» Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
» 客户端(client),请求发起方

• Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协
  议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者
   崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后
 ,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。

• 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(
proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识
  leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的
   统治时期。低32位用于递增计数。
• 每个Server在工作过程中有三种状态:
LOOKING:当前Server不知道leader是谁,正在搜寻
LEADING:当前Server即为选举出来的leader
FOLLOWING:leader已经选举出来,当前Server与之同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置ZooKeeper实现进程的主备选举,你可以按照以下步骤进行操作: 1. 安装ZooKeeper:首先,确保你已经成功安装了ZooKeeper,并在多个服务器上设置了相同的ZooKeeper配置。 2. 配置ZooKeeper:在每个服务器的ZooKeeper配置文件(通常是`zoo.cfg`)中,确保你设置了相同的`dataDir`(数据目录)和`clientPort`(客户端端口)。 3. 配置服务器标识:在每个服务器的配置文件中,使用独特的`server.id`标识符指定每个服务器的编号。例如,对于三个服务器,你可以分别将它们配置为`server.1`、`server.2`和`server.3`。 4. 配置选举算法:在每个服务器的配置文件中,将选举算法设置为`3`。这将使用ZooKeeper的默认选举算法,即基于Paxos的选举机制。 5. 配置集群连接:在每个服务器的配置文件中,使用以下格式配置集群连接:`server.id=hostname:port:port`。其中,`hostname`是服务器的主机名或IP地址,第一个`port`是服务器之间通信的端口,第二个`port`是选举通信的端口。 6. 启动ZooKeeper集群:在每个服务器上启动ZooKeeper实例,并确保它们能够相互连接和通信。 7. 监控选举状态:你可以使用ZooKeeper提供的命令行工具或API来监控选举状态。例如,你可以使用`stat`命令查看当前ZooKeeper集群的领导者和参与者信息。 通过以上步骤,你可以配置ZooKeeper实现进程的主备选举。请记住,选举是自动进行的,当主节点故障或失去连接时,备节点将会自动选举出新的主节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值