Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
Sentinel核心分为两个部分:
核心库(Java 客户端):能够运行于所有 Java 运行时环境,同时对Dubbo /Spring Cloud 等框架也有较好的支持。
控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。
微服务调用链路中的某个服务故障,引起整个链路中所有微服务都不可用,这就是雪崩。
设定超时时间,请求超过一定时间没有相应就返回错误信息,不会无休止的等待。
该方法只能缓解,不能根本解决问题。
限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离
有断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
显示业务访问的QPS,避免服务因流量的突增而故障。
属于预防手段。
微服务调用链路中的某个服务故障,引起整个链路中所有微服务都不可用。
如何避免因瞬间高并发流量而导致服务故障- 流量控制
- 超时处理
- 线程隔离
- 降级熔断
Sentinel是分布式系统的流量卫兵,Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。是阿里巴巴开源的一款微服务流量控制组件。
官网地址:https://sentinelguard.io/zh-cn/index.html
Sentinel具有以下特征:
访问官网:https://github.com/alibaba/Sentinel/releases
sentinel-dashboard-1.8.4.jar
运行端口默认是8080
java -jar sentinel-dashboard-1.8.4.jar # 设置参数尤其是指定端口,必须两个都指定 nohup java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.4.jar &
命令详解:
1.nohup command & #在后台运行 2.-Dserver.port=8858 #设置sentinel dashboard服务端口是8858 3.-Dcsp.sentinel.dashboard.server=localhost:8858 :# 指定要被哪个控制台监控(这里指定的是自己监控自己) 4.-Dproject.name=sentinel-dashboard # 指定实例名称(名称会在控制台左侧以菜单显示) #5,6不设置的时候初始账号密码都是sentinel 5.-Dsentinel.dashboard.auth.username=sentinel # 设置登录的帐号为:sentinel 6.-Dsentinel.dashboard.auth.password=123456 # 设置登录的密码为:123456新建start.bat
@echo off cd E:Program FilesJavajdk1.8.0_131bin java -jar -Xms256m -Xmx256m -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=127.0.0.1:8858 E:devsentinelsentinel-dashboard-1.8.4.jar pause访问
localhost:8080,默认的账号密码是sentinel
参考:https://blog.csdn.net/Blueeyedboy521/article/details/124599844
docker run --name sentinel -p 8858:8858 -d bladex/sentinel-dashboard:latest
2. 配置控制台地址com.alibaba.cloud spring-cloud-starter-alibaba-sentinel
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080 # sentinel控制台地址
3.访问微服务的任意端点,触发sentinel监控
比如访问http://localhost:8088/order/101
如果出现sentinel 簇点链路为空白–不显示资源
sentinel 必须跟微服务处在同一个局域网中。
因为 sentinel 机器列表里显示的服务IP地址为内网地址。
(While Nacos 可以在内网,也可以在外网)
正确的如下:



