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

67 阅读2分钟

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

  1. 分布式系统

分布式系统面临的挑战

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

理想中的分布式系统

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

从HDFS开始

1660402804190.png

案例:KV

  1. 小结 背景:数据规模的不断增加,我们需要大规模分布式系统 维度:对于一个分布式系统,希望能有哪些特征 从KV入手,看看我们如何满足分布式系统的要求

  2. 一致性与共识算法

一致性 首先就是复制

  • 从复制开始--如何复制--如何复制操作--关于读操作

什么是一致性:对于KV,像操作一台机器一样,要读到最近写入的值

一致性是一种模型(语义)

  • 来约定一个分布式系统如何向外界(应用)提供服务
  • KV中常见的一致性模型
    • 最终一致性:读取可能暂时读不到,但是总会读到
    • 线性一致性:最严格,线性执行 一致性的分类经常与应用本身有关 Linearizability是最理想的

复制协议-当失效发生,如何保证是真的失效,失效后咋办

什么是共识算法:一个值一旦确定,所有人都认同

  • 错误总是发生
  • 错误类型很多
  • 容错

共识协议不等于一致性

  • 应用层面不同的一致性,都可以用共识协议来实现
    • 比如可以故意返回旧的值
  • 简单的复制协议也可以提供线性一致性

一般讨论共识协议时提到的一致性,都指线性一致性

  • 因为弱一致性往往可以使用相对简单的复制算法实现

3.共识算法案例 Raft