620 | Raft共识算法:分布式系统的"民主投票"机制
想象你和朋友们玩狼人杀,要选出一名"警长"主持游戏。
问题:你们分散在不同的房间,只能通过手机投票。怎么确保:
- 所有人都选同一个警长?
- 即使有人掉线了,投票结果也有效?
Raft算法就是来解决这个问题的。
一、为什么需要Raft?
分布式系统中有个经典问题:如何让多个节点就某个值达成一致?
问题: - 3台服务器组成集群 - 客户端想写入数据"X=100" - 哪台服务器有"权利"接受这个写入? 解决:需要一个"领袖"来决定Raft(2014年提出)是一种用于管理日志复制的一致性算法,通过选举leader来简化共识问题。
二、Raft的三种角色
1. Leader(领袖)
“我是老大,你们都听我的”
- 负责处理所有客户端请求
- 定期向followers发送心跳
- 写入请求必须先经过leader