seata介绍
- Seata是一款致力于高性能和简单易用的分布式解决方案。
- Seata主要提供了AT、TCC、SAGA 和 XA 事务模式,阿里首推的模式的AT。
- 在Seata中存在三种角色,分别是:TC(事务协调者,维护全局和分支事务,解决分布式事务的提交/回滚)。TM(事务管理者,事务的执行者)。RM(资源管理者,管理分支事务的资源并于TM进行交互并上报当前事务的状态)。
- TC 为单独部署的Server服务,TM和RM嵌入到应用中(client端)。
Seata设计分析
- Seata是对二阶段提交协议的一种改进方案,在第一阶段:业务数据和回滚日志记录在本地事务中,核心在于会根据业务sql解析转换成undolog,也就是说会将资源生成前置镜像存放到undo_log_table中,供之后的事务操作提供判断和回滚的支持。
- 第二阶段:分布式事务执行成功的话,TC就通知RM异步删除undolog。如果失败的话,会由TM向TC提交回滚请求,而TC就会通知RM进行事务回滚,RM通过XID 和 分支事务Id 找到对应的undo_log日志记录,通过undo_log记录反向生成更新sql执行,完成分支的回滚。