一个业务跨越了多个服务,那么我们就将这些服务称为分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务
可用性:集群中的节点,能不能被正常访问
分区:部分节点与其它节点失去连接,形成独立分区
容错:出现分区时,整个系统也要持续对外提供服务
简述CAP定理内容?
分布式系统节点通过网络连接,一定会出现分区问题(P)
当分区出现时,系统的一致性(C)和可用性(A)就无法同时满足
思考:elasticaearch集群是CP还是AP?
ES集群出现分区时,故障节点会被剔除集群,数据分片会重新分配到其它节点,保证数据一致。因此是低可用性,高一致性,属于CP
BASE理论
BASE理论是对CAP的一种解决思路,包含三个思想:
Basically Available(基本可用): 分布式系统在出现故障时,允许损失部分可用性,即保证核心可用
Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
解决分布式事务的思想和模型:
全局事务:整个分布式事务
分支事务:分布式事务中包含的每个子系统的事务
事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚;
事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务
资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
初识Seata
TCC的空回滚和业务悬挂
当某分支事务的try阶段阻塞时,可能导致全局事务超时而触发二阶段的cancel操作。在未执行try操作时先执行了cancel操作,这时cancel不能做回滚,就是空回滚。
解决分布式事务,各个子系统之间必须能感知到彼此的事务状态,才能保证状态一致,因此需要一个事务协调者来协调每一个事务的参与者(子系统事务)。
简述BASE理论三个思想:
基本可用
软状态
最终一致
解决分布式事务的思想和模型:
全局事务:整个分布式事务
分支事务:分布式事务中包含的每个子系统的事务
最终一致思想:各分支事务分别执行并提交,如果有不一致的情况,再想办法恢复数据
强一致思想:各分支事务执行完业务不要提交,等待彼此结果。而后统一提交或回滚
初识Seata
Seata是2019年1月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。致力于提高性能和简单易用的分布式事务服务,为用户打造一站式的分布式解决方案。
Seata架构
Seata事务管理中有三个重要的角色:
TC(Transaction Coordinator)-事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。
TM(Transaction Manager)-事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
RM-资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
Seata提供了四种不同的分布式事务解决方案:
XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入
TCC模式:最终一致的分阶段事务模式,有业务侵入
AT模式:最终一致的分阶段事务模式,无业务侵入,也是Seata的默认模式
SAGA模式:长事务模式,有业务侵入