当前位置:实例文章 » JAVA Web实例» [文章]SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

SpringCloudAlibaba微服务实战系列(四)Sentinel熔断降级、异常fallback、block细致处理

发布人:shili8 发布时间:2025-02-17 08:43 阅读次数:0

**SpringCloudAlibaba微服务实战系列(四)**

在前面的文章中,我们已经讲解了 SpringCloudAlibaba 的基本概念、配置中心、负载均衡等内容。今天我们要讲解的是 Sentinel 熔断降级、异常 fallback 和 block 的细致处理。

###1. Sentinel 简介Sentinel 是一个用于流量控制和熔断的 Java 框架,能够保护服务不被过多请求破坏。它可以帮助我们实现服务的限流、降级、负载均衡等功能。

###2. 熔断降级熔断是指当系统接收到大量请求时,为了防止系统崩溃,会主动关闭某些服务或接口,以免进一步的请求导致系统崩溃。Sentinel 提供了两种方式来实现熔断:一种是基于资源的熔断(Resource-Based),另一种是基于链路的熔断(Link-Based)。

####2.1 基于资源的熔断基于资源的熔断是 Sentinel 中最常用的方式。我们可以在配置文件中定义一个或多个资源,指定其对应的熔断规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window


在上面的配置中,我们定义了一个资源 `test`,其对应的熔断规则是:当接收到10 次请求后,立即触发熔断。

####2.2 基于链路的熔断基于链路的熔断是 Sentinel 中较新的方式。我们可以在配置文件中定义一个或多个链路,指定其对应的熔断规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window


在上面的配置中,我们定义了一个链路 `test`,其对应的熔断规则是:当接收到10 次请求后,立即触发熔断。

###3. 异常 fallback异常 fallback 是指当系统接收到某个请求时,为了防止系统崩溃,会主动返回一个预定义的响应,以免进一步的请求导致系统崩溃。Sentinel 提供了两种方式来实现异常 fallback:一种是基于资源的 fallback(Resource-Based),另一种是基于链路的 fallback(Link-Based)。

####3.1 基于资源的 fallback基于资源的 fallback 是 Sentinel 中最常用的方式。我们可以在配置文件中定义一个或多个资源,指定其对应的 fallback 规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window fallback: true


在上面的配置中,我们定义了一个资源 `test`,其对应的 fallback 规则是:当接收到10 次请求后,立即触发 fallback。

####3.2 基于链路的 fallback基于链路的 fallback 是 Sentinel 中较新的方式。我们可以在配置文件中定义一个或多个链路,指定其对应的 fallback 规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window fallback: true


在上面的配置中,我们定义了一个链路 `test`,其对应的 fallback 规则是:当接收到10 次请求后,立即触发 fallback。

###4. blockblock 是指当系统接收到某个请求时,为了防止系统崩溃,会主动阻塞该请求,以免进一步的请求导致系统崩溃。Sentinel 提供了两种方式来实现 block:一种是基于资源的 block(Resource-Based),另一种是基于链路的 block(Link-Based)。

####4.1 基于资源的 block基于资源的 block 是 Sentinel 中最常用的方式。我们可以在配置文件中定义一个或多个资源,指定其对应的 block 规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window block: true


在上面的配置中,我们定义了一个资源 `test`,其对应的 block 规则是:当接收到10 次请求后,立即触发 block。

####4.2 基于链路的 block基于链路的 block 是 Sentinel 中较新的方式。我们可以在配置文件中定义一个或多个链路,指定其对应的 block 规则。

properties# sentinel.propertieseureka.client.sentinel.enabled=trueeureka.client.sentinel.flowControlEnabled=trueeureka.client.sentinel.droolsRuleEnabled=true# sentinel-rule-definition.yml- name: "test"
 grade:1 count:10 strategy: fixed-window block: true


在上面的配置中,我们定义了一个链路 `test`,其对应的 block 规则是:当接收到10 次请求后,立即触发 block。

### 总结本文讲解了 Sentinel 熔断降级、异常 fallback 和 block 的细致处理。通过阅读本文,读者可以了解 Sentinel 中熔断降级、异常 fallback 和 block 的基本概念和配置方法。

其他信息

其他资源

Top