V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhuangzhimin
V2EX  ›  问与答

http 调用第三方接口成功后,如果自己本身接口报错,如何实现事务回滚?

  •  
  •   zhuangzhimin · 2018-08-20 10:09:23 +08:00 · 4168 次点击
    这是一个创建于 2280 天前的主题,其中的信息可能已经有所发展或是发生改变。

    或者说有更好的规范还是怎么处理之类的能保证事务一致( http 调用 ,非 RPC 调用)

    业务场景: 如果本地接口增加 A 服务器必须同步 增加 B、C (先加 B 后 C ) 数据 。但是新增 B 成功了 新增 C 的时候失败,这时候如果抛出异常只会不添加 A 数据, 但是 B 新增完不会新型回滚

    11 条回复    2018-08-23 22:42:12 +08:00
    zhuangzhimin
        1
    zhuangzhimin  
    OP
       2018-08-20 10:23:38 +08:00
    有人知道吗?
    nullen
        2
    nullen  
       2018-08-20 10:36:31 +08:00
    重试,幂等。
    zhuangzhimin
        3
    zhuangzhimin  
    OP
       2018-08-20 13:59:33 +08:00
    @nullen 有没有文章来看一下,如果用幂等
    mooncakejs
        4
    mooncakejs  
       2018-08-20 14:01:21 +08:00 via iPhone
    没办法的啊,只能把它放进失败队列,等着人工处理
    zhuangzhimin
        5
    zhuangzhimin  
    OP
       2018-08-20 14:05:17 +08:00
    @mooncakejs 这也是一种方案 ,但是必须配合熔断处理吧。 我想说不依靠人工代码进行解决
    darkblood
        6
    darkblood  
       2018-08-20 14:18:18 +08:00 via Android
    tcc 事务
    当然 仍然是业务代码
    zhuangzhimin
        7
    zhuangzhimin  
    OP
       2018-08-20 15:46:35 +08:00
    @darkblood 如果是 TCC 事务 还是要自己去撸相应的取消前面失败的逻辑 。
    zhuangzhimin
        8
    zhuangzhimin  
    OP
       2018-08-20 19:09:46 +08:00
    56 个收藏的人,有大佬解答一下吗
    lolizeppelin
        9
    lolizeppelin  
       2018-08-20 19:23:57 +08:00 via Android
    openstack 为这专门写工作流引擎

    把整个包进工作流里呀
    zhuangzhimin
        10
    zhuangzhimin  
    OP
       2018-08-21 10:42:24 +08:00
    好吧 有没有来点具体一点的干活,大家都给一个大致方向,有没有具体一旦的示例例子的网站?
    lolizeppelin
        11
    lolizeppelin  
       2018-08-23 22:42:12 +08:00 via iPad
    我说了呀。openstack 呀
    具体流程参考 Cinder 怎么处理块存储分配的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2695 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.