Sentinel中的基本概念
我们已经成功地把微服务接入 Sentinel
控制台,接下来就可以在 Sentinel
控制台里设置流控规则了。在此之前,笔者介绍一下 Sentinel
中的几个重要概念。
资源
资源是 Sentinel
的关键概念。它可以是 Java
应用程序中的任何内容,如由应用程序提供的服务,或者由应用程序调用的其他应用提供的服务,甚至可以是一段代码。在大部分情况下,可以使用方法签名、访问 URL,甚至服务名称作为资源名来标示资源,被标示的资源能够被 Sentinel
保护起来。
以 order-service-demo
为例,其中的 saveOrder()
测试方法就是一个资源。如果没有做任何特殊配置,在默认情况下 Sentinel
控制台中会有一个 “/order/saveOrder” 的资源,这是一个以 URL
来标示的资源。在 Sentinel
控制台中,开发人员可以对这个资源进行流控、熔断的配置。除此之外,如果想做一些自定义配置,也可以通过 @SentinelResource
注解来标示一个资源,并自定义资源名称、配置降级方法,这个注解的使用并不复杂,读者可自行查看相关资料并使用。
使用 Sentinel
做资源保护主要有如下3个步骤。
-
定义资源。
-
定义规则。
-
检验规则是否生效。
先把可能需要保护的资源定义好,再配置规则。也可以理解为,只要有了资源,就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源,之后通过 Sentinel
对这个资源做相应的配置和保护。
规则
规则就是围绕资源的实时状态设定。Sentinel
支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则和热点参数规则。所有规则可以动态实时调整。
本节主要介绍流量控制规则。在做限流配置时,重要的属性及说明如表 11-2 所示。

同一个资源可以同时拥有多个限流规则,在检查规则时会依次检查。
这个知识点并不复杂,配置流量控制规则可以简单地理解为要拦截谁?要怎样拦截?拦截之后怎样处理?
比如,对 “/order/saveOrder” 资源做限流,先配置限流策略,默认是直接限流,即作用于当前资源,然后配置限流的阈值(count
),如配置 count=100
,即 QPS
大于 100
后的请求都会被拦截下来。拦截下来后要做什么呢?此时就需要配置流控效果(controlBehavior
),默认是快速失败,即直接拒绝超过阈值后的请求。
要拦谁? ——对 “/order/saveOrder” 资源的请求。 要怎样拦截? ——QPS 超过 100 就拦截。 拦截之后怎样处理? ——直接拒绝处理被拦截的请求。
这样通俗地解释一番后,读者应该对这个概念理解得更加透彻一些了。不过,刚刚提到的这个规则配置基本上使用的都是默认值,接下来介绍一些实际的示例并进行更为详细的解读。