Kir*_*koR 21 java architecture soa design-patterns web-services
我已经阅读了一些关于微服务架构的文章,但是没有人讨论交易这个话题.所有他们说这很难做到.也许有人可以描述如何处理这个?
但不是来自域方面,而是来自技术方面.让我们说我们有业务案例,我们需要调用两个不同的服务,他们都对数据库进行了一些更改.但是如果在第二个错误发生时如何回滚?
谁知道这个问题的一些库或设计模式?
我可能不是这方面的终极专家,但我相信你正在走向分布式交易.为了让它们运行,所有应用程序服务组件都需要一个共同的共享事务ID,并且您必须确保每个组件都被告知事务的状态.它是异步的,因此您需要大量的编程技能.
以下是提到或讨论的分布式交易:
https://en.wikipedia.org/wiki/Distributed_transaction
http://contino.co.uk/microservices-not-a-free-lunch/
http://martinfowler.com/articles/microservices.html
似乎人们试图避免它,因为它很难.也许这就是为什么你找不到多少.
希望这有助于向前迈进一步:-)
小智 5
最好的设计是具有隔离的服务:每个服务仅在其自己的事务中完成其工作,并且您的工作流预计单个服务会失败。
如果确实只有在所有服务都被正确调用的情况下才需要提交,则应该创建一个更高级别的服务来在外部事务中执行这些调用。