分布式事务解决方案
Seata架构
Seata事务管理中有三个重要的角色:
TC(Transaction Coordinator)——事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚
TM(Transaction Manager)——事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务
RM(Resource Manager)——资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚

Srata的XA模式

Seata的AT模式
AT模式同样是分阶段提交的事务模型,不过弥补了XA模式中资源锁定周期过长的缺陷

TCC模式原理
Try:资源的检测和预留
Confirm:完成资源操作业务;要求Try成功Confirm一定要成功
Cancel:预留资源释放,可以理解为Try的反向操作

MQ分布式事务
在A服务写数据的时候,需要在同一事务内发消息到另一个事务,异步,性能最好

接口幂等
基于RESTful API的角度对部分常见类型请求的幂等性特点进行分析

三种幂等方式:
- 数据库唯一索引
- token+redis
- 分布式锁
token+redis来实现,性能较好
第一次请求生成一个唯一token存入redis,并返回给前端
第二次请求业务处理,携带之前的token,到redis进行验证,如果存在,可以执行业务,删除token;如果不存在,则直接返回,不处理业务

分布式锁,性能较低
XXL-job分布式任务调度平台
xxl-job解决的问题:
- 解决集群任务的重复执行问题
- cron表达式定义灵活
- 定时任务失败了,重试和统计
- 任务量大,分片执行
xxl-job的路由策略有哪些
- 轮询(ROUND)
- 故障转移:按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度
- 分片广播:广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务
xxl-job任务执行失败怎么解决
- 路由策略选择故障转移,使用健康的实例来执行任务
- 设置重试次数
- 查看日志+邮件告警来通知相关负责人来解决
如果有大数据量任务同时需要执行怎么解决
- 让多个实例一起去执行(部署集群),路由策略广播分片
- 让任务执行的代码可以获取分片总数和当前分片,按照取模的方式分摊到各个实例执行

浙公网安备 33010602011771号