🐳Spring Cloud Alibaba Sentinel 实现熔断与限流
1. Sentinel概念
Sentinel是一款开源的流量控制组件,它提供了熔断、限流、降级等功能,可以保护微服务架构中的系统免受高并发请求的影响。在本篇博客中,我们将介绍如何使用Spring Cloud Alibaba Sentinel来实现熔断与限流。
2. 安装Sentinel控制台
Sentinel控制台是一个用于配置和管理Sentinel规则的可视化工具。在开始之前,我们需要先安装Sentinel控制台。
2.1 下载Sentinel控制台
💧在你的开发环境中选择一个合适的目录,执行以下命令下载Sentinel控制台:
git clone https://github.com/alibaba/Sentinel.git cd Sentinel
2.2 编译与运行
💧进入Sentinel控制台目录,执行以下命令进行编译:
./mvnw clean package
编译完成后,执行以下命令启动Sentinel控制台:
java -jar sentinel-dashboard/target/sentinel-dashboard.jar
2.3 访问控制台
💧在浏览器中访问http://localhost:8080
,你应该能够看到Sentinel控制台的登录页面。默认的用户名和密码都是sentinel
。
3. 初始化演示工程
💧为了演示Sentinel的熔断与限流功能,我们需要创建一个简单的Spring Cloud Alibaba工程。
3.1 创建工程
💧使用你习惯的方式创建一个新的Spring Cloud Alibaba工程,可以使用Spring Initializr或手动创建。
3.2 添加依赖
💧在pom.xml
文件中添加以下依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
3.3 配置文件
💧在application.properties
文件中添加以下配置:
# Sentinel控制台配置 spring.cloud.sentinel.transport.dashboard=localhost:8080 # 服务名称 spring.application.name=sentinel-demo
💧将localhost:8080
替换为你运行Sentinel控制台的地址和端口。
3.4 创建示例接口
💧创建一个简单的REST接口,用于演示Sentinel的熔断与限流功能。在一个新建的DemoController
类中,添加以下代码:
@RestController public class DemoController { @GetMapping("/hello") @SentinelResource("hello") public String hello() { return "Hello, Sentinel!"; } }
@SentinelResource("hello")
注解表示该接口受Sentinel保护,限制其访问频率。
3.5 启动工程
💧运行工程,确保工程能够成功启动。
4. 流控规则
💧在Sentinel控制台中,我们可以配置流控规则,以限制对受保护资源的访问频率。
4.1 创建流控规则
💧在Sentinel控制台中,点击左侧导航栏的"流控规则",然后点击右上角的"新增"按钮。
💧在弹出的对话框中,填写规则信息。例如,我们设置一个QPS阈值为10的规则。
4.2 验证流控规则
💧在浏览器中访问http://localhost:8080/hello
,你将看到接口返回的数据。继续刷新页面,当访问超过流控规则中设置的QPS阈值时,将会触发限流,接口将无法正常访问。
5. 服务降级
💧除了限流功能,Sentinel还提供了服务降级的功能,以应对异常情况下的服务调用。
5.1 创建降级规则
💧在Sentinel控制台中,点击左侧导航栏的"降级规则",然后点击右上角的"新增"按钮。
💧在弹出的对话框中,填写规则信息。例如,我们设置一个异常比例阈值为0.5的规则,即当接口调用的异常比例超过50%时,将触发降级。
5.2 验证降级规则
💧在浏览器中访问http://localhost:8080/hello
,你将看到接口返回的数据。在代码中,我们可以通过抛出异常来模拟服务调用失败的情况。
💧继续访问接口,并观察接口的返回结果。当接口调用的异常比例超过降级规则中设置的阈值时,接口将会返回降级的结果。
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(下):https://developer.aliyun.com/article/1390083?spm=a2c6h.13148508.setting.23.4fea4f0ervlqra