一:什么是分布式事务?
分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理,这些数据库或应用程序可能分布在不同的物理节点上,甚至可能位于不同的地理位置。在分布式事务中,需要确保所有参与者的事务操作都能够保持一致性,即所有参与者的事务要么全部提交成功,要么全部回滚。
二:常见的分布式事务有哪些?
分布式事务的目的是保证分布式系统中的多个参与方的数据能够保证一致性。即所有参与者,在一次写操作过程中要么都成功,要么都失败。至于这个一致性到底是怎样的一致性,是强一致性、还是最终一致性,不同的分布式事务方案其实达到的效果并不相同。
三:什么是Seata?他有哪几种模式?
Seata是一个阿里开源的分布式事务解决方案(Simple Extensible Autonomous Transaction
Architecture),用于在分布式系统中实现分布式事务。它旨在简化分布式事务的开发和管理,帮助解决分布式系统中的数据一致性问题。
Seata目前支持4种模式,分别是:
- AT模式
- TCC模式
- Saga模式
- XA模式
四:seata原理
全局唯一的事务ID+三组件
- TC (事务协调者):维护全局和分支事务的状态,负责通知RM执行提交或回滚。
- TM(事务管理器):将不同的微服务组合起来一个完成的业务流程,职责是开始全局事务、提交或回滚全局事务。
- RM (资源管理器):具体的某个微服务为事务的分支,职责是执行每个分支事务的操作。
五:一次分布式事务的大致流程
- TM在接收到用户的下单请求后,会先调用TC创建一个全局事务,并且从TC获取到他生成的
XID - TM开始通过RPC/Restiali调用各个RM,调用过程中需要把XID同时传递过去。
- RM通过其接收到的XID,将其所管理的资源且被该调用锁使用到的资源注册为一个事务分支
- 当该请求的调用链全部结束时,TM根据本次调用是否有失败的情况,如果所有调用都成
功,则决议Commit,如果有超时或者失败,则决议Rollback。 - TM将事务的决议结果通知TC,TC将协调所有RM进行事务的二阶段动作,该回滚回滚,该
提交提交。