• 请不要在回答技术问题时复制粘贴 AI 生成的内容
deku9
V2EX  ›  程序员

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

  •  1
     
  •   deku9 · Feb 23, 2024 · 2446 views
    This topic created in 983 days ago, the information mentioned may be changed or developed.
    如果一个事务里面有比如说一些不支持事务的操作,比如 rpc 调用,es ,文件写入等不能回滚的操作。如果数据库写入失败要回滚,但是这些操作回滚不了怎么办?
    4 replies  •  2024-02-24 10:02:31 +08:00
    vczyh
    vczyh
    Feb 23, 2024
    1
    一般来说一个事务只操作数据库,完成之后再操作其他的,为了防止后者失败,可以异步检查是否操作成功,失败的话补偿。
    lifei6671
    lifei6671
    Feb 23, 2024
    2
    要么引入分布式事务。要么做最终数据一致性校验就行。根据业务的不同,看看是先入库再调用 RPC ,还是先调用 RPC 再入库。只要做好幂等性,上下游重试即可。
    deku9
    deku9
    OP
    Feb 23, 2024
    3
    @lifei6671 大佬,我这里应该不涉及分布式事务吧,我的意思是其他操作不支持事务。然后如果我想尽量保障实时的一致性有什么好办法吗。一般做重试就行嘛,还是说这种场景一定要最终一致性校验
    lifei6671
    lifei6671
    Feb 24, 2024
    4
    @deku9 重试+最终一致性就行。目前我们的业务也是这么做的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1427 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:30 · PVG 06:30 · LAX 14:30 · JFK 17:30
    ♥ Do have faith in what you're doing.