这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天。今天继续学习了分布式理论的基本概念和相关知识。
分布式事务
二阶段提交
基于分布式系统架构下所有节点进行事务提交时,保持一致性而设计的一种演算法。
三个假设:
1、引入协调者(Coordinator)和参与者(Participants),互相进行网络通信。
2、所有节点都采用预写式日志,且日志被写入后被保持在可靠的存储设备上。
3、所有节点不会永久性损坏,即使损坏后仍然可以恢复。
三阶段提交
二阶段提交存在的问题:
1、性能问题:
两阶段提交需要多次节点间的网络通信,耗时过大,资源需要进行锁定,徒增资源等待时间。
2、协调者单点故障问题:
如果事务协调者节点宕机,需要另起新的协调者,否则参与者处于中间态无法完成事务。
3、网络分区带来数据不一致:
一部分参与者收到了Commit消息,另一部分参与者没收到Commit消息,会导致节点之间的数据不一致。
MVCC
MVCC是一种并发控制的方法,维持一个数据的多个版本使的读写操作没有冲突,所以既不会阻塞写,也不会阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联,可以提高并发性能,解决脏读问题。
另一种时间戳戳的实现:时间戳语言机(TSO),采用中心化的授时方式,所有协调者向中心化节点获取时钟。
优点:算法简单,实现方便。
缺点:每个节点都要与中心节点交互,产生网络通信成本,需要考虑低延迟,高性能以及更好的容错性。