这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
概述
- 什么是分布式?
- 跨多个节点的计算式程序的集合,是现代架构的基石
- 优势:去中心化、低成本、弹性、资源共享、可靠性高
- 挑战:故障、网络、环境、安全
- 常见的分布式系统
- 分布式存储:GFS、HDFS、Zookeeper
- 分布式数据库:Spanner、TiDB、HBase、MangoDB
- 分布式计算:Hadoop、YARN、Spark
系统模型
- 故障模型
- Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障
- Authentication detectable byzantine failure:节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,即时间过早或太晚
- 拜占庭将军问题
- 两将军问题
- 三将军问题
- 四将军问题
- 共识和一致性 不同客户端A和B看到客户端C写入,因为时机的不同,产生数据读取的偏差。 应该保证所有客户端看到相同的值,需要多点进行协商,达成共识。
- 时间和事件顺序
CAP理论
- CAP-C(一致性)A(可用性)P(分区容错性)
- CA系统: 场景:传统数据库 ACID:数据库事务
- AP系统: 保证高可用,放弃强一致性;故障发生时,为了保证可用性,允许不同进程读到不同的数据
- CP系统: 保证数据一致性,放弃可用性;故障发生时,为了避免读到不一致的数据,可能拒绝访问
分布式事务
- 二阶段提交 为了保证分布式架构下的所有节点在事务提交时保持一致性而设计的一种演算法。 正常流程: Prepare阶段->Commit阶段 异常阶段:
- 三阶段提交 正常阶段:CanCommit阶段->PreCommit阶段->Commit阶段
- MVCC 多版本并发控制
- 乐观锁与悲观锁
- 版本的选取
共识协议
-
Quorum NWR模型 N:在分布式存储系统中,有多少份备份数据 W:代表一次成功的更新操作要求至少有w份数据写入成功 R:代表一次成功的读书至少有R份数据成功读取
-
RAFT协议
-
Paxos协议
分布式实践
- MapReduce
- 分布式KV