微服务守护神-Sentinel-流控规则
引言
书接上篇微服务守护神-Sentinel-概念,上面介绍了Sentinel相关概念,本篇就来看下Sentinel的流控规则。
流控规则
流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时
对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
资源名:唯一名称,默认是请求路径,可自定义
针对来源:指定对哪个微服务进行限流,默认指default,意思是不区分来源,全部限制
阈值类型/单机阈值:
QPS(每秒请求数量): 当调用该接口的QPS达到阈值的时候,进行限流
线程数:当调用该接口的线程数达到阈值的时候,进行限流
是否集群:是否需要集群
QPS流控
还有沿用之前订单与商品项目代码
@RestController
public class SentinelController {@RequestMapping("/sentinel1")public String sentinel1(){//模拟一次网络延时try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}return "sentinel1";}@RequestMapping("/sentinel2")public String sentinel2(){return "测试高并发下的问题";}
}
启动订单服务,多次访问/sentinel2接口,会在sentinel 客户端看到order-service 管理界面,接下来就是具体流控配置。
步骤1:簇点链路--->流控
步骤2:在单机阈值填写一个数值,表示每秒上限的请求数
这里阈值 3 表示单位时间内(1s) QPS超过3次,执行流控限制逻辑
步骤3:通过控制台快速频繁访问, 观察效果
线程数流控
线程流控配置跟QPS流程差不多,先删掉QPS的流控配置
步骤1:新增线程数流控
步骤2:启动Jemter压测工具,在Jmeter中新增线程
Jemter不会用参考这篇文章:微服务绕不过的坎-服务雪崩
步骤3:访问 http://localhost:8091/sentinel2 会发现已经被限流
启动压测工具, 然后再访问
此时肯定会有小伙伴问:QPS 方式跟线程数方式有啥区别?这个可以看这篇文章:微服务Sentinel流控难题:QPS模式与线程数模式区别
流控模式
点击上面设置流控规则的编辑按钮,然后在编辑页面点击高级选项,会看到有流控模式一栏。
所谓流控模式,就是流量控制的操作方式有哪些。
sentinel共有三种流控模式,分别是:
直接(默认):接口达到限流条件时,开启限流
关联:当关联的资源(接口/服务)达到限流条件时,开启限流 [适合做应用让步]
链路:当从某个接口过来的资源达到限流条件时,开启限流
直接流控模式
这个是默认模式, 上面我们演示QPS/线程数流控例子都是直接流控模式,请求达到设置流量阈值进行直接流控限制。
关联流控模式
关联流控模式指的是,当要关联的接口达到限流条件时,开启对当前接口开启限流。
啥意思?设想一种场景:电商项目中:用户下单与用户支付
假设用户下完单后会马上支付,如果某天支付服务非常繁忙,为防止整个项目因资源消耗被拖垮,配置当支付服务繁忙,限制下单。
这种场景就是关联流控, A接口与B接口存在联动(依赖)关系,比如:B调用A,当A接口出现高频访问,限制B接口调用。
沿用之前订单服务与商品服务案例
步骤1:在SentinelController.java中增加一个接口/sentinel3,重启订单服务
@RestController
public class SentinelController {@RequestMapping("/sentinel1")public String sentinel1(){//模拟一次网络延时try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}return "sentinel1";}@RequestMapping("/sentinel2")public String sentinel2(){return "测试高并发下的问题";}@RequestMapping("/sentinel3")public String sentinel3(){return "sentinel3";}}
步骤2:配置限流规则, 将流控模式设置为关联,关联资源设置为的 /sentinel2
在/sentinel3接口中配置关联接口:/sentinel2
步骤3:通过jmeter软件向/sentinel2连续发送请求,注意QPS一定要大于3
步骤4:访问/sentinel3,会发现已经被限流
sentinel3 接口关联sentinel2,它们为一体,当sentinel2接口超频访问,影响sentinel3的访问,这就是联动限制。
链路流控模式
链路流控模式指的是,当从某个接口过来的资源达到限流条件时,开启限流。
啥意思,解释一下:
链路:就是访问链条,请求到响应通过代码链。
比如下面:
链路1: trace1--->traceService
链路2: trace2--->traceService
链路流控模式可以对traceService资源做流控限制,设置限制入口资源为/trace2,意味着请求触发流控规则,如果是从/trace1访问进入的不处理,如果是从/trace2进来的,直接拒绝。
用代码演示一遍
步骤1:在shop-order-server项目的application.yml文件中新增如下配置
sentinel默认是不支持链路,需要提前开启
spring:cloud:sentinel:web-context-unify: false
步骤2:在shop-order-server项目中新增TraceServiceImpl.java
@Service
@Slf4j
public class TraceServiceImpl {@SentinelResource(value = "traceService")public void tranceService(){log.info("调用tranceService方法");}
}
步骤3:在shop-order-server项目中新增TraceController.java
@RestController
public class TraceController {@Autowiredprivate TraceServiceImpl traceService;@RequestMapping("/trace1")public String trace1(){traceService.tranceService();return "trace1";}@RequestMapping("/trace2")public String trace2(){traceService.tranceService();return "trace2";}
}
步骤4:重新启动订单服务并添加链路流控规则
步骤5:分别通过 /trace1 和 /trace2 访问, 发现/trace1没问题, /trace2的被限流了
流控效果
最后一个是sentinel的流控效果
sentinel总共设置了3个:
快速失败(默认): 直接失败,抛出异常,不做任何额外的处理,是最简单的效果
Warm Up:它从开始阈值到最大QPS阈值会有一个缓冲阶段,一开始的阈值是最大QPS阈值的
1/3,然后慢慢增长,直到最大阈值,适用于将突然增大的流量转换为缓步增长的场景。
排队等待:让请求以均匀的速度通过,单机阈值为每秒通过数量,其余的排队等待; 它还会让设
置一个超时时间,当请求超过超时间时间还未处理,则会被丢弃。
到这,sentinel的流控规则就结束了,如果想知道还有哪些控制逻辑,请听下回分解。
看文字不过瘾可以切换视频版:SpringCloud Alibaba 极简入门
微服务守护神-Sentinel-流控规则相关推荐
- Alibaba Sentinel | 流控规则设置
文章目录 一.Sentinel概述 强大的优势: 组成部分: 二.微服务集成Sentinel 版本说明 安装Sentinel控制台: 1.docke安装 2.jar安装 启动控制台 微服务集成Sent ...
- 什么?Sentinel流控规则可以这样玩?
点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 前言 上一篇文章中,我们讲解了关于 ...
- Sentinel流控规则
Sentinel流控规则 流控规则基本介绍 名词解释 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源) 阈值类型/单机阈 ...
- Spring Cloud Alibaba:Sentinel 流控规则
文章目录 1. 前言 2. 阈值类型 2.1 QPS 2.2 线程数 3. 流控模式 3.1 直接 3.2 关联 3.3 链路 4. 流控效果 4.1 快速失败 4.2 Warm Up 4.3 排队等 ...
- Sentinel流控规则简介_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0032
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上节,我们配置好了sentinel的监控,启动了一个微服务,看了效果 然后接下来我们去点击这个簇点 ...
- Sentinel流控规则_流控等待_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0037
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后再看一下流控等待这个流控的规则 其实就是,如果流量来了很多,然后,请求,会进行排队,如果超时了 ...
- Sentinel流控规则_QPS直接失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0033
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 好上节课,咱们说了一下流量控制的的介绍,下面咱们开始配置, 流控的规则,首先先看第一点,就是流控, ...
- Sentinel流控规则_预热_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0036
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面咱们说了流控的,直接失败,QPS流控和线程数流控,还有关联流控 然后这次咱们来说一下这个war ...
- Sentinel流控规则_线程数失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0034
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上节咱们说了,阀值类型是QPS,也就是一秒钟可以访问的次数,然后流控模式这里我们用的是直接,也就是 ...
- Sentinel流控规则_关联_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0035
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里我们再看这个关联的意思 当关联的资源达到阀值的时候就限流自己 比如我们设置支付接口达到阀值以后 ...
最新文章
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
- 幼儿园带括号算式口诀_记忆口诀丨有顺口溜加成的知识点瞬间好记一万倍!
- nodejs安装到d盘怎么使用npm_NodeJS、NPM安装配置步骤
- oracle19c xp安装 客户端_windows下安装oracle19c
- tshark过滤并保存包特定字段
- 音视频——Codec初始化及Omx组件创建
- python处理地震sac数据_自己开发的一个SEED格式地震数据转换为SAC格式数据,并完成世界时整天波形合并的Python脚本...
- masm5安装教程_小编为你演示win7系统使用masm5 0的操作步骤【详细说明】的恢复步骤...
- 察举科目-汉代察举制度的重要环节
- NVIDIA Maxine 姿势识别极简教程
- 2015年App Store审核被拒的23个理由
- 14张Python基础知识点总结思维导图配搭一份视频教程还不能入门?
- 重心在哪里(简单数学题)
- 人工智能——搜索策论2
- 实习总结-2017.5.2
- 微软运行库合集2021
- 针对 exchange 的杀毒软件
- CESIUM-加点操作,entity和primitive
- comsol三维随机裂纹 裂缝模型 随机纤维建模
- NSIS 运行bat的方法汇总
热门文章
- Autoit3--检测窗口变化PixelChecksum--软件自动化测试学习笔记
- Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)
- 考PMP证书需要经过哪些流程?
- tri_mode_ethernet_mac的Licence申请及rgmii时序的一些领悟
- (全栈旅行足迹地图打卡网站 0-1)-前端路由(Router)-05(WebGIS Vue-js-go-mysql)
- 文学教育杂志社2022年征稿启示
- 面向对象编程三大特征之一 继承
- 深圳网络信息安全员(NSACE初级)认证招生简章
- mini2440 linux内核编译与移植 课程设计,linux内核移植步骤-mini2440
- android 老人机模式,老人模式简单至上_小米 红米_手机Android频道-中关村在线