当我们向微服务架构迁移时,如何处理好分布式事务是必须考虑的问题。这篇文章介绍了分布式事务处理的两种方案,可以结合实际采用合适的解决方案。原文:Handling Distributed Transactions in the Microservice world [1]
如今每个人(包括我)都在思考、构建微服务,分布式系统是微服务的核心原则和一切实现的上下文。
什么是分布式事务?
跨越网络上多个物理系统或计算机的事务被简单的称为分布式事务。在微服务世界中,事务被分割到多个服务中,需要按顺序调用这些服务以完成整个事务。
下面是一个单体电子商务系统使用事务的例子:
图1: 单体中的事务
在上面的系统中,如果用户向平台发送 Checkout 请求,平台将创建一个本地数据库事务,该事务操作多个数据库表,以 处理 订单并从库存中 保留 商品。如果有任何步骤失败,事务(包括订单和保留的商品)可以 回滚 。这被称为ACID(原子性 Atomicity、一致性 Consistency、隔离性 Isolation、持久性 Durability),由数据库系统保证。
下面是电子商务系统分解为微服务的情况: