分布式事务&本地事务
文章平均质量分 82
风筝风筝等等我
这个作者很懒,什么都没留下…
展开
-
分布式事务解决方案:RocketMQ事务消息
当事务消息发送成功后回掉RocketMQLocalTransactionListener#executeLocalTransaction方法,执行本地事务。第二次请求,因为流水id已经存在(报主键冲突异常),导致发送端扣钱失败,接收端也没收到消息,2边的钱都没发生变化,测试完成。还是以转账的demo演示一下,在db_account_1和db_account_2这2个库中,建立如下2张表。同时需要提供回查方法的实现,让rocketmq查询本地事务的执行状态,来决定是否投递消息。转账的时候先发送一条事务消息。转载 2024-02-07 18:23:07 · 24 阅读 · 0 评论 -
Seata分布式事务失效,不生效(事务不回滚)的常见场景
当Seata没有正常结束时,每个服务对应数据库中的undo_log表和seata持久化数据库的brach_table、global_table、lock_table、undo_log表都有可能有脏数据没有正确删除,从而导致服务一直回滚,却不成功。**解决办法:**清除undo_log表以及seata持久化数据库的brach_table、global_table、lock_table、undo_log表中的脏数据。那么可以分别在服务A、服务B、服务C的事务方法中添加。(2)每个服务中的XID不一致。转载 2024-02-18 14:22:52 · 610 阅读 · 0 评论 -
Seata实战安装部署与Spring Cloud应用-常见问题
解决:先查看各服务的XID是否一致。转载 2024-02-18 14:08:24 · 39 阅读 · 0 评论 -
SpringCloud整合Seata1.6.1部署与使用Nacos方式
启动成功后,即可访问 http://127.0.0.1:7091/#/login 改地址进入seata的webui,用户名与密码默认为seata,可在上面的1.2章节中中提到的application.yml配置项:console.user中修改。在上述库中添加seata的配置表,sql文件存放在:seata/script/server/db/mysql.sql中。seata官网:http://seata.io/zh-cn/index.html。修改store.db配置项下的配置,连接到自己的数据库。转载 2024-02-08 17:24:26 · 197 阅读 · 2 评论 -
分布式事务解决方案之TCC
TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel。转载 2024-01-15 17:10:47 · 27 阅读 · 0 评论