ghostheaven
V2EX  ›  问与答

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

  •  
  •   ghostheaven · Jan 15, 2022 via Android · 3092 views
    This topic created in 1755 days ago, the information mentioned may be changed or developed.
    比如多个服务关注了某个资源的删除事件,在删除资源前会触发这个事件,如果任何一个服务拒绝删除,则删除失败。如果没有服务拒绝删除,则进行删除。资源删除的过程中,其他服务应该锁定自己相关业务的表(通过事务),直到删除完成或失败。



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

    https://seata.io/zh-cn/blog/tcc-mode-design-principle.html
    winglight2016
    winglight2016
    Jan 15, 2022
    6
    lz 的需求是个共识系统,或者是工作流?
    ghostheaven
    ghostheaven
    OP
    Jan 15, 2022
    7
    @binux 如果有这种需求是建议把这几个服务搞成一个单体是么?
    ghostheaven
    ghostheaven
    OP
    Jan 15, 2022
    8
    @XCFOX 收藏了。
    ghostheaven
    ghostheaven
    OP
    Jan 15, 2022
    9
    @XCFOX 有没有支持多语言的库,比如 PHP 和 node.js
    XCFOX
    XCFOX
    Jan 15, 2022❤️1
    10
    如果要支持 node.js 和 php 的话只有 dtm 了
    https://github.com/dtm-labs/dtm
    cover
    cover
    Jan 16, 2022 via iPhone
    11
    不能做成子系统失败补偿,主系统等所有子系统删除完成后删除,这种解耦合的设计吗。为什么需要全局一致
    ghostheaven
    ghostheaven
    OP
    Jan 18, 2022 via Android
    12
    @cover 也可以,不过没有两阶段提交可靠,补偿的话毕竟有一瞬间是成功了的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5125 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 06:18 · PVG 14:18 · LAX 22:18 · JFK 01:18
    ♥ Do have faith in what you're doing.