分布式事务

  1. 常见理论

    • 两阶段提交协议(2pc):分为两个阶段,即准备阶段和提交阶段。准备阶段,协调者向所有参与者发送事务请求,参与者执行事务但不提交,然后回复是否可以提交。提交阶段,如果所有参与者都回复可以提交,协调者发送提交指令,参与者正式提交事务;否则协调者发送回滚指令,参与者回滚事务。
    • 三阶段提交协议(3pc):在两阶段之前加了一个canCommit阶段,保证协调者和参与者的有效性,避免资源浪费;完善了各阶段的超时情况的处理;
    • base理论:基本可用,软状态,最终一致性,即可存在中间态,例如,事务由两个本地事务组成,一个成功了,另一个处理中,则整体状态为处理中状态,经过一段时间后另一个事务为已完成,则整体事务为已完成。
  2. 常见的模式

模式特点适用场景理论
XA需要数据库支持;准备阶段完成后阻塞;玩整的实现了事务特性事务中对多个数据源进行操作2pc
AT不需要数据库支持;准备阶段完成时提交本地事务;依靠日志来回滚事务(反向更新);隔离性为读未提交(部分本地事务已提交,所以能被其他事务读到,但整体事务并未提交,所以是读未提交)事务中对多个数据源进行操作2pc
TCC不需要数据库支持;准备阶段预扣留资源(锁定、冻结);提交阶段扣除资源;需要自己实现TCC三个阶段事务中调用多个微服务2pc
SAGA需要服务和逆向服务两个接口,失败则逆向;每个事务都是独立提交,只要最终数据一致就可以事务中调用多个微服务base
  1. 总结
    • XA、AT是在一个事务中操作多个数据源,理论上网网一个项目只会对应一个数据源,多个项目组成一套微服务系统,项目之间通过微服接口来相互调用,很少一个项目操作多个数据源。
    • XA,AT,TCC 要求每个参与者的结果是明确的,要么成功要么失败,但一些长微服务接口,返回的结果是处理中,此时可以用SAGA模式,因为它每个微服务都是独立的,不需要整体提交回回滚。
    • 在处理微服务上,SAGA比TCC更灵活也更复杂,TCC只需实现三个接口, SAGA除了实现逆向服务还需要对整个业务进行详细的设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值