Raft协议详解(二)服务器角色以及选主

      我们在Raft协议详解(一) 中讲到。Raft协议会将需要保证一致性的数据保存在多台服务器上,集群中存在该数据的多个副本。

      那么问题来了。客户端不会向集群中的每台服务器都发送一次数据,他只会向其中某一台发送数据,那么应该发送给谁?另外,集群中多台服务器上的数据,可能由于网络、丢包、宕机等等问题,导致同一数据的不同副本不一样,那么以谁的为准等等问题。其实在Raft中,只要了解raft中各种角色状态就可以回答上面的问题了。


Raft基本定义

      在介绍后面的内容之前,我们先进行一些Raft中的一些名词定义,以保证我们在说一下名词的时候知道什么意思。

服务器角色

      在Raft的设计中,只将集群中的服务器设计为三种状态,分别是跟随者follower、候选者candidate、领导leader。同一台服务器,可以在三种不同状态之间进行转换。接下来分别对以上三个角色的作用进行介绍。
这里写图片描述

上图中为三种状态之间的转换图。详细的我会在后面进行再介绍。现在也只是看个大概就行了。所有的服务器在刚开始的时候都是跟随者follower。一般情况下大部分服务器都处于fo

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Raft算法的选主过程是指如何在一个集群中选定一台服务器作为领导者负责协调整个集群的工作。Raft算法的选主过程分为以下几个步骤: 1. 初始状态下,所有服务器都处于跟随者状态。 2. 当客户端需要向集群中的任意一台服务器提交请求时,它会将请求发送给其中一台服务器,这台服务器会将请求转发给其他服务器。 3. 如果某台跟随者服务器在一段时间内没有接收到心跳信号(即来自领导者的RPC消息),就会认为当前集群中没有领导者,进入候选者状态。此时,该服务器会增加自己的任期号,并向其他服务器发送请求投票的RPC消息。 4. 收到请求投票的RPC消息的服务器会进行投票,如果该服务器还没有投票给其他服务器,则会投票给发起请求的服务器,并重置自己的选举计时器。 5. 如果某个候选者收到了超过一半的服务器的选票,则它会成为领导者,并向其他服务器发送心跳信号以保持自己的领导者地位。 6. 如果某个候选者在选举过程中收到了来自领导者的心跳信号,则会立即回到跟随者状态。 7. 如果某个服务器成为了领导者,但是在处理客户端请求时出现了错误(比如网络故障),则该服务器会立即回到跟随者状态,并等待新的选举开始。 以上就是Raft算法的选主过程。如果出现网络分区(即集群中的服务器无法互相通信),则每个分区内可能会选出不同的领导者。当网络分区被修复后,Raft算法会尽快将不同分区中的数据同步,以确保集群中的所有服务器最终达成一致。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值