Raft 协议简介

1、学习资源链接
动画演示原版论文论文翻译

2、基本概念
Distributed Consensus:多个节点就某个事物达成一致(比如某个变量的值)。
Raft:一种可理解分布式一致性算法,解决如何达成分布式一致的问题,并且要求算法易于理解(paxos难于理解实现)。

3、Raft 如何实现 distributed consensus
Raft 主要通过 Leader Election 和 Log Replication 保证分布式一致

(1)Leader Election:同一个term中,获得 > 1/2 节点投票的节点成为leader,所有对系统的改变通过 leader 进行。
关键术语:
a)term(选举周期):单调递增的num,raft 协议各环节始终以term高的节点发出的信息为准。每个节点收到信息后,对比自己的term和信息源的term,若对方term高于自己,则接受信息;否则拒绝信息,并告知对方自己的term。
b)节点状态:follower,candidate,leader
c )election timeout:节点超过election timeout 时间没收到 leader心跳,则变为candidate,尝试选举自己为leader
d)heartbeat timeout:leader每隔 heartbeat timeout ,向其他节点发送 append entries 心跳。

(2)Log Replication:client发送的请求被leader记录为log,log首先是 uncommitted。leader向其他节点同步log,> 1/2 节点同步log后,leader将log变为committed状态,并apply log 改变系统。然后通知follower commit log。

### Raft 分布式一致性协议的工作原理 Raft 是一种用于管理分布式系统的复制日志的一致性算法,其设计目标是提供更高的可理解性和实用性。以下是关于 Raft 协议如何工作的详细介绍: #### 1. 节点角色定义 在 Raft 中,节点分为三种主要的角色:Leader、Follower 和 Candidate。 - **Leader**: 负责处理所有的客户端请求并将其记录到日志中。其他节点会跟随 Leader 的指令操作[^1]。 - **Follower**: 不主动发起任何动作,仅响应来自 Leader 或 Candidate 的 RPC 请求。 - **Candidate**: 当 Follower 发现无法接收到 Leader 的心跳信号时,它可能会转变为 Candidate 并尝试选举新的 Leader[^3]。 #### 2. 领导者选举机制 领导者选举是 Raft 协议的核心部分之一。当集群启动或当前 Leader 失效时,系统进入选举阶段: - 如果某个 Follower 在超时时间内未收到来自 Leader 的心跳消息,则该节点转换为 Candidate,并向其他节点发送投票请求(RequestVote RPC)。如果获得超过半数的票数,则成为新 Leader[^2]。 - 若多个 Candidates 同时竞选导致选票分裂而无人胜出,则触发新一轮随机延迟后的重新选举过程直至选出唯一 Leader[^4]。 #### 3. 日志复制流程 一旦选举完成,Leader 开始接收客户命令并将这些命令作为条目追加到本地日志中;随后通过 AppendEntries RPC 将最新日志同步给 Followers[^5]: ```python def append_entries(follower_id, prev_log_index, entries): follower = get_follower_by_id(follower_id) if not follower.log_matches(prev_log_index): return False follower.append_logs(entries) return True ``` #### 4. 安全性保障措施 为了确保数据一致性和可靠性,Raft 提出了几个重要的安全性约束条件: - **单一领导原则**:在同一时刻只能存在一个有效的 Leader 来协调整个群集的操作。 - **多数派规则**:每项决策都需要得到大多数副本的认可才能被提交生效。 - **日志匹配属性**:不同服务器上的相同索引位置的日志必须完全相等。 #### 性能表现分析 就性能而言,在稳定状态下,每次提交一条日志只需要一次往返通信至集群一半以上的成员即可完成确认。因此,Raft 的性能受到磁盘 I/O 和网络延时的影响较大。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值