概述
由于微服务架构大行其道,分布式通信几何级增加,必然带来一致性问题,也就是说,以前你遇到不一致的概率可能是100年1次,现在可能是1年1次,甚至1天1次。微服务架构的前期,大多数开发者只关注拆分,选择性忽略一致性、性能、可用性、工具链等问题,导致架构步履维艰,在这些问题当中,一致性是最容易被忽略的。当然,绝大多数场景并不需要那么高的一致性,可以采用失败重试的策略简单处理。 从目前业界的情况来看,主要有如下几种实现方式:
-
XA(2PC)
-
失败重试
-
可靠事件
-
Saga
-
TCC
实际上很多方案都要结合业务去做,但是事务保证本身是一个通用的技术,工程师更希望抽象出来,通过简单的配置、注解就能搞定,并且不会大幅降低性能。
下面就给大家介绍两个开源的关于分布式事务的明日之星框架。
对比
出身
Fescar是阿里巴巴开源的分布式事务中间件,基于其内部的TXC和GTS的技术积累。虽然此框架非常活跃,但是19年刚刚开源,目前0.3版本,如果用于生产环境风险较大。
servicecomb-pack出自华为微服务框架servicecomb,servicecomb在Apache已经毕业了,但是一直比较“低调”。知名数据库中间Sharding-Sphere采用的就是servicecomb-pack提供的saga方案。
实现原理
fescar实际上本质就是将一个分布式事务转化为多个单库事务。
没错,这就是Saga