Spring Cloud Alibaba Seata 源码分析-数据源代理
AT模式的核心点:
- 获取全局锁、开启全局事务
- 解析SQL并写入undolog
分析AT模式如何解析SQL并写入undolog,首先我们要先明确实际上Seata其中采用了数据源代理的模式。
那么这个就需要我们在回顾一下GlobalTransactionScanner这个类型,在这个类型中继承了一些的接口和抽象类,比较关键的几个:
- AbstractAutoProxyCreator
- InitializingBean
Spring Cloud Alibaba Seata 源码分析-数据源代理
分析AT模式如何解析SQL并写入undolog,首先我们要先明确实际上Seata其中采用了数据源代理的模式。
那么这个就需要我们在回顾一下GlobalTransactionScanner这个类型,在这个类型中继承了一些的接口和抽象类,比较关键的几个:
Spring Cloud Alibaba Seata 源码分析 服务端(TC)源码解读
我们的Seata服务端在应用的时候需要准备三张表,那么这三张表分别代表的意思就是
客户端请求服务端以后,我们就需要把对应的全局事务包括分支事务和全局锁全部存放到这里。
![image.png](spring-cloud-alibaba-seata-source-code-analysis-server (-tc)-source-code-interpretation/a1cca08a47184ea5b4d1a2ba1cb12b5e.png)
Spring Cloud Alibaba Seata 2PC 核心源码解读
GlobalTransactionalInterceptor全局事务拦截器,一旦执行拦截器,就会进入到其中的invoke方法,在这其中会做一些@GlobalTransactional注解的判断,如果有注解以后,会执行全局事务和全局锁,那么在执行全局事务的时候会调用handleGlobalTransaction全局事务处理器,这里主要是获取事务信息
1 | Object handleGlobalTransaction(final MethodInvocation methodInvocation, |
Spring Cloud Alibaba Seata 源码入口
首先一个Seata的客户端启动一般分为几个流程:
在这个其中,就会涉及到几个核心的类型,首先我们需要来看配置类型GlobalTransactionAutoConfiguration
Spring Cloud Alibaba Sentinel 源码分析-滑动时间窗口算法原理
“滑动时间窗口算法” 是Sentinel源码中的一个非常重要的算法。
那么在了解滑动时间窗算法之前,我们先要来了解时间窗算法,也可以称之为:固定时间窗算法
概念:固定时间窗口计数器算法思想:在固定的时间窗口内,可以允许固定数量的请求进入。超过数量就拒绝或者排队,等下一个时间段进入。
Spring Cloud Alibaba Sentinel DegradeSlot 源码解析
DegradeSlot是熔断降级的Slot,那我们直接来看核心方法
1 | //DegradeSlot.entry |
Spring Cloud Alibaba Sentinel StatisticSlot 源码解析
StatisticSlot 是 Sentinel 最为重要的类之一,用于根据规则判断结果进行相应的统计操作。
entry 的时候:依次执行后面的判断 slot。每个 slot 触发流控的话会抛出异常(BlockException的子类)。若有 BlockException抛出,则记录 block 数据;若无异常抛出则算作可通过(pass),记录 pass 数据。
exit 的时候:若无 error(无论是业务异常还是流控异常),记录 complete(success)以及 RT,线程数-1。