1. Sentinel界面介绍
Sentinel界面主要分为功能区以及展示区,左边的主要是每个服务相对应的服务调控规则,如:流控,熔断,热点,系统规则等,而右边则是展示区,主要展示相对应功能的观察以及操作页面。
实时监控: 主要是监控一些资源的实时状态,如:接口的响应时间,接口访问的成功以及一个线形展示界面,这个界面主要是展示某个时间段的资源访问情况
簇点链路: 主要是展示指定客户端资源的运行情况,分为树状以及列表俩种模式。
流控规则: 主要是监控应用流量的 QPS 或并发线程数等指标,并设置相关的阈值
熔断规则: 与Hystrix的熔断基本一样,用来预防服务调用超时等错误从而导致服务崩溃等情况
热点规则: 可以使规则设置详细到参数,用来设置参数规则的
系统规则: 主要用来监控系统的资源使用情况,大部分作用于Linux系统
授权规则: 主要是针对Sentinel系统登录用户的权限使用情况
2. 流控规则
2.1 界面介绍
Sentinel流控规则主要是针对每个资源的访问次数,时间等信息来进行调整与控制,其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
资源名: 唯一的名称,默认是路径名,就是说这个规则是加到哪个接口或者方法的
针对来源: Sentinel可以针对服务调用者来进行限流,可以填相关的微服务名,默认是default(不区分来源)
阈值类型/单机阈值:
-
QPS:每分钟的请求数量,当这个资源的每分钟请求数量达到阈值时,进行限流
-
并发线程数:当调用该api的线程数达到阈值时,进行限流,线程数只有流控模式,并没有流控效果,线程数与QPS类似,但他们是不同的
-
不同点:QPS与线程数的区别在于,QPS模式是接收了所有的请求,但只执行一个,而线程数则是只接收一个请求,其他请求不接受。
流控模式:
- 直接:api达到限流阈值时,直接限流
- 关联:当关联的资源达到阈值时,就将自己限流。比如:A接口关联了B接口,当B达到阈值时,就降A限流
- 链路:只记录指定链路上的链路的流量当达到阈值时限流
流控效果:
- 快速失败:直接失败,抛出异常,返回相关的提示信息
- Warm up:预热模式,根据codeFactor的值,默认是3,从阈值/codeFactor开始,经过预热时长,才达到设置的QPS阈值
- 排队等待:严格控制请求通过的时间,让请求可以以均匀的速度通过,对应的是漏桶算法
2.2 效果测试
前提: 搭建好测试项目,可参考:https://blog.csdn.net/I_am_fine_/article/details/124564895
2.2.1 测试QPS-直接-快速失败
设置流控规则: 阈值设为1,表示该接口一秒钟只能触发一次,超过则直接限流
测试结果: 以刷新的方式来模拟调用
2.2.2 测试QPS-直接-WarmUP
设置流控规则:</