这是我参与「第四届青训营 」笔记创作活动的第15天,在第十五节课中主要了解到了分布式一致性协议有关的内容。
01 分布式系统
分布式系统面临的挑战
- 数据规模越来越大
- 服务的可用性要求越来越高
- 快速迭代的业务要求系统足够易用
理想中的分布式系统
- 高性能:可拓展、低时延、高吞吐
- 正确:一致性、易于理解
- 可靠:容错、高可用
从HDFS开始
02 一致性与共识算法
从复制开始
如果两个副本都能接受请求
如何复制
- 主副本定期拷贝全量数据到从副本
- 主副本拷贝操作到从副本
如何复制操作
- 主副本把所有的操作打包成Log
- 应用包装成状态机,只接受Log作为Input
- 主副本确认Log已经成功写入到副本机器上,当状态机apply后,返回客户端
关于读操作
什么是一致性
- 是一种模型
- 来约定一个分布式系统如何向外界提供服务
复制协议
共识算法
- 一个值一旦确定,所有人都认同
03 共识算法案例:Raft
Paxos
- 基本上就是一致性协议的同义词
- 该算法的正确性是经过证明的
Raft
- 易于理解作为算法的设计目标
- 使用了RSM、LOG、RPC的概念
- 直接使用RPC对算法进行了描述
- Strong Leader-based
- 使用了随机的方法减少约束
复制状态机
- RSM
- Raft中所有的consensus都是直接使用Log作为载体
- Commited Index
Raft角色
04 实现细节以及未来
案例-KV
- 多个副本只有单个副本可以提供服务
- 服务无法水平拓展
- 增加更多Raft组
- 如果操作跨Raft组
小结
- 了解到了Raft如何应用在KV中
- 也了解到了单一的公式算法有其局限性
- 在工程实践中,需要对其进行一定的优化
- 最后,了解到了一致性协议当前的研究热点