浅谈分布式一致性协议|青训营笔记

101 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第15天,在第十五节课中主要了解到了分布式一致性协议有关的内容。

01 分布式系统

分布式系统面临的挑战

  • 数据规模越来越大
  • 服务的可用性要求越来越高
  • 快速迭代的业务要求系统足够易用

理想中的分布式系统

  • 高性能:可拓展、低时延、高吞吐
  • 正确:一致性、易于理解
  • 可靠:容错、高可用

从HDFS开始

image.png

02 一致性与共识算法

从复制开始

如果两个副本都能接受请求

image.png

如何复制

  • 主副本定期拷贝全量数据到从副本
  • 主副本拷贝操作到从副本

如何复制操作

  • 主副本把所有的操作打包成Log
  • 应用包装成状态机,只接受Log作为Input
  • 主副本确认Log已经成功写入到副本机器上,当状态机apply后,返回客户端

关于读操作

什么是一致性

  • 是一种模型
  • 来约定一个分布式系统如何向外界提供服务

复制协议

共识算法

  • 一个值一旦确定,所有人都认同

03 共识算法案例:Raft

Paxos

  • 基本上就是一致性协议的同义词
  • 该算法的正确性是经过证明的

Raft

  • 易于理解作为算法的设计目标
  • 使用了RSM、LOG、RPC的概念
  • 直接使用RPC对算法进行了描述
  • Strong Leader-based
  • 使用了随机的方法减少约束

复制状态机

  • RSM
  • Raft中所有的consensus都是直接使用Log作为载体
  • Commited Index

Raft角色

image.png

04 实现细节以及未来

案例-KV

image.png

  • 多个副本只有单个副本可以提供服务
  • 服务无法水平拓展
  • 增加更多Raft组
  • 如果操作跨Raft组

小结

  • 了解到了Raft如何应用在KV中
  • 也了解到了单一的公式算法有其局限性
  • 在工程实践中,需要对其进行一定的优化
  • 最后,了解到了一致性协议当前的研究热点