分布式事务解决方案

分析

  当db server不在同一台机的情况下,就会出现分布式事务,官方有强一致解决方案JTA(java transactions API)(多个server通过一个事务管理器统一管理事务) ,不过在高并发场景下并不使用,太慢。

  采用单机事务加消息队列,弱一致性解决性能问题。需要添加t表记录操作,例子:a 先 b转100 块

  1. 单机事务,a扣100,t表插入要先b转100记录,事务结束
  2. 定时任务拿t表记录写入MQ(t表标记已消费),定时任务MQ消费队列记录

疑点:mq写队列与修改t表记录可能不同步,导致写了mq,t表状态没有修改过来,重复写入mq

幂等性:对一个事物操作无数次,事务不受影响即是幂等,例如读操作,写操作非幂等,所以mq可以重复插入多条,只要保存t表执行状态(新表),便可以知道是否已经执行

解决方案:消费mq时查看消息执行状态,选择是否执行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值