这是我参与「第五届青训营」笔记创作活动的第8天
一. 重点内容
-
分布式事务
-
共识协议
-
分布式实践
二. 知识点介绍
1. 分布式事务
- 二阶段提交(Two-phase Commit):为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法(Coordinator + Participant)
-
- prepare阶段和commit阶段
-
- 性能问题:需要多次网络通信,资源需要等待并锁定
-
- 新协调者:如何确定状态选出新协调者
-
- Commit阶段网络分区带来的数据不一致:非所有节点都收到Commit请求
- 三阶段提交:可解决单点故障问题和阻塞问题
-
- prepare阶段,CanCommit阶段和Precommit阶段
- MVCC:并发控制的方法,维持一个数据的多个版本读写操作没有冲突。不会阻塞写,也不阻塞读
-
- 悲观锁:操作数据时把数据锁住,直到操作完成后才会释放锁;上锁期间不能修改数据
-
- 乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时放弃操作
-
- 另一种实现时间戳的方式:时间戳预言机(TSO),采用中心化的授时方式,所有协调者向中心化节点获取时钟,无需硬件支持
2. 共识协议
- Quorum NWR模型:
-
- N:在分布式存储系统中,有多少份备份数据
-
- W:代表一次成功的更新操作要求至少有w份数据写入成功
-
- R: 代表一次成功的读数据操作要求至少有R份数据成功读取
-
- 为了保证强一致性,需要保证W+R > N
-
- 问题:如果允许数据被覆盖,则并发更新容易引起一致性问题
- RAFT协议:一种分布式一致性算法(共识算法),即使出现部分节!点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性,是使用较为广泛的分布式协议
-
- 三种角色:Leader;Follower;Candidate
-
- 四种定义:Log;Term;Committed;Applied
-
- 状态转移:
- 状态转移:
- Paxos协议:
-
- Paxos算法与RAFT算法区别:
-
-
- Multi-Paxos 可以并发修改日志,而Raft写日志操作必须是连续的
-
-
-
- Multi-Paxos 可以随机选主,不必最新最全的节点当选Leader
-
-
- 优劣势:
-
-
- 优势:写入并发性能高,所有节点都能写
-
-
-
- 劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录
-