目录

前言

一、什么是Sentinel?

 Sentinel 的主要特性

Sentinel 的开源生态

二、Sentinel的核心功能

三、Sentinel 的主要优势与特性

1、丰富的流控规则

2、完善的熔断降级机制

3、实时监控和控制台

4、多数据源支持

5、扩展性强

四、Sentinel 与 Hystrix 的对比

五、Sentinel安装与使用

1、Sentineal 控制台下载与安装

2、给服务接入sentinel监控

总结


前言

随着微服务架构的普及,如何保证系统的高可用性和稳定性成为开发者必须面对的重要课题。阿里巴巴开源的 Sentinel 作为一款流量防护组件,提供了熔断、限流、降级等多种功能,帮助开发者提升系统的容错能力。本文将记录 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。也希望本文,能够帮助你们在微服务项目中轻松地集成和使用 Sentinel,提升系统的稳定性和容错能力。


一、什么是Sentinel

Sentinel 是阿里巴巴开源的流量防护组件,专注于流量控制和系统稳定性保护。它提供了丰富的功能,如限流、熔断降级、系统自适应保护、实时监控等,帮助开发者构建高可用和高稳定性的微服务系统。

中文官网:home | Sentinel (sentinelguard.io)

 Sentinel 的主要特性

SpringCloud Alibaba 微服务(四):Sentinel-LMLPHP

Sentinel 的开源生态

SpringCloud Alibaba 微服务(四):Sentinel-LMLPHP

二、Sentinel的核心功能

限流:通过多种流量控制策略,实现对热点数据、分布式请求等的限流。

熔断降级:根据调用错误比例、RT(响应时间)等指标,对不稳定的服务进行熔断,避免级联故障。

系统自适应保护:根据系统的负载情况,动态调整限流和熔断策略,保证系统在高负载下的稳定性。

实时监控:提供实时的监控与报警功能,帮助开发者及时发现和处理问题。

三、Sentinel 的主要优势与特性

1、丰富的流控规则

流量整形:支持匀速排队、预热、并发等多种流控策略。
热点参数限流:针对传入参数进行热点数据的限流保护。
系统自适应保护:根据系统的负载情况,动态调整限流和熔断策略。

 2、完善的熔断降级机制

基于错误比例:在指定时间窗口内,如果请求的错误比例超过阈值,则触发熔断。
基于响应时间:在指定时间窗口内,如果请求的平均响应时间超过阈值,则触发熔断。

3、实时监控和控制台

实时监控:提供对实时流量、调用关系、链路流量等多维度的监控。
控制台:通过可视化的 Dashboard,实时配置和管理限流、熔断规则。

4、多数据源支持

规则动态更新:支持从 Nacos、Apollo、ZooKeeper 等多个数据源动态加载和更新规则。

5、扩展性强

SPI 扩展:提供 SPI 扩展点,可以自定义流控、熔断、降级等策略。

四、Sentinel 与 Hystrix 的对比

Sentinel 和 Spring Cloud Hystrix 都是优秀的服务保护工具,但各有特点。Sentinel 提供了更丰富的限流策略、动态规则配置和实时监控功能,并且具有更高的扩展性。相比之下,Hystrix 在熔断和降级方面也有较好的表现,但由于Hystrix进入维护模式,其社区活跃度和新特性支持有所降低。

在选择时,可以根据具体需求和项目特点进行权衡。如果需要更强的限流能力、动态规则配置和实时监控,建议选择 Sentinel。如果项目已经使用 Hystrix 并且稳定运行,也可以继续使用 Hystrix。

五、Sentinel安装与使用

1、Sentineal 控制台下载与安装

下载地址:Releases · alibaba/Sentinel (github.com)

选择jar包下载

SpringCloud Alibaba 微服务(四):Sentinel-LMLPHP

通过CMD命令运行

java -jar sentinel-dashboard-1.8.8.jar

如下图所示,则已启动成功。

访问地址:localhost:8080

账号密码:都是sentinel

SpringCloud Alibaba 微服务(四):Sentinel-LMLPHP

2、给服务接入sentinel监控

引入依赖

<!-- sentinel -->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
   <version>${spring-cloud-alibaba.version}</version>
</dependency>

如果版本不对的话,运行会报错,sentinel依赖时与web依赖形成循环依赖。

附上完整的maven依赖

<properties>
     <maven.compiler.source>17</maven.compiler.source>
     <maven.compiler.target>17</maven.compiler.target>
     <!-- spring boot -->
     <spring-boot.version>2.7.5</spring-boot.version>
     <!-- spring cloud -->
     <spring-cloud.version>2021.0.1</spring-cloud.version>
     <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
     <spring-cloud-starter-alibaba-nacos-config.version>2.1.4.RELEASE</spring-cloud-starter-alibaba-nacos-config.version>
</properties>

配置sentinel

server:
  port: 9090

spring:
  application:
    name: demo-user
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.85:8848
        namespace: demo
      config:
        server-addr: 192.168.1.85:8848
        prefix: ${spring.application.name}
        file-extension: yml
        namespace: demo
    sentinel:
      transport:
        dashboard: localhost:8080    #配置sentinel dashboard地址

总结

本文介绍了 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。Sentinel 提供了丰富的流量控制和系统保护功能,帮助开发者提升系统的容错能力和稳定性。希望通过本文的学习,能够帮助你更好地理解和使用 Sentinel,提升微服务项目的稳定性和容错能力。

07-29 20:10