开篇:微服务拆分后,事务怎么办?
假设你要从工商银行转 1000 块钱到建设银行。工商银行扣了你 1000,但建设银行那边因为系统故障没有加上。这笔钱就"人间蒸发"了。
在单体应用中,扣款和加款在同一个数据库里,用一个本地事务就能保证要么都成功、要么都回滚。但微服务拆分后,订单服务、库存服务、账户服务各用各的数据库,一个本地事务管不了跨数据库的操作。
这就是 分布式事务 要解决的问题:如何让分布在不同服务、不同数据库上的多个操作,像一个事务一样,要么全部成功,要么全部回滚。
Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的分布式事务解决方案,目前是这个领域最主流的框架之一。
大约 24 分钟