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