我正在寻找最佳方法来保持数据的一致性,同时在项目中的微服务之间进行相互通信。
使用Jersey + Guice构建的项目,并使用Akka在整个系统中粘合服务。我通过调用另一个服务使用单独的事务来避免长时间运行的事务。我使用Hibernate作为ORM和Postgres作为DB。 流程如下:
因此,如果步骤4失败,我的数据将变为非一致状态。我花了几个小时找到解决方案以避免它,但我失败了。有没有正确的方法让它保持一致状态?
答案 0 :(得分:0)
好吧,如果你想避免长时间运行的事务,但希望它们仍然(可能)长时间运行它们的逻辑等价物,那么你实际上是将“事务”抽象推送到应用程序级别。
最简单的解决方案是接受它并为您的数据创建一些列,指示记录是脏的,然后在步骤(6)中使它们变为非脏。
答案 1 :(得分:0)
微服务传奇在这里可能会有所帮助。有关Sagas
的更多详情