1、Sentinel通讯与降级背后的技术原理
2、Sentinel限流降级的规则配置
3、Sentinel熔断降级的规则配置
Sentinel Dashboard 是Sentinel的控制端,是新的限流与熔断规则的创建者
当内置在微服务的Sentinel Core(客户端)接收到新的限流、熔断规则后,微服务便会自动启用相应的保护措施
执行流程
1、Sentinel Core 与 Sentinel Dashboard建立连接
2、Sentinel Dashboard 向 Sentinel Core 下发新的保护规则
3、Sentinel Core 应用新的保护规则,实施限流、熔断等动作
* 前3个Slot为前置处理,用于收集、统计、分析必要的数据
* 后4个Slot为规则检验
* NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级
* ClusterBuildSlot 用于存储资源的统计信息以及调用者信息
* StaticSlot用于记录、统计不同维度的runtime信息
* SystemSlot则通过系统的状态,例如CPU、内存的情况,来控制总的入口流量
* AuthoritySlot则根据黑白名单,来做黑白名单控制
* FlowSlot则用于根据预设的限流规则,以及前面Slot统计的状态,来进行限流
* DegradeSlot则通过统计信息,以及预设的规则,来做熔断降级
Sentinel限流降级的规则配置
实现限流降级的核心是如何统计单位时间某个接口的访问量
常见的算法:1、计数器算法;2、漏桶算法;3、令牌桶算法;4、滑动窗口算法; Sentinel采用滑动窗口算法来统计访问量。
滑动窗口算法的理念是 将整段时间均分后独立计数再汇总统计
限流控制的界面操作
注:如果找不到URI,需要先访问一下,就会出现,原因是懒加载模式
资源名:要流控的URI,在Sentinel中URI被称为“资源”
针对来源:默认为default代表所有来源,可以针对某个微服务或者调用者单独设置
阈值类型:是按每秒访问量(QPS)还有并发数(线程数)进行流控
单机阈值:具体限流的数值是多少
链路模式 是check接口与list接口必须是在同一个调用链路中才会被限流
关联模式 是任意两个资源只要设置关联就可以进行限流
流控效果
指在达到流控条件后,对当前请求如何进行处理。快速失败、排队等等、Warm Up(预热)
假设现在有100个请求瞬间进入
1、单机QPS阈值=1,代表每1秒只能放行1个请求,其它请求队列等待,共需100秒处理完毕
2、单机QPS阈值=4,代表250毫秒匀速放心1个请求,其它请求队列等待,共需25秒处理完毕
3、单机QPS阈值=200,代表5毫秒匀速放行1个请求, 其它请求队列等待,共需0.5秒处理完毕
4、如果某个请求在队列中处于等待状态超过2000毫秒,则直接抛出BlockExcetion
Sentinel熔断降级的规则配置
当事务的状态达到某种“不可接受”的状况时,变回触发“熔断”。
如股市熔断:
熔断条件 就是大盘跌幅超过5%
熔断的措施 便是强制停止交易15分钟
微服务熔断:在某个服务接口在执行过程中频繁出现故障的情况,这种状态是“不可接受”的,立即对当前接口实施熔断。
熔断模式:慢调用比例、异常比例、异常数。