无论是单体应用还是分布式应用,数据一致性依旧是永恒的主题;单体应用的时代,数据一致性是通过数据库来保证的。最经典的是ACID协议;A-原子性;C-一致性;I-隔离性;D-持久性;
分布式应用的概念:部署在不同网络上的计算机,通过消息进行通讯与协调的系统;分布式系统的特征:分布性、对等性(允许冗余)、并发性、缺乏全局时钟、故障总是会发生;分布式系统3态:正确、超时、错误
分布式系统的基础理论:CAP(C-一致性;A-可用性;P-分区容错),BASE(BA-基本可用;S-软状态;E-最终一致性)
在分布式应用的时代,数据一致性是通过2PC, 3PC协议来实现
(2PC)
(3PC)
SAGA模式:分布式异步事务;SAGA由一系列子事务组成;每一个子事务都有补偿动作;
SAGA是一系列本地的交易,每笔事务都会更新单个服务中的数据;第一个事务由系统的外部请求启动,然后每一个后续的步骤由前一个事件完成而触发;SAGA的模式有2种, 第一种是事件/编排,第二种是命令/协调;
事件/编排
命令/协调
paxos 算法
主proposer生成提案号;
-生成提案号
-其中之一acceptor
(未批准)
承诺不在批准提案号小于M0的提案;
(已批准)
反馈编号最大的提案
Acceptor批准提案;
- prepare请求
- accept请求