线性一致性实现:Raft
2024-03-22 11:17:02 0 举报
AI智能生成
Raft是一种旨在实现线性一致性的共识算法,它被广泛应用于分布式系统中。线性一致性保证了在分布式系统中,即使发生网络分区或其他错误,数据更新仍会按照相同的顺序在所有节点上生效。Raft通过领导者(Leader)和追随者(Follower)的角色来实现这一目标。Leader负责处理客户端的请求并将它们复制到其他节点。一旦大多数节点接受了请求,Leader将向客户端确认请求已被成功处理。这种机制确保了数据的线性一致性,从而提高了系统的可靠性和容错性。
作者其他创作
大纲/内容
概念
定义
基本概念
任期逻辑时钟
3 种角色/状态
3 种 Message 类型
RequestVote RPC
AppendEntries (Heartbeat) RPC
InstallSnapshot RPC
特性
架构
模块化设计:Leader 选举、MemberShip 变更、日志复制、Snapshot 等模块
Strong Leader
性能
batch
pipeline
async
安全
选举捣乱预防
日志递归验证
网络分区容错
对称网络分区容错
非对称网络分区容错
架构
概要设计
详细设计
JRaft
JRaft Group
JRaft Multi Group
设计
基本
节点
Leader Election
随机超时驱动:Heartbeat/Election timeout
New Leader 选取原则 (最大提交原则)
选举流程
预投票:Current term + 1
投票:Current term++
Transfer Leader
Membership Change
disjoint majorities
两阶段提交:Joint Consensus
节点新加入时,无投票权
C-new 达成一致后,重新选举 Leader
日志
Log Replication
时机
提交原则
递归推导原则
quorate 投票原则
两阶段(CommitIndex)提交原则
日志复制
日志提交
流程
Log Recover
Snapshot and Compaction
容错
机器掉电
应用故障
强杀应用
慢节点(GC、OOM)
网络分区
对称网络分区容错
预投票:pre-vote
非对称网络分区容错
Leader 信仰 保护
quorate 故障降级
Metrics
高阶(优化)
Batch
批量提交 task
批量网络发送
本地 IO batch 写入
批量应用到状态机
Replication Pipeline
响应处理
重试:版本策略
顺序
Async
全链路 callback 编程模型
Append Log in Parallel
Fully Concurrent Replication
读优化(线性一致性读)
Raft Log Read
ReadIndex Read
Lease Read
WaitFree
0 条评论
下一页