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

2022-06-28 23:47:57 +08:00
 JCS

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

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

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

楼主可以去看看 CAP 理论,一般还是根据业务的具体需求来的。Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性)到底要选择哪两个。
cheng6563
2022-06-29 09:16:03 +08:00
能重试的话可以用消息表或可靠消息重试。
希望全部回滚的话用 XA 或者 AT 事务

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX