微服务中的事务

我读过一些关于微服务架构的文章,但没有人讨论事务这个话题。他们说这很难做到。也许有人可以描述如何处理这个问题?

但不是从领域方面,而是从技术方面。假设我们有一个业务案例,我们需要调用两个不同的服务,并且它们都对数据库进行了一些更改。但是,如果第二个上发生一些错误,如何回滚?

谁知道这个问题的一些库或设计模式?


答案 1

我可能不是这方面的终极专家,但我相信你正在走向分布式事务。为了让它们运行,所有应用程序服务组件都需要一个通用的共享事务 ID,并且您必须确保每个组件都被告知事务的状态。它是异步的,因此您将需要大量的prog技能。

以下是提及或讨论的分布式事务:

https://en.wikipedia.org/wiki/Distributed_transaction

http://contino.co.uk/microservices-not-a-free-lunch/

http://martinfowler.com/articles/microservices.html

似乎人们试图避免它,因为它很困难。也许这就是为什么你没有找到太多关于。

希望这有助于向前迈出一步:-)


答案 2

最好的设计是使用隔离的服务:每个服务只在自己的事务中完成其工作,并且您的工作流预计单个服务会出现故障。

如果确实需要仅在调用所有服务时才提交,则应创建一个更高级别的服务,以便在外部事务中执行这些调用。


推荐