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

微服务之间如何处理同步事件

  •  
  •   ghostheaven · 2022-01-15 15:06:49 +08:00 via Android · 1745 次点击
    这是一个创建于 803 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如多个服务关注了某个资源的删除事件,在删除资源前会触发这个事件,如果任何一个服务拒绝删除,则删除失败。如果没有服务拒绝删除,则进行删除。资源删除的过程中,其他服务应该锁定自己相关业务的表(通过事务),直到删除完成或失败。



    有什么微服务的协议或框架能够可靠地实现这种需求?
    12 条回复    2022-01-18 08:20:04 +08:00
    wd
        1
    wd  
       2022-01-15 15:29:47 +08:00 via iPhone
    2 阶段提交... 你这是要自己实现事务...
    ghostheaven
        2
    ghostheaven  
    OP
       2022-01-15 15:37:14 +08:00
    @wd 担心自己造轮子有风险。有什么中间件、协议或者框架,可以可靠地实现这个 2 阶段提交的基本功能?包括解决超时、重试之类的问题。
    ghostheaven
        3
    ghostheaven  
    OP
       2022-01-15 15:40:16 +08:00
    @wd 原来单体应用共用一个数据库的话都很简单的,开一个大的 transaction ,其他模块可以直接 throw ,然后可以可靠的回滚。现在单体越来越大了,想要拆分,感觉这种同步事件就很不好处理了。
    binux
        4
    binux  
       2022-01-15 18:02:47 +08:00 via Android   ❤️ 3
    服务之间耦合那么重搞什么微服务。。
    XCFOX
        5
    XCFOX  
       2022-01-15 18:15:38 +08:00   ❤️ 1
    关键词:分布式事务
    常用实现:AT 、TCC 、SAGA

    https://seata.io/zh-cn/blog/tcc-mode-design-principle.html
    winglight2016
        6
    winglight2016  
       2022-01-15 20:38:19 +08:00
    lz 的需求是个共识系统,或者是工作流?
    ghostheaven
        7
    ghostheaven  
    OP
       2022-01-15 21:20:51 +08:00
    @binux 如果有这种需求是建议把这几个服务搞成一个单体是么?
    ghostheaven
        8
    ghostheaven  
    OP
       2022-01-15 21:21:56 +08:00
    @XCFOX 收藏了。
    ghostheaven
        9
    ghostheaven  
    OP
       2022-01-15 21:33:56 +08:00
    @XCFOX 有没有支持多语言的库,比如 PHP 和 node.js
    XCFOX
        10
    XCFOX  
       2022-01-15 22:14:48 +08:00   ❤️ 1
    如果要支持 node.js 和 php 的话只有 dtm 了
    https://github.com/dtm-labs/dtm
    cover
        11
    cover  
       2022-01-16 09:40:31 +08:00 via iPhone
    不能做成子系统失败补偿,主系统等所有子系统删除完成后删除,这种解耦合的设计吗。为什么需要全局一致
    ghostheaven
        12
    ghostheaven  
    OP
       2022-01-18 08:20:04 +08:00 via Android
    @cover 也可以,不过没有两阶段提交可靠,补偿的话毕竟有一瞬间是成功了的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   969 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:23 · PVG 04:23 · LAX 13:23 · JFK 16:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.