这是我参与「第五届青训营 」伴学笔记活动九天。
分布式理论
概述
概念
分布式系统是指跨多个节点的计算机程序的集合。
分布式系统的五大优势:去中心化、成本低、弹性高、资源共性、高可靠。
分布式挑战:故障、网络、环境、安全。
发展
适应大规模计算存储的需求
常见的分布式系统
存储:GFS、Ceph、HDFS、Zookeeper 数据库:Spanner、TiDB、HBase、MangoDB 计算:Hadoop、Spark、YARN
系统模型
故障模型
拜占庭问题:节点可以任意篡改发送给其他节点的数据,最难处理。
ADB:节点可以篡改数据,但不能伪造其他节点数据。
Permission failure:节点未在特定时间段内收到数据,收到时间太早或太晚。
Omission failure:节点收到数据无限晚,即收不到数据。
Crash failure:节点停止响应,持续性故障。
fail-stop failure:错误可检测。
磁盘、主板、交换机、网络分区、cpu、内存
线缆、电源等
拜占庭将军问题
两支军队商议进攻时间问题,理论上无解。TCP是一个工程解。
扩展的三将军、四将军问题。
共识和一致性
由于写入实际偏差产生的数据读取偏差,为保证所有客户看到一样的值,需要多个节点进行协商,达成共识来保证一致性。
一致性和可用性是一对矛盾。
时间和事件顺序
Lamport逻辑时钟,对整个系统中的事件进行全序排序。
理论基础
CAP理论
一致性Consistency正确、可用性Availability可用、分区容错性Partition tolerance同步产生问题不挂掉 三者无法同时达到。
CA\CP\AP
ACID理论
- ACID理论是针对CA系统而言的,通常在数据库中具有广泛意义
- 事务是一个执行的逻辑单元,一个事务的所有操作要么全执行、要么全不执行
- 数据库事务拥有四个特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)
BASE理论
BASE理论是针对AP系统而言的,其来源于对大型互联网分布式实践的总结
- Basically Available(基本可用):假设系统,出现了不可预知的故障,但还是能用
- Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性
- Eventually consistent(最终一致性):数据最终一定能够达到一致的状态
分布式事务
二阶段提交
为了分布式系统架构下的所有节点在事务提交的保持一致性而设计的一种演算法。
-
三个假设:
- 协调者和参与者进行通信
- 预写式日志被保持在可靠的存储设备上
- 所有节点不会永久性损坏,即使损坏后仍然可以恢复
三阶段提交
MVCC
共识协议
- Quorum NWR模型
- RAFT协议
- Paxos协议