Sentinel 是阿里巴巴开源的一款轻量级的流量控制和熔断降级工具,适用于微服务架构中的服务治理。它通过注解或者代码的方式,快速、灵活地实现服务的限流、熔断、降级等功能。
本文将介绍如何将 Sentinel 整合到 SpringCloud Alibaba 中,实现分布式流控和熔断降级。
环境准备
- JDK 8+
- Maven 3.5+
- SpringBoot 2.0+
- SpringCloud Alibaba 2.1+
- Sentinel 1.7+
步骤一:引入依赖
首先,在 SpringBoot 项目的 pom.xml
文件中,添加以下依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
步骤二:配置 Sentinel 控制台
Sentinel 支持通过控制台进行规则的管理和监控。首先,我们需要配置 Sentinel 控制台的地址:
spring:
cloud:
sentinel:
transport:
dashboard: http://localhost:8080
transport:
port: 8719
在上述配置中,dashboard
指定了 Sentinel 控制台的地址,port
指定了上报统计信息的端口。
步骤三:配置 Sentinel 规则
在需要进行流控和熔断降级的接口方法上,使用 Sentinel 提供的注解进行配置。例如,我们可以使用 @SentinelResource
注解来进行流控和熔断降级的配置:
@RestController
public class HelloController {
@GetMapping("/hello")
@SentinelResource(value = "hello", blockHandler = "handleBlock", fallback = "handleFallback")
public String hello() {
return "Hello Sentinel!";
}
public String handleBlock(BlockException ex) {
return "Flow control limit";
}
public String handleFallback() {
return "Fallback";
}
}
在上述代码中,@SentinelResource
注解中的参数 value
指定了资源名称,blockHandler
指定了流控规则被触发时的处理方法,fallback
指定了熔断降级规则被触发时的处理方法。
步骤四:启动 Sentinel 控制台和应用程序
首先,启动 Sentinel 控制台。可以通过运行以下命令启动 Sentinel 控制台:
java -jar sentinel-dashboard-1.7.0.jar
然后,在 IDE 中运行 SpringBoot 应用程序。访问 http://localhost:8080/hello
,可以看到 Hello Sentinel!
的输出。
步骤五:配置 Sentinel 规则持久化
当我们重新启动微服务时,之前配置的规则会丢失。为了解决这个问题,我们可以配置 Sentinel 的规则持久化。首先,在 bootstrap.yml
或 bootstrap.properties
中添加以下配置:
spring:
cloud:
sentinel:
datasource:
flow:
nacos:
server-addr: localhost:8848
dataId: ${spring.application.name}-flow-rules # 规则的 Data ID
groupId: DEFAULT_GROUP
data-type: json
authority-rules:
enabled: false
namespace-set: ${spring.cloud.sentinel.namespace:set-default-namespace}
在上述配置中,我们使用了 Nacos 作为配置中心,将规则持久化到 Nacos 数据库中。可以根据自己的需求,选择合适的持久化方式。
总结
通过以上步骤,我们成功地将 Sentinel 整合到 SpringCloud Alibaba 中,实现了分布式流控和熔断降级的功能。在实际的微服务架构中,我们可以根据需要,对各个接口方法进行灵活的流控和熔断降级配置,提高系统的稳定性和可用性。
参考链接:
本文来自极简博客,作者:夏日冰淇淋,转载请注明原文链接:SpringCloud Alibaba整合Sentinel