随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel具有如下特性:
-
丰富的应用场景:承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀,可以实时熔断下游不可用应用;
-
完备的实时监控:同时提供实时的监控功能。可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况;
-
广泛的开源生态:提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合;
-
完善的 SPI 扩展点:提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。
Sentinel控制台是一个轻量级的控制台应用,它可用于实时查看单机资源监控及集群资源汇总,并提供了一系列的规则管理功能,如流控规则、降级规则、热点规则等。
我们先从官网下载Sentinel,这里下载的是sentinel-dashboard-1.7.0.jar
文件,下载地址:https://github.com/alibaba/Sentinel/releas
下载完成后在命令行输入如下命令运行Sentinel控制台:
java -jar sentinel-dashboard-1.7.0.jar
Sentinel控制台默认运行在8080端口上,登录账号密码均为sentinel
,通过如下地址可以进行访问:http://localhost:8080
Sentinel控制台可以查看单台机器的实时监控数据。
这里我们创建一个sentinel-service模块,用于演示Sentinel的熔断与限流功能。
在pom.xml中添加相关依赖,这里我们使用Nacos作为注册中心,所以需要同时添加Nacos的依赖:
org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
org.springframework.cloud
spring-cloud-starter-openfeign
在application.yml中添加相关配置,主要是配置了Nacos和Sentinel控制台的地址:
server:
port: 8401
spring:
application:
name: sentinel-service
cloud:
nacos:
配置Nacos地址
server-addr: http://localhost:8848
sentinel:
transport:
配置Sentinel dashborad地址
dashboard: http://localhost:8080
port: 8719
service-url:
user-service: http://nacos-user-service
management:
endpoints:
web:
exposure:
include: ‘*’
Sentinel Starter 默认为所有的 HTTP 服务提供了限流埋点,我们也可以通过使用@SentinelResource来自定义一些限流行为。
创建RateLimitController类
用于测试熔断和限流功能。
@RestController
@RequestMapping(“/rateLimit”)
public class RateLimitController {
/**
-
按资源名称