这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战
最大努力通知是商户端没有返回一个消息确认时,支付宝不断地进行重试,知道收到一个消息确认或者达到最大重试次数。最大努力通知型跟之前提到的事务消息模型的消费者消费模型有点相似,在消费者没有向消息中间件服务器发送确认之前,这个消息会被重复投递,确保消息的可靠性消费到。
分布式事务框架Seata
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。它提供了AT、TCC、Saga和XA事务模式,为开发者提供了一站式的分布式事务解决方案,之前分析过TCC和XA事务模式,接着熟悉AT和Saga两种事务模式
AT模式
AT模式是Seata最主推的分布式事务解决方案,它是基于XA演变而来一种分布式事务模式,它分为三大模块,分别是TM、RM和TC,其中TM和RM作为Seata的客户端与业务系统集成,TC作为Seata的服务器独立部署。TM表示事务管理器,它负责向TC注册一个全局事务,并生成一个全局唯一的XID,在AT模式下,每个数据库资源被当作一个RM(Resource Manager),在业务层面通过JDBC标准的接口访问RM时,Seata会对所有请求进行拦截。每个本地事务进行提交时,RM都会向TC(Transaction Coordinator事务协调器)注册一个分支事务。
具体执行流程如下:
- TM向TC注册全局事务,并生成全局唯一的XID
- RM向TC注册分支事务,并将纳入该XID对应的全局事务范围
- RM向TC汇报资源的准备状态
- TC汇总所有事务参与者的执行状态,决定分布式事务是全部回滚还是提交
- TC通知所有RM提交/回滚事务。
AT模式是XA一样,也是一个两阶段提交事务模型。