以下是关于分布式系统中一致性算法(Raft/Paxos)和数据分片与副本策略的详细介绍:
一、一致性算法:Raft vs Paxos
1. Paxos
- 核心目标:在不可靠的网络环境中达成一致性,保证分布式系统的强一致性。
- 角色:
- Proposer:提出提案(值)。
- Acceptor:接受或拒绝提案。
- Learner:学习最终确定的值。
- 流程:
- Prepare阶段:Proposer发送提案编号给Acceptors,获取承诺(承诺不再接受更小的编号)。
- Accept阶段:Proposer发送提案值,若被多数派Acceptors接受,则值被选定。
- 缺点:
- 难以理解和实现。
- 活锁问题(多个Proposer竞争导致无法达成一致)。
2. Raft
- 设计目标:简化Paxos的逻辑,提高可理解性。
- 角色:
- Leader:唯一处理客户端请求的节点。
- Follower:被动接收Leader的指令。
- Candidate:竞选Leader的临时状态。
- 流程:
- Leader选举:
- Follower超时未收到心跳后成为Candidate,发起投票。
- 获得多数票的Candidate成为Leader。
- 日志复制:
- Leader将操作日志复制到Followers,多数派确认后提交。
- Leader选举:
- 优点:
- 逻辑清晰,易于实现(如Etcd、Consul等使用Raft)。
- 通过任期(Term)解决冲突。
3.对比
特性 | Paxos | Raft |
---|---|---|
复杂度 | 高 | 低 |
角色划分 | 动态(Proposer/Acceptor) | 固定(Leader/Follower/Candidate) |
日志同步 | 需额外协议 | 内置日志复制 |
工程落地 | 较少直接使用 | 广泛应用 |
###二、数据分片与副本策略
####1.数据分片(Sharding)
-目的:水平扩展数据存储能力,分散负载.
-常见策略:
1.哈希分片:对key哈希后模以分片数(如Redis Cluster).
优点:均匀分布;缺点:扩容需迁移大量数据.
2.范围分片:按key的范围划分(如HBase Region).
优点:支持范围查询;缺点:可能热点.
3.一致性哈希:虚拟节点减少扩容影响(如DynamoDB).
####2.数据副本(Replication)
-同步复制(强一致):主节点等待所有副本确认后才返回成功(如ZooKeeper).
优点:数据强一致;缺点:延迟高,可用性降低.
-异步复制(最终一致):主节点无需等待副本确认(如MySQL主从).
优点:高性能;缺点:可能丢数据.
####3.组合应用案例 -MongoDB:结合分片+副本集,每个分片是一个Raft副本组. -TiDB:Range分片+Multi-Raft,每个Region是一个Raft组.
###三、如何选择? 1.CP系统(如Etcd):优先Raft/Paxos保证强一致. 2.AP系统(如Cassandra):最终一致+分区容忍. 3.混合型(如TiDB):通过分层设计兼顾一致性与扩展性.
如果需要具体某个组件的实现细节可以进一步探讨!
内容由零声教学AI助手提供,问题来源于学员提问