前言
本篇只是学习seata的笔记,更多的是个人的理解,难免有误,如果有误还请包容、指出、共同进步。谢谢~
术语
TC
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚
TM
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
四个模式
AT模式
- 两阶段提交,第一阶段提交本地事务,准备undo_log 回滚日志 向服务端通知。二阶段异步提交事务,或者去回滚一阶段数据
- 代码无侵入
- 改写实际执行的SQL
- 数据库需支持事务
XA模式
- XA于AT模式基本相同,不同点在于要使用支持XA协议数据库
TCC模式
- Try Confirm Cancel
- 模式不依赖数据库,完全由代码实现,数据的预备、事务的commit以及事务的rollback全由用户自己编写逻辑
saga模式
- 模式不依赖数据库,完全由代码实现,业务的流转使用状态机,需要学会状态机的编写
- 个人认为这个模式类似于tcc模式,只不过比tcc模式更复杂,因为添加了一些扩展性,所以在复杂性和功能性上会比tcc强大
- 也有不需要状态机的配置
- 功能强大,学习成本过高
配置中心
- seata的配置中心可以使用nacos,apollo,etcd3,consul,zookeeper
其他说明
锁
- 有个全局锁概念,保证各事务间的完整性
- 关于全局锁的尝试会有一个范围,避免死锁
隔离级别
- 本地隔离级别就算是读已提交以及以上级别,全局事务的隔离级别也是读未提交
- 关于想实现全局事务的读已提交,seata文档提示他们会代理select for update
备注
- 理解了TC、TM、RM的含义,没理解具体出现的位置,还没有实际操作过,有时间得实际操作一次才行