目录
一、ACID
传统的事务属性
(1)原子性
(2)一致性
(3)隔离性
(4)持久性
二、CAP
一致性:数据在多个副本直接保持一致性,一个副本的更新成功,其他副本也必须更新成功,此特性要求客户端可获取到最新的数据,
可用性:系统在合理时间内返回
分区容忍性:在分布式网络遇到分区故障时,依然可以提供满足一致性和可用性的服务
三者不可兼得。并不是说整个系统都只能选择一种CP or AP,根据不同的业务特定选择
三、BASE
基本可用、软状态、最终一致性
采用合适的方式最终一致
四、分布式事务协议
1、2PC
优点:实现简单、原理简单
缺点:数据不一致,脑裂、单点问题、同步阻塞
2、3PC
优点:减小了参与者阻塞的范围;出现单点问题后,仍然可以提交
缺点:数据不一致
3、TCC
try-confirm-cancel
- 试着预留资源
- 全部成功则confirm
- 预留失败,则cancel
4、本地消息表
- 业务A写业务的同时维护一张消息表(这个操作是事务的);
- 操作成功之后发送到消息中间件,
- 被动方B消费消息,之后将结果通过消息中间件,业务A消费消息。
5、MQ事务
利用消息中间件的事务性,业务不再维护消息表
6、saga
Saga 事务基本协议如下:
- 每个 Saga 事务由一系列幂等的有序子事务(sub-transaction) Ti 组成。
- 每个 Ti 都有对应的幂等补偿动作 Ci,补偿动作用于撤销 Ti 造成的结果。
https://maimai.cn/article/detail?fid=1122653559&efid=jewbG8cL4Wikr2CJ3r_fAw