这是我参与「第四届青训营 」笔记创作活动的第7天
- 分布式系统
分布式系统面临的挑战
- 数据规模越来越大
- 服务的可用性要求越来越高
- 快速迭代的业务要求系统足够易用
理想中的分布式系统
- 高性能:可拓展、低时延、高吞吐
- 正确:一致性、易于理解
- 可靠:容错、高可用
从HDFS开始
案例:KV
-
小结 背景:数据规模的不断增加,我们需要大规模分布式系统 维度:对于一个分布式系统,希望能有哪些特征 从KV入手,看看我们如何满足分布式系统的要求
-
一致性与共识算法
一致性 首先就是复制
- 从复制开始--如何复制--如何复制操作--关于读操作
什么是一致性:对于KV,像操作一台机器一样,要读到最近写入的值
一致性是一种模型(语义)
- 来约定一个分布式系统如何向外界(应用)提供服务
- KV中常见的一致性模型
- 最终一致性:读取可能暂时读不到,但是总会读到
- 线性一致性:最严格,线性执行 一致性的分类经常与应用本身有关 Linearizability是最理想的
复制协议-当失效发生,如何保证是真的失效,失效后咋办
什么是共识算法:一个值一旦确定,所有人都认同
- 错误总是发生
- 错误类型很多
- 容错
共识协议不等于一致性
- 应用层面不同的一致性,都可以用共识协议来实现
- 比如可以故意返回旧的值
- 简单的复制协议也可以提供线性一致性
一般讨论共识协议时提到的一致性,都指线性一致性
- 因为弱一致性往往可以使用相对简单的复制算法实现
3.共识算法案例 Raft