关于事务里面有无法回滚的操作的问题

274 天前
 deku9
如果一个事务里面有比如说一些不支持事务的操作,比如 rpc 调用,es ,文件写入等不能回滚的操作。如果数据库写入失败要回滚,但是这些操作回滚不了怎么办?
1089 次点击
所在节点    程序员
4 条回复
vczyh
274 天前
一般来说一个事务只操作数据库,完成之后再操作其他的,为了防止后者失败,可以异步检查是否操作成功,失败的话补偿。
lifei6671
274 天前
要么引入分布式事务。要么做最终数据一致性校验就行。根据业务的不同,看看是先入库再调用 RPC ,还是先调用 RPC 再入库。只要做好幂等性,上下游重试即可。
deku9
274 天前
@lifei6671 大佬,我这里应该不涉及分布式事务吧,我的意思是其他操作不支持事务。然后如果我想尽量保障实时的一致性有什么好办法吗。一般做重试就行嘛,还是说这种场景一定要最终一致性校验
lifei6671
273 天前
@deku9 重试+最终一致性就行。目前我们的业务也是这么做的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1017948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX