目录
前言
随着微服务架构的普及,如何保证系统的高可用性和稳定性成为开发者必须面对的重要课题。阿里巴巴开源的 Sentinel 作为一款流量防护组件,提供了熔断、限流、降级等多种功能,帮助开发者提升系统的容错能力。本文将记录 Sentinel 的核心功能及其在 Spring Cloud 中的集成和使用。也希望本文,能够帮助你们在微服务项目中轻松地集成和使用 Sentinel,提升系统的稳定性和容错能力。
一、什么是Sentinel?
Sentinel 是阿里巴巴开源的流量防护组件,专注于流量控制和系统稳定性保护。它提供了丰富的功能,如限流、熔断降级、系统自适应保护、实时监控等,帮助开发者构建高可用和高稳定性的微服务系统。
中文官网:home | Sentinel (sentinelguard.io)
Sentinel 的主要特性
Sentinel 的开源生态
二、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包下载
通过CMD命令运行
java -jar sentinel-dashboard-1.8.8.jar
如下图所示,则已启动成功。
访问地址:localhost:8080
账号密码:都是sentinel
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,提升微服务项目的稳定性和容错能力。