(一)Sentinel 简介
(1)随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel 以“流量”为突破口,在流量控制、熔断降级、负载保护等多个领域进行工作,保障服务可靠性。通俗:用来在微服务系统中保护微服务的作用,如何应对 服务雪崩 服务熔断 服务降级 就是用来替换 Hystrix;
(2)特性
- 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰、集群流量控制、实时熔断下游不可用应用等;
- 完备的实时监控:Sentinel 同时提供实时的监控功能,您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群汇总运行情况;
- 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架 / 库的整合模块,例如与 Spring Cloud、Dubbo、RPC 的整合,您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。
(二)Sentinel 下载安装
(1)下载地址:Sentinel版本地址
(2)我选择 sentinel-dashboard-1.8.1.jar
(3)移动到指定目录,通过运行 Jar 包的命令执行 sentinel-dashboard-1.8.1.jar
手动指定端口后台运行:nohup java -Dserver.port=8888 -jar sentinel-dashboard-1.8.1.jar > catalina.out 2>&1 &
查看日志命令:tail -f catalina.out
(4)浏览器地址栏:http://localhost:8888 输入默认的用户名和密码 sentinel 登记成功
(三)Sentinel 实时监控服务
(1)创建项目引入依赖
<!--引入nacos client 依赖,服务注册与发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--引入sentinel 依赖 服务监控--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
(2)配置文件中写配置
server.port=8789 # 指定服务名称【默认和应用名称同名】 spring.application.name=nacosclient # 1)先声明 nacos 的注册中心地址;2)服务发现【客户端】进行注册,引用的就是注册中心的地址; spring.cloud.nacos.server-addr=localhost:8848 spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} # 暴露所有web端点【 nacos client 需要和其他微服务做通信,需要健康检查】 management.endpoints.web.exposure.exclude=‘*‘ # sentinel dashboard 8888 外部访问仪表盘界面的端口 和 sentinel logs 8719 内部服务的通信端口 # 此时 nacos-client 服务调用时产生的日志信息就会传递给 sentinel 进行展示,进而对服务进行流量控制、熔断降级、负载保护 spring.cloud.sentinel.enabled=true spring.cloud.sentinel.transport.dashboard=localhost:8888 spring.cloud.sentinel.transport.port=8719
注意:项目启动后,该微服务会自动交给 Sentinel 流量卫兵进行管理,但是访问 Dashboard 界面查看服务监控,发现界面什么都没有?
默认情况下 Sentinel 为延迟加载,不会在启动之后立即创建服务监控,需要对服务进行调用时才会初始化;
也可以在微服务启动时,手动加入配置:spring.cloud.sentinel.eager=true 此时 Sentinel 立即加载该微服务,而非延迟加载。
(3)编写简单测试 demo
@RestController @Slf4j public class SentinelController { @GetMapping("/sentinel/test") public String test(){ log.info("sentinel test"); return "sentinel test "; } @GetMapping("/sentinel/test1") public String test1(){ log.info("sentinel test1"); return "sentinel test1 "; } }
(4)调用该微服务时,会出现 QPS 的调用量
(四)
Spring Cloud Alibaba Sentinel 初始
原文:https://www.cnblogs.com/blogtech/p/14458764.html