Sentinel 是阿里巴巴开源的一款高可用防护组件,主要用于分布式系统中的流量控制、熔断降级和系统负载保护。它在 Java 微服务架构中扮演着重要的角色,帮助开发者确保系统的稳定性和可靠性。
以下是 Sentinel 的一些关键特性:
-
流量控制(Flow Control):通过对请求进行限流,防止系统被突发流量压垮。支持多种限流策略,如基于 QPS(每秒查询率)、并发线程数等。
-
熔断降级(Circuit Breaking):当某个资源的错误率或响应时间超过设定的阈值时,自动触发熔断,暂时阻止对该资源的访问,以避免故障蔓延。熔断后可以设置自动恢复机制。
-
系统负载保护(System Adaptive Protection):根据系统的整体负载情况(如 CPU 使用率、内存使用率等),动态调整限流策略,确保系统在高负载情况下仍能平稳运行。
-
实时监控(Real-time Monitoring):提供丰富的监控功能,可以实时查看系统的流量、响应时间、错误率等指标,帮助开发者及时发现和解决问题。
-
规则管理(Rule Management):支持通过控制台、API 等多种方式灵活配置和管理限流、熔断等规则,方便运维人员进行动态调整。
-
扩展性(Extensibility):提供了丰富的 SPI(Service Provider Interface),允许开发者根据自身需求进行扩展和定制。
Sentinel 通常与 Spring Cloud 和 Dubbo 等微服务框架集成使用,通过简单的配置即可实现对微服务的全面保护。在实际应用中,Sentinel 可以帮助开发者提高系统的健壮性,减少因流量激增或服务故障导致的系统崩溃风险。
参考 Sentinel-Wiki
微服务集成 Sentinel
<!-- 容错组件sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
安装 Sentinel 控制台
下载 jar 包,解压,直接使用jar命令启动项目:
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar
yml 配置
在里面加入有关控制台的配置:
完整配置:
server:
port: 8071
spring:
application:
name: service-admin
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///dgut?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=true
type: com.alibaba.druid.pool.DruidData