分布式理论 | 青训营笔记
这是我参与「第五届青训营」笔记创作活动的第8天。
分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
分布式计算技术:Hadoop、Spark、YARN
分布式存储技术:GFS、Ceph、Hadoop HDFS、Zookeeper
分布式数据库技术:Google Spanner、TiDB、HBase、MongoDB
系统模型
拜占庭将军问题证明了当有 个将军,其中 个叛徒,可以增加 轮协商,最终达成一致。
最终一致性:客户端 A 读到 x=0,当客户端 C 正在写入时,客户端 A 和 B 可能读到 0 或 1。但是当 C 写入完成后,A和B最终能读到一致的数据。
线性一致性:当客户端A读到更新的版本x=1后,及时将消息同步给其他客户端,这样其他客户端立即能获取到x=1。
理论基础
CAP理论:在网络发生分区的情况下,我们必须在可用性和一致性之间做出选择。近似解决方法:把故障节点的负载转移到备用节点负责。
ACID理论:原子性、一致性、隔离性、持久性。
BASE理论
- Basically Available(基本可用):假设系统出现了不可预知的故障,但还是能用,相比较正常的系统而言: 响应时间上的损失或功能上的损失
- Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
- Eventually consistent(最终一致性): 系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。
分布式事务
三阶段提交将两阶段提交中的 Prepare 阶段,拆成两部分: CanCommit 和 PreCommit,可以解决单点故障问题和阻塞问题。
共识协议
Quorum NWR模型:
- N: 在分布式存储系统中,有多少份备份数据
- W: 代表一次成功的更新操作要求至少有w份数据写入成功
- R: 代表一次成功的读数据操作要求至少有R份数据成功读取
为了保证强一致性,需要保证 W+R>N,Quorum NWR模型将CAP的选择交给用户,是一种简化版的一致性模型。
Raft协议 & Paxcs协议
分布式实践
MapReduce
分布式KV