石杉码农面试

本文探讨了分布式事务的五种常见方案,包括数据库XA规范、TCC事务补偿、本地消息表、可靠消息最终一致性方案和最大努力通知方案,并详细阐述了各自的优缺点和实际应用场景。同时,还涉及到了服务调用超时问题的解决方案,提到了Zookeeper分布式锁的应用。
摘要由CSDN通过智能技术生成

分布式事物

先说分布式事物方案+自己项目实际用到的。
自己项目中的场景:大致托管划款指令授权的时候最终流程落地的时候会推一个划款指令给外部系统,然后会给自己本地表里也插一个划款指令。这两个操作要求原子性其中有一个失败就需要回滚事物。
分布式事物

方案一:数据库XA规范

分布式事物规范,定义了分布式事物模型。

四个角色
事物管理器(TM协调者)
资源管理器(RM):上报版本状态给TM,理解为不同数据库
应用程序AP
通信资源管理器CRM

两阶段提交:
第一阶段:每个参与者执行本地事物但是不提交,进入ready状态
第二阶段:当协调者确认每个参与者都ready后,通知参与者提交如果有其中一个失败,者发送rollback,所有参与者一起回滚。
会存在的问题:
单点故障,整个系统不可用
数据不一致:第二阶段,由于网络问题有的没有收到可能导致数据不一致。

三阶段提交:对二阶的优化,例如事物管理器如果挂了,资源管理器会自己进行commit.并且它在第一阶段的时候会先去判断数据库环境是否正常。

实现:JTA是java对XA规范的实现,对应JDBC的事物

缺陷:一般每个服务如果操作多个库实际上是不规范的,还有基于数据库实现分布式事物性能不行。

方案二:TCC事物补偿

try,检查资源(例如100都没有就不发起)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值