For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内Java培训等互联网课程,而本文我们就通过案例分析来简单了解一下,分布式事务包含哪些基础知识点。
CAP理论
C一致性:各节点同一时刻响应结果一致(数据一致)
A可用性:各节点随时随地都要能正常响应,不能存在延迟或者阻塞的情况(快速响应)
P分区容忍性:某个节点挂了,其他节点能代替服务
科学家证明CAP只能同时满足2个
放弃分区容忍性P:意味着分布式系统不成立。这种情况只有类似于OracleRAC这种数据通过磁盘共享的情况,虽然是多个实例,但不算分布式。基本是分布式系统一定都会包含P,否则没有考虑分布式事务的意义
放弃可用性A:这样可能因为数据同步过程的延迟或者超时,造成系统长时间不可用,这是不能容忍的
放弃一致性C:数据有短暂不一致的响应。放弃C是当前分布式系统的主流选择。一般都是允许数据在中间过程出错,但允许在输出时能够修正古来。因此我们放弃了强一致性,追求“终一致性”
BASE(可靠性队列)
BASE指基本可用性+柔性事务+终一致性,或者叫做大努力交付
实现原理是引入一个消息队列,当某个事务动作发生异常时,在轮询阶段不断重试,直到成功。
要求满足幂等性,可靠性事件队列只要一步完成了,后续就没有失败回滚的概念,只许成功,不许失败。
TCC事务
TCC用于解决BASE中无法解决的隔离性问题,因为BASE不允许失败,一定会执行,如果涉及了超售等问题将无法解决。
Try:尝试执行阶段,会先进行业务可执行的检查,并提前预留好需要扣除的资源(类似于冻结那一块资源,但没有实际去扣);
Confirm:执行阶段,这个过程不再做任何检查,直接执行。如果网络出错等缘故则一直重试,符合幂等;
Cancel:执行完成,释放try阶段中预留的业务资源,也要符合幂等。
和2PC很类似,但TCC是在用户应用代码层面实现的,业务侵入性很高,而2PC是基础设施层面提供的。
SAGA事务
TCC中的缺点在于try阶段和cancel阶段依赖用户代码实现,但如果你的业务不支持这种操作就麻烦了,比如扣款动作是某个银行做的,他不支持预扣款的功能。
SAGA会把事务拆成很多个小事务T,按顺序执行,并根据情况给事务T失败时选择是继续重试T,还是用补偿事务C来替代重试
这样像银行无法预扣款也无法撤销转账的问题,可以改成自己系统来做中间者做转账操作。也要引入SAGAlog机制避免长串事务执行过程中崩溃。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音达内三江区域学习了解。