Sentinel 实现流控,隔离,降级等功能,本质要做两件事:
- 数据统计: 统计某个资源的访问数据(QPS,RT(响应时间),异常比例)等信息
- 规则判断: 判断流控规则,隔离规则,降级规则是否满足。
ProcessorSlotChian 实现上述功能的骨架,这个类是基于责任链模式设计,将不同功能(限流,降级,系统保护)封装为一个个的Slot,请求进入后逐个执行
责任链中Solt 也分为两大类
-
统计数据的构建
-
- NodeSelectorSlot
负责构建节点链路中的节点(DefualNode),将这些节点形成链路树
- NodeSelectorSlot
-
- ClusterBuilderSlot
负责构建某个资源的clusterNode,ClusterNode 可以保存资源的运行信息(响应时间,QPS,block数目,异常数)
- ClusterBuilderSlot
-
- staticSlot
负责统计实时调用数据,包括运行信息,来源信息等
- staticSlot
-
规则判断部分
-
- FlowSlot 则用于根据预设的限流规则,来进行流量控制;
-
- AuthoritySlot 则根据配置的黑白名单和调用来源信息,来做黑白名单控制;
-
-DegradeSlot 则通过统计信息以及预设的规则,来做熔断降级;
-
- SystemSlot 则通过系统的状态,例如 load1 等,来控制总的入口流量;