ACID在宁静的微服务架构中的运作方式

时间:2018-08-27 00:47:44

标签: java rest microservices acid

我在实现微服务体系结构方面还很陌生,这个问题让我很沮丧

微服务架构如何解决不同端点调用之间的事务机制。

一个例子是基于微服务架构的银行服务 基本上,银行业务是针对不同服务的不同调用来完成交易,如果其中一项失败,则无法消除部分流程,我不知道是否有任何机制可以解决此问题

  

创建付款

     

POST / payments / customer / 10 / payment / 100 /

     

从帐户中借钱

     

输入 / customers / 10 / accounts / 20

     

发送客户通知

     

POST / alerts / customers / 10

1 个答案:

答案 0 :(得分:2)

答案是您的API不会公开任何可让您创建无效状态的方法。

每种方法都必须完成一个完整且有效的事务。例如,您没有使用在帐户中添加和删除资金的方法,而是使用了在帐户之间转移资金的方法。转移资金时必须保留的任何记录或通知也必须通过这些方法进行(或至少排队)。

有时,这需要您为您可能认为不完整的交易创建特殊的“有效”状态。例如,当您在剧院中预留座位时,有一种状态是预留座位,直到一段时间(5分钟左右)之后您才需要付费。