如何在微服务架构中实现即时一致性?

时间:2017-10-11 19:34:36

标签: microservices distributed-transactions eventual-consistency

例如amazon.com;他们依赖于微服务架构,可能订单和支付是单独的微服务,但是当您在amazon.com上结账时,您终于可以看到订单ID和详细信息。如果不是最终的一致性方法是什么呢?也许2PC?

我在概括我的问题;如果不是最终的一致性怎么办? 适用于业务交易(最终用户应该看到交易结果),但单独的微服务是有意义的(如订单和付款) 如何处理即时一致性?

1 个答案:

答案 0 :(得分:2)

有几种技术可以提供跨服务交易(原子性):2PC,Percolator的交易和Sagas。

Percolator's transactions具有可序列化的隔离级别。它们在业内是众所周知的,请参阅:亚马逊的DynamoDB transaction libraryCockroachDB database以及Google的Pecolator系统本身。 Percolator的step-by-step visualization交易可以帮助您了解它们的工作原理。

传奇模式在80年代晚期的Sagas论文中有所描述,但随着微服务的兴起变得更加相关。请参阅Applying the Saga Pattern对话获取灵感。

但是,既然你提到了最终的一致性,那么重要的是要注意所有技术都要求单个服务可以线性化(强一致性)并支持比较和设置。