ACID 如何在 restful 微服务架构中工作

How ACID works in a restful micro-service architecture

我在实现微服务架构方面还很陌生,这个问题让我很困惑

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

一个例子是基于微服务架构的银行服务 banking操作基本上就是针对不同的服务调用不同的服务来完成一笔交易,如果其中一个失败,那么就没有办法消除部分流程,不知道有没有什么机制可以解决这个问题

create a payment

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

debit money from the account

PUT /customers/10/accounts/20

Send a customer notification

POST /alerts/customers/10

答案是您的 API 只是没有公开任何让您创建无效状态的方法。

每种方法都必须进行完整有效的交易。例如,您没有在帐户中添加和删除资金的方法,而是在帐户之间转移资金的方法。转账时必须发生的任何记录保存或通知也必须通过这些方法完成(或至少排队)。

有时这需要您为您可能认为不完整的交易创建特殊的 "valid" 状态。例如,当您在剧院预订座位时,有一种状态是您的座位被预订到您还没有付款的某个时间(5 分钟左右)。