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

93 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第16天。

分布式一致性协议

什么是一致性协议

一致性协议描述了特定一致性模型的实际实现。

一致性模型就像是接口,而一致性协议就像是接口的具体实现。一致性模型提供了分布式系统中数据复制时保持一致性的约束,为了实现一致性模型的约束,需要通过一致性协议来保证。

一致性协议根据是否允许数据分歧可以分为两种:

  • 单主协议:不允许数据分歧 :整个分布式系统就像一个单体系统,所有写操作都由主节点处理并且同步给其他副本。
  • 多主协议:允许数据分歧,去中心化 :所有写操作可以由不同节点发起,并且同步给其他副本。 可以看出它们的核心区别在于是否允许多个节点发起写操作,单主协议只允许由主节点发起写操作,因此它可以保证操作有序性,一致性更强。 而多主协议允许多个节点发起写操作,因此它不能保证操作的有序性,所以一致性较弱。

以 Raft 为例子了解一致性协议是如何工作的

  • Raft 是在 paxos 的基础上的基础上,着重于易于理解

    • 协议接口直接暴露 Log 给用户
    • 强 Leader 简化 Paxos 中的二阶段
    • 使用随机事件简化选主逻辑
  • Raft 的基本工作原理

    • 各个节点的角色
    • Log 同步
    • 失效节点如何恢复 Log
    • 如何选举新 Leader
    • Term 以及安全性的保证
  • Raft 在工程中的优化

    • Prevote 的应用,防止离群 Leader 重加入时引发的切主

一致性协议的限制

  • 对于分布式系统

    • 拓展性:写入性能不能水平拓展
    • 性能:强 Leader 的一致性协议跨地域部署时带来的额外网络开销
  • 对于 KV 系统,解决方案一般是通过分片的方式水平拆组

    • 引入了事务的概念
    • 常见二阶段提交

一致性协议的发展方向

  1. 一致性协议作为系统

    分布式日志:暴露日志的接口提供给上层应用,提供灵活高可用的一致性服务

  2. 高性能一致性协议

    低延时:结合 RDMA 网络以及可编程交换机,实现 us 级别操作。

    LeaderLess:节点就地提交,降低 WAN 网络下 RTT 开销

  3. Paxos 与 Raft 的相互关联:移植 Paxos 的研究到成熟