欢迎访问宙启技术站
智能推送

Alibaba中Sentinel骨架的示例分析

发布时间:2023-05-18 03:37:17

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实现流量控制、熔断降级、系统保护等功能,保证服务的稳定性和可靠性。