一、Sentinel(哨兵)简介

1、Sentinel的功能及特点

1.Sentinel的功能
 2.Sentinel的特点

2、Sentinel的组成

核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 8 及以上的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。核心库不依赖控制台。
控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。提供了机器自发现、簇点链路自发现、监控、规则配置等功能。

3、Sentinel的内部结构及工作流程

1.内部核心类

1.Entry
每一次资源调用都会创建一个 Entry,包含了资源名、curNode(当前统计节点)、originNode(来源统计节点)等信息。

2.Context
Context是对资源操作的上下文,每个资源操作必须属于一个Context。如果代码中没有指定Context,则会创建一个name为sentinel_default_context的默认Context。一个Context生命周期中可以包含多个

3.Node
用于完成数据统计的接口
    1、StatisticNode:统计节点,是Node接口的实现类,用于完成数据统计.
    2、EntranceNode:入口节点,一个Context会有一个入口节点,用于统计当前Context的总体流量数据.
    3、DefaultNode:默认节点,用于统计一个资源在当前Context中的流量数据.
    4、ClusterNode:集群节点,用于统计一个资源在所有Context中的总体流量数据.

4.Slot
Slot中主要定义sentinel的功能,sentinel中默认提供了以下Slot
    1、NodeSelectorSlot
    负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降。
    2、ClusterBuilderSlot
    用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count,Block count,Exception count 等等,这些信息将用作为多维度限流,降级的依据。简单来说,就是用于构建ClusterNode。
    3、StatisticSlot
    用于记录、统计不同纬度的 runtime 指标监控信息。
    4、ParamFlowSlot
    对应控制台的:热点流控
    5、FlowSlot
    用于根据预设的限流规则以及前面 slot 统计的状态,来进行流量控制。对应控制台的:流控规则
    6、AuthoritySlot
    根据配置的黑白名单和调用来源信息,来做黑白名单控制。对应控制台的:授权规则
    7、DegradeSlot
    通过统计信息以及预设的规则,来做熔断降级。对应控制台的:降级规则
    8、SystemSlot
    通过系统的状态,例如 load1 等,来控制总的入口流量。对应控制台:系统规则

5.ProcessSlotChain
Sentinel 的核心骨架,将不同的 Slot 按照顺序串在一起(责任链模式),从而将不同的功能(限流、降级、系统保护)组合在一起。

2.Sentinel设计和工作流程
Sentinel的核心骨架是 ProcessorSlotChain。
系统会为每个资源创建一套链路处理,将不同的 Slot(处理节点) 用责任链模式,将不同的功能组合在一起(限流、降级、系统保护)。

二、Sentinel(哨兵)使用

1、超时

2、熔断

3、限流

4、降级

06-30 23:49