随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
本章节将实现sentinel控制台的下载及使用,再在前面的微服务项目中整合sentinel ,实现请求的监控。sentinel知识点较多,常用的有流量控制、流量整形、熔断降级等,将在后续逐步在项目中实现。
1,sentinel控制台下载及使用
sentinel控制台即sentinel dashboard,根据前面章节的版本管理可知,本项目使用的最新版spring cloud alibaba对应的sentinel组件版本如下:
github直接搜索sentinel,如下图:
找到对应的版本并下载
下载后是jar包,直接使用java -jar即可执行
-Dserver.port=8858:指定sentinel dashboard的端口
sentinel官方文档建议不要直接将sentinel控制台上生产使用,官方建议使用阿里收费的AHAS Sentinel 控制台,毕竟要盈利,小项目或学习sentinel dashboard够了,也可以自己改造
因此,在生产执行jar包时,会指定权限人员,多会在命令加上如下参数:
-Dsentinel.dashboard.auth.username=zhangsan(生产换成对应人员)
-Dsentinel.dashboard.auth.password=123456(生产的密码尽量复杂)
java -jar -Dserver.port=8858 -Dsentinel.dashboard.auth.username=zhangsan -Dsentinel.dashboard.auth.password=123456 E:\IdeaProjects\sentinel-dashboard-1.8.6.jar
执行后即可登录,本地路径:http://localhost:8858
未设置用户和密码情况下,初始默认用户和密码均未:sentinel,登录后如下图:
至此,sentinel控制台即可正常使用。后续在项目中整合sentinel和sentinel dashboard,在有请求行为时,会自动将对应的服务注册进控制台。
2,spring cloud alibaba整个sentinel和sentinel dashboard
当前项目两个模块【订单服务】【库存服务】后续都需要做降级和流控,故将sentinel依赖直接添加在父pom中,版本号已交由版本管理器<dependencyManagement>管理,可查看前文。引入后两个子微服务都将继承该依赖。
本节先实现sentinel dashboard的整合,sentinel限流、熔断等功能将在后续章节演示。如将【库存服务】整合控制台,引入上述依赖后,只需在添加如下配置即可:
spring.cloud.sentinel.transport.port
:端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了一个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。
spring.cloud.sentinel.transport.dashboard
:控制台启动时的端口。
配置成功后,调用【库存服务】的接口:
控制台会自动注册该资源,sentinel的重要指标:【资源】。所有的服务和接口都是资源,流控、降级等功能都是针对资源做限制。请求后查看控制台:
2024-09-05加:
1,sentinel控制台是独立的服务,故也可为服务命名,启动语句添加:-Dproject.name=sentinel-csdn。启动后未访问前即可看到该服务名。
2,记录本章时,stockService服务仅通过yml文件即可将服务注册进控制台,后续却无法注入,原因暂时未知,若后续弄明白,再来更新本章。当前使用方式,是在sentinel官网FAQ里的解决方法,stockService服务启动时,添加VM参数:
- 应用名称:-Dproject.name=stockService
- 控制台地址:-Dcsp.sentinel.dashboard.server=ip:port
- 服务端口(客户端端口):-Dcsp.sentinel.api.port=xxxx(可选,默认8719,冲突时会向后尝试)
实例VM参数如下:
如上操作完后,控制台如下: