V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
deku9
V2EX  ›  程序员

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

  •  1
     
  •   deku9 · 274 天前 · 1088 次点击
    这是一个创建于 274 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果一个事务里面有比如说一些不支持事务的操作,比如 rpc 调用,es ,文件写入等不能回滚的操作。如果数据库写入失败要回滚,但是这些操作回滚不了怎么办?
    4 条回复    2024-02-24 10:02:31 +08:00
    vczyh
        1
    vczyh  
       274 天前
    一般来说一个事务只操作数据库,完成之后再操作其他的,为了防止后者失败,可以异步检查是否操作成功,失败的话补偿。
    lifei6671
        2
    lifei6671  
       274 天前
    要么引入分布式事务。要么做最终数据一致性校验就行。根据业务的不同,看看是先入库再调用 RPC ,还是先调用 RPC 再入库。只要做好幂等性,上下游重试即可。
    deku9
        3
    deku9  
    OP
       274 天前
    @lifei6671 大佬,我这里应该不涉及分布式事务吧,我的意思是其他操作不支持事务。然后如果我想尽量保障实时的一致性有什么好办法吗。一般做重试就行嘛,还是说这种场景一定要最终一致性校验
    lifei6671
        4
    lifei6671  
       273 天前
    @deku9 重试+最终一致性就行。目前我们的业务也是这么做的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2742 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:56 · PVG 22:56 · LAX 06:56 · JFK 09:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.