4.raft协议及简化版raft协议

1.Raft协议介绍

这篇文章:百度安全验证 讲的比较详细了,我再以我的方式汇总一下:

  1. Raft协议是一种分布式一致性协议,比Pasox简单,旨在解决数据的一致性和高可用性
  2. Raft在选举中的方式:
  • 所有节点相互建立连接后,开始投票,每个节点可以投给自己,也可以投给别人
  • 当节点完成投票后,会将投票结果发给其它节点,如果当前节点没有进行投票,则默认认可收到的第一个投票,
  • 所有节点投完票后进行归票,获得绝大多数票数者称为leader,其余为follower,若没有节点获得绝大多数投票,则所有节点随机休眠一段时间后再次发起投票
  • 这时将大概率完成投票,确定leader和follower
  • 当follower下线时,所有节点都会知道
  • 当controller下显示,剩余节点重新发起投票

上述投票逻辑较清晰,但实现起来还是有些复杂,我下面使用一种更加简化的方式实现投票

2. 简化版Raft协议介绍

前提:每个节点都有一个节点id,且节点id不重复;每次投票默认节点小的为controller

投票逻辑:

  • 每个节点启动,从配置文件中查询自己是否是节点最小的,是则判断是否就自己一个节点,如果是则自己就是controller,如果不是则等待其它节点向其发送投它为controller的投票,如果自己不是最小的,则向最小的发起投票请求,如果最小的没有启动,则睡眠3s后继续发送,直到和最小节点建立连接
  • 最小节点收到所有节点的投票后,确认自己是controller,并向所有节点发送投票结果请求,告知它们我是controller,你们都是follower
  • 当follower下线时,controller会感知到并将下线请求信息告知其它节点
  • 当controller下线时,所有节点都会感知到,所有节点会重新发起投票请求选举controller

3.对比

系统可以很快的完成投票

节点与节点间的连接少了,只需要和controller有连接即可

实现简单,易理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lswsmj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值