Raft算法

文章目录Raft算法分布式一致性一些概念Leader选举日志复制两个超时重新选举网络分区Raft算法分布式一致性想象一下,我们有一个单节点系统,且作为数据库服务器,然后存储了一个值(假设为X)。然后,有一个客户端往服务器发送了一个值(假设为8)。只要服务器接受到这个值即可,这个值在单节点上的一致性非常容易保证:但是,如果数据库服务器有多个节点呢?比如,如下图所示,有三个节点:a,b,c。这时候客户端对这个由3个节点组成的数据库集群进行操作时的值一致性如何保证,这就是分布式一致性问题。而Raft就是
摘要由CSDN通过智能技术生成

Raft算法

分布式一致性

想象一下,我们有一个单节点系统,且作为数据库服务器,然后存储了一个值(假设为X)。然后,有一个客户端往服务器发送了一个值(假设为8)。只要服务器接受到这个值即可,这个值在单节点上的一致性非常容易保证:

单机环境

但是,如果数据库服务器有多个节点呢?比如,如下图所示,有三个节点:a,b,c。这时候客户端对这个由3个节点组成的数据库集群进行操作时的值一致性如何保证,这就是分布式一致性问题。而Raft就是一种实现了分布式一致性的协议(还有其他一些一致性算法,例如:ZAB、PAXOS等):

分布式环境分布式环境

一些概念

讲解Raft算法之前,先普及一些Raft协议涉及到的概念:
term:任期,比如新的选举任期,即整个集群初始化时,或者新的Leader选举就会开始一个新的选举任期。
大多数:假设一个集群由N个节点组成,那么大多数就是至少N/2+1。例如:3个节点的集群,大多数就是至少2;5个节点的集群,大多数就是至少3。
状态:每个节点有三种状态,且某一时刻只能是三种状态中的一种:Follower(图左),Candidate(图中),Leader(图右)。假设三种状态不同图案如下所示:

节点状态图节点状态图

初始化状态时,三个节点都是Follower状态,并且term为0,如下图所示:

初始化初始化

Leader选举

Lead

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值