Nacos中Raft算法的实现

选举算法

Nacos集群采用raft算法来实现,它是相对zookeeper的选举算法较为简单的一种。
选举算法的核心在RaftCore 中,包括数据的处理和数据同步
raft算法演示地址:http://thesecretlivesofdata.com/raft/
在Raft中,节点有三种角色:

  • Leader:负责接收客户端的请求
  • Candidate:用于选举Leader的一种角色
  • Follower:负责响应来自Leader或者Candidate的请求
    选举分为两个阶段:
  • 服务启动的时候
  • leader挂了的时候
    所有节点启动的时候,都是follower状态。 如果在一段时间内如果没有收到leader的心跳(可能是没有leader,也可能是leader挂了),那么follower会变成Candidate。然后发起选举,选举之前,会增加term,这个term和zookeeper中的epoch的道理是一样的。
  • follower会投自己一票,并且给其他节点发送票据vote,等到其他节点回复
  • 在这个过程中,可能出现几种情况
    • 收到过半的票数通过,则成为leader
    • 被告知其他节点已经成为leader,则自己切换为follower
    • 一段时间内没有收到过半的投票,则重新发起选举
  • 约束条件在任一term中,单个节点最多只能投一票
    选举的几种情况
  • 第一种情况,赢得选举之后,leader会给所有节点发送消息,避免其他节点触发新的选举
  • 第二种情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值