场景: 同步 2 个数据库表,tableA<->tableB
框架: Spring Cloud
我的实现:
serviceA 的一个事务内,
需要调用 serviceB 的服务插入批量插入数据,
由于 serviceA 内是走循环分批读完百万数据,
每读取 1000 条就调用 serviceB 进行数据的插入操作,
目前不知道插到某一条( 10000 )失败的话,之前的 9999 条如何回滚?
1 fanfou 2019-07-09 18:21:26 +08:00 txlcn |
2 pifuant 2019-07-09 18:28:57 +08:00 分布式事务成熟方案, 基本没有, 各种轮子罢了 |
3 hosaos 2019-07-09 18:53:02 +08:00 你这数据同步,和事务也没啥关系吧,你报错了 直接删除 B 的所有相关数据,或者重新写入报错的数据到 B |
![]() | 4 zhangtao 2019-07-09 18:55:13 +08:00 tcc |
![]() | 5 love 2019-07-09 19:43:52 +08:00 为啥要回滚?不能接着上次断的位置插吗? |
6 night98 2019-07-09 20:31:46 +08:00 阿里开源了一款,不过分布式事务本身就基本上不可能满足你的这几个需求 |
![]() | td width="10" valign="top"> 7 Breadykid OP @hosaos 就是不知道怎么删除 B 里的本次事务操作的所有数据,首先不能清表,有历史数据,其次,这个表里的字段是动态的,没有指定的主键或者唯一字段可以区分某一条数据 |
![]() | 8 LeeSeoung 2019-07-10 10:05:28 +08:00 seata |
![]() | 9 Breadykid OP |
![]() | 10 Breadykid OP |