获课地址:666it.top/13977/
一致性协议与数据同步机制深度拆解
注册中心的高可用性依赖于强一致性协议,本文以Raft和ZAB协议为例,解析其选举机制、日志复制与故障恢复逻辑。
2.1 Raft协议的核心流程
Raft通过Leader选举与日志复制实现强一致性:
Leader选举:节点随机生成选举超时时间,超时后发起投票请求。获得多数派(超过半数)同意的节点成为Leader,负责处理客户端请求
。
日志复制:Leader将操作记录追加至本地日志,并并行发送至Follower节点。Follower确认接收后返回ACK,Leader提交日志并通知客户端。
故障恢复:Leader宕机后,Follower节点进入Candidate状态,发起新一轮选举。新Leader通过日志比对修复数据不一致问题。
2.2 ZAB协议的事务广播机制
ZooKeeper采用ZAB协议保障崩溃恢复与消息广播的原子性:
崩溃恢复阶段:选举出唯一Leader后,Leader将未完成的提案(Proposal)同步至Follower,确保事务完整性。
消息广播阶段:Leader将新提案广播至所有Follower,收到多数ACK后提交事务。ZAB通过ZXID(事务ID)保证提案顺序性
。
2.3 一致性模型的权衡
注册中心需在CP与AP模型间取舍:
CP模型(如ZooKeeper):优先保证一致性与分区容错性,适用于金融级场景,但牺牲了部分可用性(如Leader选举期间服务短暂不可用)。
AP模型(如Eureka):优先保证可用性与分区容错性,允许最终一致性,适合高并发、低延迟场景
。
有疑问加站长微信联系(非本文作者))
