2. 工作原理和核心概念

介绍

Sentinel 的核心是将不同的 Slot 按照顺序串在一起(使用了责任链模式),这些不同的 Slot实现了不同的功能(限流、降级、熔断、系统保护)。Slot Chain 主要可以分为两部分:统计数据构建部分(statistic)和判断部分(rule checking)。

核心结构如下图

结构图说明

通过上图可以看出,整个结构分为几大块

  1. Invocation Tree Node接口是Sentinel 里面的各种种类的统计节点,Invocation Tree 中就是各种Node,不同的上下文Context会
  2. ClusterNode ClusterNode保存的是同一个Resource的相关的统计信息,是以Resource为维度的,不区分Context
  3. WindowLeapArray 滑动窗口环形数组,适用于统计时间段内的统计数据的工具
  4. Slot Chain Entry 插槽责任节点调用链,一般是流控责任节点,每个责任节点负责一种相关的流控效果实现。 如果责任节点中被流控,那么就抛出相关的BlockedException,以实现流控效果
  5. Rules 通过Sentinel Dashboard中配置的各种流控规则,在相关责任节点需要的时候读取来根据规则进行流控。

相关核心概念

  1. Context 对资源操作时的上下文环境,每个资源操作(针对Resource进行的entry/exit)必须属于一个Context,如果程序中未指定Context,会创建name为"sentinel_default_context"的默认Context。一个Context生命周期内可能有多个资源操作,Context生命周期内的最后一个资源exit时会清理该Context,这也预示这真个Context生命周期的结束,可以粗略的理解成一个请求线程,就会产生一个Context,但是如果未指定,他们的名字都是sentinel_default_context
  2. Entry 表示一次资源操作,内部会保存当前调用信息。在一个Context生命周期中多次资源操作,也就是对应多个Entry,这些Entry形成parent/child结构保存在Entry实例中
  3. SlotChain 流控责任节点插槽调用链,可以定义自己的责任节点在调用链上, 以实现自定义流控效果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值