我是靠谱客的博主 迷人柠檬,最近开发中收集的这篇文章主要介绍分布式服务之服务容错(Sentinel流控操作图解)Sentinel流控操作图解特别鸣谢:@Lucas ——麦子科技,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Sentinel流控操作图解

Sentinel前提

Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。

流量控制概念

流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:
在这里插入图片描述

流量控制角度

  1. 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
  2. .运行指标,例如 QPS、线程池、系统负载等;
  3. 控制的效果,例如直接限流、冷启动、排队等。

Sentinel(流控操作图解)

阈值类型(QPS)

一、 流控模式(直接)

1、QPS——直接——快速失败

在这里插入图片描述

注释

快速失败:直接抛出异常,界面收到提示:Blocked by Sentinel (flow limiting)com.alibaba.csp.sentinel.slots.block.flow.controller.DefaultController

2、QPS——直接——Warm Up

在这里插入图片描述

注释

warm up(预热):如果qps 10,预热时长10s 冷加载因子是3 从qps=10/3 开始控制流量,逐步达到10
冷启动(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。
比如设置的阈值为100,预热时间10s,冷加载因子是3,那最初的阈值时100/3,逐步加大阈值,10s后达到100。阈值大小决定了流量大小,也就是逐步释放请求流量进入系统,让系统“冷启动”。参考官方wiki 限流—冷启动
源码: com.alibaba.csp.sentinel.slots.block.flow.controller.WarmUpController
在这里插入图片描述如果QPS 10,预热时长10s 冷加载因子是3 从qps=10/3 开始控制流量,逐步达到10,postman设置delay 100ms 保证QPS 10 ,这样看到通过请求越来越多的。

3、QPS——直接——排队等待

在这里插入图片描述

注释

匀速器(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式。需要设置将阈值模式设置为QPS才能生效。这种方式严格控制了请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。参考官方wiki 流量控制-匀速排队模式
该方式的作用如下图所示:

在这里插入图片描述这种方式主要用于处理间隔性突发的流量,例如消息队列。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求——削峰填谷。
com.alibaba.csp.sentinel.slots.block.flow.controller.RateLimiterController
超时时间: 超时等待超过指定时间,则被限流。

二、 流控模式(关联)

注意

流控效果与上述基本一致,这里只介绍流控模式区别——关联

以:QPS——关联——快速失败为例

在这里插入图片描述

三、 流控模式(链路)

注意

流控效果与上述基本一致,这里只介绍流控模式区别——链路

以:QPS——链路——快速失败为例

在这里插入图片描述

Sentinel使用注意

  1. spring-cloud-starter-alibaba-sentinel 将所有开放的端点自动视作sentinel所要保护的资源;
  2. 懒加载的,请求之后才能出现数据;
  3. 规则默认是在应用(而非sentinel控制台)的内存中的,如果应用重启,则规则失效,后续通过扩展持久化;

特别鸣谢:@Lucas ——麦子科技

最后

以上就是迷人柠檬为你收集整理的分布式服务之服务容错(Sentinel流控操作图解)Sentinel流控操作图解特别鸣谢:@Lucas ——麦子科技的全部内容,希望文章能够帮你解决分布式服务之服务容错(Sentinel流控操作图解)Sentinel流控操作图解特别鸣谢:@Lucas ——麦子科技所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部