Alibaba中Sentinel骨架的示例分析
Sentinel是阿里巴巴开源的一个分布式系统的流量控制、熔断降级框架,可以在服务运行期间实时监控服务的状态,对服务进行动态的自我保护。其中包含Sentinel核心库、Sentinel Dashboard(可视化监控)和Sentinel-Go网关等多个组件。本文主要分析Sentinel骨架的示例。
Sentinel骨架是一个Spring Boot项目,通过集成Sentinel提供流量控制、熔断降级、系统保护等功能,并提供Restful API进行实时监控。主要包含以下模块:
1. sentinel-core:Sentinel核心库,提供Sentinel的核心功能,包括流量控制、熔断降级、系统保护。
2. sentinel-dashboard:Sentinel可视化监控组件,提供实时流量监控、熔断降级状态查看、规则配置等功能。
3. sentinel-spring-cloud-gateway-adapter:Sentinel-Go网关适配器,通过集成Sentinel-Go网关,实现流量控制、熔断降级等功能。
4. sentinel-demo:示例应用,主要演示Sentinel核心功能的使用和配置方法。
接下来我们分析一下sentinel-demo模块。
1. 启用Sentinel
在sentinel-demo中,我们需要在启动类中添加@EnableCircuitBreaker、@EnableDiscoveryClient和@EnableFeignClients注解,以启用Sentinel的熔断降级和服务注册发现功能。
在application.yml文件中,我们也需要添加如下Sentinel配置,以启用流量控制:
spring:
cloud:
sentinel:
enabled: true
datasource:
ds1:
url: jdbc:mysql://localhost:3306/sentinel?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# 这里设置自动初始化表结构
prepare-db: true
2. 配置流量控制规则
在demo应用中,我们可以通过在Nacos配置中心添加流量控制规则,或者通过在应用的resources目录下添加sentinel-rules.properties文件,来配置流量控制规则。
示例配置如下:
# 针对该接口,QPS 设置为 5 hello-service: com.alibaba.cloud.sentinel.feign.SentinelFeignClientTests#hello(java.lang.String): 5 # 针对该接口,50% 的请求进行熔断 fallback: com.alibaba.cloud.sentinel.feign.SentinelFeignClientTests#fallback(java.lang.Throwable): 0.5 # 针对该 HTTP 地址,QPS 设置为 1 httpbin-host: http://httpbin.org:80; com.alibaba.cloud.sentinel.feign.SentinelFeignClientTests#helloHttpbin(): 1
其中:
- hello-service:指定了一个Feign客户端的接口hello,QPS设为5。
- fallback:表示该接口有50%的请求进行熔断处理。
- httpbin-host:表示http://${httpbin-host}/get访问QPS设为1。
这样我们就可以在Sentinel Dashboard上看到应用的流量控制规则和实时监控情况了。
以上就是Sentinel骨架的示例分析,在实际项目中,我们可以通过集成Sentinel实现流量控制、熔断降级、系统保护等功能,保证服务的稳定性和可靠性。
