分布式事务

参考链接:http://icyfenix.cn/architect-perspective/general-architecture/transaction/distributed.html

CAP

  • 分布式环境下,不可避免网络分区,所以分区容忍性是不得不选择的选项;
  • 追求强一致性时,不得不妥协可用性;
  • 追求高可用性时,不得不采取弱一致性(最终一致性)。

可靠事件队列

可靠事件队列来源于 eBay 的系统架构师 Dan Pritchett 在 2008 年在 ACM 发表的论文《Base: An Acid Alternative》,BASE分别是基本可用性(Basically Available)、柔性事务(Soft State)和最终一致性(Eventually Consistent)的缩写

在这里插入图片描述

  1. 尽最大努力交付:借助可靠事件队列并采用尽最大努力交付,BASE 的逻辑比较简单(无需提前冻结资源,也无需回滚)
  2. 优点:简单
  3. 缺点:隔离性差,必须成功(无回滚)
  4. 适合场景:隔离要求低,成功概率高,小事务(快,从而降低失败可能性)

TCC: Try-Confirm-Cancel

  1. 两个 C 阶段均是尽最大努力交付
  2. 优点:隔离性好,性能好(已预留的资源归当前事务所有,无竞争,免锁)
  3. 缺点:Try 需要预留资源,要求开发者对数据有较高控制性 – 业务侵入性较高
  4. 适合场景:性能要求,隔离要求,数据可控

SAGA

  1. 大事务拆解成多个小事务;
    1. 小事务独立进行;
    2. 根据业务情况,可选择尽最大努力交付,也可选择补偿。
  2. 优点:补偿动作对数据可控性要求较低,易于实现
  3. 缺点:隔离性较差
  4. 适合场景:长事务
    在这里插入图片描述

SEATA 分布式事务解决方案

补充

以上三种方案,均需要有个地方来记录事务的状态和执行进度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值