[Raft共识算法的分布式数据库]

项目描述:

基于Raft共识算法的分布式K-V数据库,具备线性一致性和分区容错性

在少于半数节点发生故障仍可正常对外提供服务

consistency and partition tolerance

一致性:数据的强一致性,系统在正常和异常情况下都能够提供一致的数据

分区容错性:处理网络分区的情况,确保系统在分区恢复后能够自动合并数据一致性

基本原理/流程

将节点分为三种角色:领导者、跟随者、候选者

        选举机制确保只有一个节点为领导者

        领导者负责处理客户端请求,并将更新复制到其他节点

基本原理包含下面几个关键

领导者选举Leader Election

在系统启动的时候或当前领导者失效的时候,节点发起选举过程

领导者节点失效(超过时间没有收到心跳信息),节点成为候选者发起选举

候选者向其他节点发起投票请求,得到半数以上即可成为领导者

start up; leader fails

日志复制Log Replication

领导者收到客户端的请求,将最新的日志条目复制到其他节点

当大多数跟随者节点复制日志条目以后,认为可提交,先更新领导者节点状态机

再跟随者节点逐一更新本地节点状态机

replicate the latest log

安全性Safety

确保只有单一领导者(选举机制)、多数节点数据一致性(日志复制)、只有领导者节点可处理客户端请求,从而保证安全性

选举机制具体过程

1. 候选人状态Candidate State

节点在检测到无领导下,增加自己任期term;

向其他节点发起投票请求

在规定时间内,获取半数以上投票,当选领导者;

2. 选举过程Election Process

发起选举以后,等待随机时间收集选举结果

如果没有收到大多数投票,增加任期,再次发起选举

3. 投票过程Voting Process

其他节点检查自己任期,如果选举者任期大于自己,则投票,并更新

如果其他节点已投过票,则拒绝投票

4. 领导者选举完成Leader Election Complete

收到大多数节点投票,则当选领导者

如果当选领导者发送心跳消息,进行日志复制

触发选举机制条件

系统启动的时候;领导者网络分区;节点故障

日志机制具体过程

1. Leader Append Entries:领导者追加日志条目,处理客户端请求,打包成日志,向follower同步

2. commit机制:大多数节点复制以后,该日志条目被视为已经提交

每个节点都维护一个日志(log)来记录状态机中的操作指令

1. Leader Append Entries

领导者接收客户端请求,追加自己日志

把操作指令打包成日志条目,向跟随者节点追求

package; log entries

2. Follower Log Replication

跟随者会根据日志条目的顺序,把日志条目添加

添加成功后,发回响应给领导者

3. Commit

领导者发现大多数节点已经成功复制,视为已提交

将日志条目应用到自己状态机;跟随者节点也同步应用到自己状态机

选举超时和其作用(防止脑裂)

1. 触发领导者选举

没有活跃领导者的时候触发选举;节点没有收到领导者心跳的时候,触发选举

2. 防止脑裂 split-brain

避免出现多个领导者;可能会有多个候选者同时发起选举,最后只有一个节点成为领导者

3. 确保领导者切换及时

领导者失效的时候,及时发起选举;减少服务器中断时间,提高可用性

脑裂:

脑裂(也称为分区容忍)指的是网络分区问题,即集群中的节点因为网络故障而互相失去联系,导致集群被分割成若干个互不通信的子集

split brain; network partition; non-communicating subsets.

出现脑裂,系统如何处理

1. 选举机制:无法与集群的其他部分通信,无法赢得大多数选票;

        一个节点想要成为领导者,必须得到半数以上的选票

2. 日志复制机制:写入操作需要被集群中大多数节点复制才能提交

        没有大多数节点的确认,当前的领导者将无法提交任何更改

3. 服务降级:(由于写入需要大多数节点)停止写请求,只提供读请求

4. 一致性原则:网络分区结束后,从领导者获取最新日志条目,会放弃分区时的非法更改

5. 新领导者:网络分区恢复,可能会发起新的领导者选举

log replication; service degradation; 

Paxos协议与Raft的区别和优势

1. Leader机制:Raft引入了Leader节点,而Paxos中没有Leader节点;Leader节点负责协调和领导整个一致性过程,而Follower节点只需按照Leader的指示执行操作

2. 日志复制:所有的日志条目都通过Leader节点进行复制和提交;Paxos中的日志复制是通过多个角色相互协作完成的

3. 角色切换:Raft中Leader节点失效后,集群可以快速选举新的Leader节点,而Paxos中角色的切换较为复杂,需要进行更多的投票和协调

4. 更好的可读性:Raft算法更加直观和易于理解,它的设计目标之一就是提供更好的可读性和可理解性,相比之下,Paxos算法相对更加抽象和复杂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值