目录
1.官网
2.主要作用
3.安装启动
3.功能详细
3.1实时监控
3.2 簇点链路
3.3流控规则
3.4熔断规则
3.4热点key限流
3.5系统规则
4.@SentinelResource注解解释
1.官网
gitHub
GitHub - alibaba/Sentinel: A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
中文
介绍 · alibaba/Sentinel Wiki · GitHub
2.主要作用
高配版的Hystrix,可以降级熔断等,且配置更高。
3.安装启动
下载
Releases · alibaba/Sentinel · GitHub
启动 java -jar 对应jar包 ps:端口是8080,注意启动端口不要被占用
登录账号 sentinel 密码 sentinel
导入响应依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
yml配置文件
spring:
application:
name: cloudalibaba-sentinel-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
sentinel:
transport:
dashboard: localhost:8080
port: 8719 #默认8719,应用与Sentinel控制台交互的端口,应用本地会起一个该端口占用HttpServer
第一次启动如果端口未被调用,则没有办法通过可视化界面进行查看。
启动之后界面
3.功能详细
3.1实时监控
查看监控的访问情况
3.2 簇点链路
3.3流控规则
创建流控规则
3.4熔断规则
慢调用比例:选择满调用比例需要设置最大RT ,如果反应时间超过最多大RT则,记录慢调用为1反之则不记录,如果慢调用比例的个数比系统总调用的比例大于异常的占比则发生熔断。
异常比例和异常个数同理。
3.4热点key限流
热点表示为经常访问的数据,很多时候对热点数据中访问频率最高的Top K数据,对其访问进行限制,
补充:
系统默认和客户都安自定义两种
@HystrixCommand => @SentinelResource
@SentinelResource 其中有两个参数资源名,降级方法
3.5系统规则
Load自适应:系统load1作为引发指标,进行自适应系统保护,档系统超过响应的启发值时候会出现保护。
CPU usage(1.50+版本):当cpu超过阈值的时候触发保护
平均RT: 当单台机器所有入口流量的平均RT超过阈值触发系统保护,单位是毫秒。
并发线程数:当单台机器所有入口刘翔的并发线程达到阈值触发系统保护
入口QPS:当单台机器上所有入口流量的QPS达到阈值的时候进行保护
补充QPS和TPS区别:
QPS表示每秒查询量 QPS=并发量/平均响应时间 并发量=QPS*平均响应时间
TPS表示每秒传输的事务处理个数,软件测试测量单位。
4.@SentinelResource注解解释
官网:注解支持 · alibaba/Sentinel Wiki · GitHub
该注解不支持private方法,与@SentinelResource注解作用类似
@RequestMapping("/fallback/{id}")
@SentinelResource(value = "byFallbackName",blockHandler = "handleException",
blockHandlerClass = CustomerBlockHandler.class,
fallback = "handleException2",fallbackClass = CustomerBlockHandler.class,
exceptionsToIgnore=IllegalArgumentException.class
)
public CommonResult fallback(@PathVariable("id") Long id) {
if (id == 4) {
throw new IllegalArgumentException ("IllegalArgumentException,非法参数异常....");
}
注解参数
value ="资源名"
blockHandler使用降级方法
blockHandlerClass 引用降级方法的处理类 方法必须是static,否则无法解析
fallbackClass为对应类的class对象,对应的函数必须为static
fallback和defaultFallback若同时配置,只能有fallback会生效
blockHandler+fallback 同时存在,配置违规,代码也有异常先走配置文件的降级处理
execeptionsToIgnore 这只特定已成不需要降级处理