Sentinel中的基本概念

我们已经成功地把微服务接入 Sentinel 控制台,接下来就可以在 Sentinel 控制台里设置流控规则了。在此之前,笔者介绍一下 Sentinel 中的几个重要概念。

资源

资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,如由应用程序提供的服务,或者由应用程序调用的其他应用提供的服务,甚至可以是一段代码。在大部分情况下,可以使用方法签名、访问 URL,甚至服务名称作为资源名来标示资源,被标示的资源能够被 Sentinel 保护起来。

order-service-demo 为例,其中的 saveOrder() 测试方法就是一个资源。如果没有做任何特殊配置,在默认情况下 Sentinel 控制台中会有一个 “/order/saveOrder” 的资源,这是一个以 URL 来标示的资源。在 Sentinel 控制台中,开发人员可以对这个资源进行流控、熔断的配置。除此之外,如果想做一些自定义配置,也可以通过 @SentinelResource 注解来标示一个资源,并自定义资源名称、配置降级方法,这个注解的使用并不复杂,读者可自行查看相关资料并使用。

使用 Sentinel 做资源保护主要有如下3个步骤。

  1. 定义资源。

  2. 定义规则。

  3. 检验规则是否生效。

先把可能需要保护的资源定义好,再配置规则。也可以理解为,只要有了资源,就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源,之后通过 Sentinel 对这个资源做相应的配置和保护。

规则

规则就是围绕资源的实时状态设定。Sentinel 支持以下几种规则:流量控制规则、熔断降级规则、系统保护规则、来源访问控制规则和热点参数规则。所有规则可以动态实时调整。

本节主要介绍流量控制规则。在做限流配置时,重要的属性及说明如表 11-2 所示。

image 2025 04 18 12 34 12 047
Figure 1. 表11-2 限流配置的重要属性

同一个资源可以同时拥有多个限流规则,在检查规则时会依次检查。

这个知识点并不复杂,配置流量控制规则可以简单地理解为要拦截谁?要怎样拦截?拦截之后怎样处理?

比如,对 “/order/saveOrder” 资源做限流,先配置限流策略,默认是直接限流,即作用于当前资源,然后配置限流的阈值(count),如配置 count=100,即 QPS 大于 100 后的请求都会被拦截下来。拦截下来后要做什么呢?此时就需要配置流控效果(controlBehavior),默认是快速失败,即直接拒绝超过阈值后的请求。

要拦谁?
——对 “/order/saveOrder” 资源的请求。
要怎样拦截?
——QPS 超过 100 就拦截。
拦截之后怎样处理?
——直接拒绝处理被拦截的请求。

这样通俗地解释一番后,读者应该对这个概念理解得更加透彻一些了。不过,刚刚提到的这个规则配置基本上使用的都是默认值,接下来介绍一些实际的示例并进行更为详细的解读。