Spring Cloud Alibaba Sentinel FlowSlot 源码解析
FlowSlot获取全部流控规则
1 | // 获取到指定资源的所有流控规则 |
Spring Cloud Alibaba Sentinel FlowSlot 源码解析
1 | // 获取到指定资源的所有流控规则 |
Spring Cloud Alibaba Sentinel 源码解析 SlotChain 入口解析
我们从这里继续分析,这个位置的chain.entry方法,但是此时这个chain是谁?
1 | //CtSph中 |
Spring Cloud Alibaba Sentinel 源码解析 ClusterBuilderSlot 解析
ClusterBuilderSlot:则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;
1 | //NodeSelectorSlot.entry() |
Spring Cloud Alibaba Sentinel 源码解析 源码入口
在微服务的使用Sentinel实际工作场景中,我们只需要引入对应依赖:spring-cloud-starter-alibaba-sentinel,就会进行自动装配,所以我们之间看META-INF/spring.factories,然后我们这里从SentinelAutoConfiguration开始看起
Spring Cloud Alibaba Sentinel 源码解析 构建 Context
我们继续分析当前这个类型中的InternalContextUtil.internalEnter(Constants.CONTEXT_DEFAULT_NAME);方法
1 | /** |
Spring Cloud Alibaba Sentinel 源码解析 Node 之间的关系
一个Context之中,Resource和Entry的关系,一个Context中可以有多个Resource,每个资源都必须都应一个Entry。
这张图的上班部分其实体现了Node之间的关系,官方提供的图不够明显,我们需要进行细化
Spring Cloud Alibaba Sentinel 核心概念
Sentinel作为ali开源的一款轻量级流控框架,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。相比于Hystrix,Sentinel的设计更加简单,在 Sentinel中资源定义和规则配置是分离的,也就是说用户可以先通过Sentinel API给对应的业务逻辑定义资源(埋点),然后在需要的时候再配置规则,通过这种组合方式,极大的增加了Sentinel流控的灵活性。
引入Sentinel带来的性能损耗非常小。只有在业务单机量级超过25W QPS的时候才会有一些显著的影响(5% - 10% 左右),单机QPS不太大的时候损耗几乎可以忽略不计。
Sentinel提供两种埋点方式:
Spring Cloud Alibaba Sentinel 核心源码下载
Sentinel是分布式系统的防御系统。以流量为切入点,通过动态设置的流量控制、服务熔断等手段达到 保护系统的目的,通过服务降级增强服务被拒后用户的体验。
ProcessorSlotChain
Sentinel 的核心骨架,将不同的 Slot 按照顺序串在一起(责任链模式),从而将不同的功能(限流、降级、系统保护)组合在一起。slot chain 其实可以分为两部分:统计数据构建部分(statistic)和判断部分(rule checking)。核心结构