发布时间:2024-09-15 15:01
在信息时代的网络环境下,如何保证业务数据的正确性,成为重要的核心点,而数据库产品在业务数据中提供了一套完整的策略机制(原子性,一致性,隔离性,持久性),业务程序不管与数据库是单次单表交互(程序数据与数据表可能构成一个业务的原子性)还是多次多表交互(业务数据分散在多表中通过多次协议交换),事务充当了业务数据完整性很重要的角色。
本地事务 :大部分数据库自身携带事务特征,业务不需要切入业务事务的保障。
分布式事务 :各自的数据库只能保证本库的表事务,而涉及多库之间的业务数据表一致,显得难以控制实现极其复杂,如果以各自的数据库事务为基础,在此基础上构建一套事务协调系统,那么分布式数据源事务控制就变得特别简单。
Seata 定义了全局事务的框架。全局事务 定义为若干 分支事务 的整体协调:
Seata 的全局事务处理过程,分为两个阶段:
不同的事务模式区别在于:分支事务使用不同的事务模型方式达到全局事务两个阶段。
一个分布式的全局事务,整体是 两阶段提交 的模型。全局事务是由若干分支事务组成的,分支事务要满足 两阶段提交 的模型要求,即需要每个分支事务都具备自己的:
TCC模型执行阶段:
调用业务阶段:
完成阶段:
用户接入TCC,最重要的是考虑如何将自己的业务模型拆成两阶段来实现。 例如:
框架核心类
备注: 用户接入 TCC 模式,相对于 AT 模式,TCC 模式对业务代码有一定的侵入性,但是 TCC 模式无 AT 模式的全局行锁,TCC 性能会比 AT 模式高很多。
如下图表中的数据变化对应TCC业务类三个方法对应的处理状态。
如下图涉及了RM、TM、TC之间内部通信核心原理,属于Seata TCC核心架构实现
至于内部实现细节代码,梦塔后续跟大家“弹弹”,时间不早,你的点赞就是对我最好的支持与动力。
Google Earth Engine 学习4---批量运行和取消task中的run
TS 里几个常用的内置工具类型(Record、Partial 、 Required 、 Readonly、 Pick 、 Exclude 、 Extract 、 Omit)的使用
《论文阅读》LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping
21天搞定python分布爬虫_零基础小白三周21天搞定Python分布爬虫课程全套下载