分布式系统
分布式系统面临的挑战
- 数据规模越来越大
- 服务的可用性要求越来越高
- 快速迭代的业务要求系统足够易用
理想中的分布式系统
- 高性能:可拓展、低时延、高吞吐
- 正确:一致性、易于理解
- 可靠:容错、高可用
一致性协议案例: Raft
-
Raft 是在 paxos 的基础上的基础上,着重于易于理解
- 协议接口直接暴露 Log 给用户
- 强 Leader 简化 Paxos 中的二阶段
- 使用随机事件简化选主逻辑
-
Raft 的基本工作原理
- 各个节点的角色
- Log 同步
- 失效节点如何恢复 Log
- 如何选举新 Leader
- Term 以及安全性的保证
-
Raft 在工程中的优化
- Prevote 的应用,防止离群 Leader 重加入时引发的切主
一致性协议的限制
-
对于分布式系统
- 拓展性:写入性能不能水平拓展
- 性能:强 Leader 的一致性协议跨地域部署时带来的额外网络开销
-
对于 KV 系统,解决方案一般是通过分片的方式水平拆组
- 引入了事务的概念
- 常见二阶段提交
发展方向
-
一致性协议作为系统
- 分布式日志:暴露日志的接口提供给上层应用,提供灵活高可用的一致性服务
-
高性能一致性协议
- 低延时:结合 RDMA 网络以及可编程交换机,实现 us 级别操作。
- LeaderLess:节点就地提交,降低 WAN 网络下 RTT 开销
-
Paxos 与 Raft 的相互关联
- 移植 Paxos 的研究到成熟