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

想问一个初级的分布式事务问题

  •  
  •   JCS · 2022-06-28 23:47:57 +08:00 · 1779 次点击
    这是一个创建于 864 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天看了一下公司的微服务调用,他们是这样实现的,从 A 远程调用 B 的接口,然后 B 远程调用 C 的接口...,如果 C 出错回滚会返回错误结果,然后 B 也回滚,最后到 A 那层就返回执行业务失败,感觉是一条链式嵌套的思想,除了在代码上业务不直观,想问一下大家这样会不会有什么问题?有没有什么更好的办法,今天刚看了 TCC 模型,那个可以吗?

    2 条回复    2022-06-29 09:16:03 +08:00
    DeleteZN
        1
    DeleteZN  
       2022-06-29 00:04:56 +08:00
    这种链式的调用环视有问题的,一般来说就是单点故障,比如链路中的某个服务宕机了,整个链路就不可用了。

    对于 TCC 这种 2pc 的方式的话,也会有协调者单点故障的问题。

    楼主可以去看看 CAP 理论,一般还是根据业务的具体需求来的。Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性)到底要选择哪两个。
    cheng6563
        2
    cheng6563  
       2022-06-29 09:16:03 +08:00
    能重试的话可以用消息表或可靠消息重试。
    希望全部回滚的话用 XA 或者 AT 事务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:57 · PVG 00:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.