压力测试术语之熔断、降级、限流

1、熔断、降级、限流


概念

目的

触发方

触发场景

解决方

处理方案

所有用户表现一致

用户表现
熔断 从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃 某个服务(下游服务)不可用 当失败的调用到一定阈值,如缺省是5秒内20次调用失败,就会启动熔断机制,自动触发 调用方 开启熔断之后,如何实现自动恢复?每隔一段时间,释放一个请求到服务端进行探测,如果后端服务已经恢复,则自动恢复 不一致 用户体验到的是某些功能暂时不可达或不可用
降级 为防止系统的整体缓慢甚至崩溃 服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉 整体负荷比较大,进行人工干预 调用方 取消降级 一致 用户体验到的是某些功能暂时不可达或不可用
限流 通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统 通过对进行限速来保护系统 超出了服务每分钟的调用量或服务的某个方法调用量 如果是由于当时压测并发数较高引起;视具体情况而定 调大阈值 一致 一旦达到限制速率则可以拒绝服务或

具体示例

熔断:

A -> B -> C,如果C出现问题了,那么B熔断了,则A就不用熔断了。

降级:

A -> B -> C,C服务存在C1、C2、C3、C4

1,如果C4优先级较低,一定是先降级优先级地的接口C4

2,如果服务链路整体没有性能特别差的点,比如就是外部流量突然激增,那么就从外到内开始降级。

3,如果某个服务能检测到自身负载上升,那么可以从这个服务自身做降级。

限流:

B只允许A以QPS<=5的流量请求,而C却只允许B以QPS<=3的qps请求,那么B给A的设定就有点大,上游的设置依赖下游。而且限流对QPS的配置,可能会随着服务加减机器而变化,最好是能在集群层面配置,自动根据集群大小调整。

2、QPS 与并发数 与响应时间

每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

QPS ( Query Per Second ):每秒钟request/事务 数量

并发数: 系统同时处理的request/事务数

并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。因此,并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量。这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。

响应时间:  一般取平均响应时间

QPS(TPS)= 并发数/平均响应时间    或者   并发数 = QPS*平均响应时间

上图横坐标是并发用户数。绿线是CPU使用率;紫线是吞吐量,即QPS;蓝线是时延。

开始,系统只有一个用户,CPU工作肯定是不饱合的。一方面该服务器可能有多个cpu,但是只处理单个进程,另一方面,在处理一个进程中,有些阶段可能是IO阶段,这个时候会造成CPU等待,但是有没有其他请 求进程可以被处理)。随着并发用户数的增加,CPU利用率上升,QPS相应也增加(公式为QPS=并发用户数/平均响应时间。)随着并发用户数的增加,平均响应时间也在增加,而且平均响应时间的增加是一个指数增加曲线。而当并发数增加到很大时,每秒钟都会有很多请求需要处理,会造成进程(线程)频繁切换,反正真正用于处理请求的时间变少,每秒能够处 理的请求数反而变少,同时用户的请求等待时间也会变大,甚至超过用户的心理底线。

3、TPS:Transactions Per Second

(每秒传输的事务处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)

TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。

4、PV UV 区别

PV(访问量):即Page View, 具体是指网站的是页面浏览量或者点击量,页面被刷新一次就计算一次。如果网站被刷新了1000次,那么流量统计工具显示的PV就是1000 。

UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。

一个UV可以用很多PV,一个PV也只能对应一个IP。比如,今天访问了一次你的网站,你的UV就加了1,我这次访问浏览了两个页面,你的PV就加2,我访问同一个页面,但刷新了一次,PV也是2.

5、cpu、内存、磁盘IO之间的关系

CPU:工人,干活的,判断以及逻辑处理

内存:车间,工人干活的地方,车间中加工原料,当车间中没有原料了,在从仓库中取原料,对原料进行加工 内存本身有一定的存储空间,对内存中的数据进行处理的速度比从硬盘取数据再处理的速度快很多

硬盘:仓库,原料,数据存储

CPU对数据进行判断以及逻辑处理,本身不能存储数据,这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读数据到内存,再对数据进行处理

就像人吃饭一样,cpu就是人,内存就是碗,硬盘就是饭锅!!

当cpu进程等待,会造成内存开销的增加,内存不够用的时候会用到虚拟内存,导致虚拟内存的增加,这时磁盘IO开销就会增加,系统态sy%提升,cpu开销增加,内存里数据不够用,才用磁盘中取数据.

原文地址:https://www.cnblogs.com/echoqi/p/10274620.html

时间: 2024-10-12 10:40:15

压力测试术语之熔断、降级、限流的相关文章

spring cloud 2.x版本 Gateway熔断、限流教程

前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 概术 在高并发应用中,缓存.限流.降级,是我们保护系统应用的三大利器.在开发一些api接口的时候,通常也会在网关层做限流控制,一方面是为了防止大量的请求是服务器过载,导致服务器不可用,另一方面也是防止其他人的恶习网络***. 常见的限流方式,如Hystrix的使用线程池隔离,超过线程池的负载走熔断的逻辑:也有通过滑动的时间窗口来控制流量. 常用的限流算法有,计数器算法.漏桶算法.令牌

熔断,限流,降级

https://www.cnblogs.com/raoshaoquan/articles/6636067.html https://www.cnblogs.com/DengGao/p/rateLimit.html https://blog.csdn.net/aa1215018028/article/details/81700796 https://www.jianshu.com/p/3463571febc2 https://www.jianshu.com/p/33f394c0ee2d https

SpringCloud Alibaba Sentinel实现熔断与限流

 官网:https://github.com/alibaba/Sentinel 中文:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D 下载:https://github.com/alibaba/Sentinel/releases                                  运行: 1  初始化演示工程 1.1 大纲: 1.2  创建cloudalibaba-sentinel-service8401 po

Spring Cloud微服务Sentinel+Apollo限流、熔断实战

在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实项目实践过程,这中间被不少网络Demo示例级别水文误导过,为了以正视听特将实践过程加以总结,希望能够帮到有类似需要的朋友! 一.Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高

聊聊微服务熔断降级Hystrix

在现在的微服务使用的过程中,经常会遇到依赖的服务不可用,那么如果依赖的服务不可用的话,会导致把自己的服务也会拖死,那么就产生了熔断,熔断顾名思义就是当服务处于不可用的时候采取半开关的状态,达到一定数量后就熔断器就打开.这就相当于家里边的保险丝,如果电压过高的话,保险丝就会断掉,起到保护电器的作用. 目前支持熔断,降级的就是Hystrix,当然还有resilience4j还有Sentinel.今天咱们以Hystrix为主吧.其他的大家可以自行研究. Hystrix主要实现三个功能,接下来咱们继续展

这个注解一次搞定限流与熔断降级:@SentinelResource

在之前的<使用Sentinel实现接口限流>一文中,我们仅依靠引入Spring Cloud Alibaba对Sentinel的整合封装spring-cloud-starter-alibaba-sentinel,就完成了对所有Spring MVC接口的限流控制.然而,在实际应用过程中,我们可能需要限流的层面不仅限于接口.可能对于某个方法的调用限流,对于某个外部资源的调用限流等都希望做到控制.呢么,这个时候我们就不得不手工定义需要限流的资源点,并配置相关的限流策略等内容了. 今天这篇我们就来一起学

Hystrix分布式系统限流、降级、熔断框架(二)

三.Hystrix容错 ???????Hystrix的容错主要是通过添加容许延迟和容错方法,帮助控制这些分布式服务之间的交互. 还通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供回退选项来实现这一点,从而提高系统的整体弹性.Hystrix主要提供了以下几种容错方法: 资源隔离 熔断 降级 1.资源隔离-线程池 2.资源隔离-信号量 线程池和信号量隔离比较 ? 线程切换 支持异步 支持超时 支持熔断 限流 开销 信号量 否 否 否 是 是 小 线程池 是 是 是 是 是 大 ???????

分布式系统中的限流与熔断

在应对秒杀.大促.双 11.618 等高性能压力的场景时,限流已经成为了标配技术解决方案,为保证系统的平稳运行起到了关键性的作用.不管应用场景是哪种,限流无非就是针对超过预期的流量,通过预先设定的限流规则选择性的对某些请求进行限流“熔断”. 1. 限流 1.1 单机限流 a>>限制并发量 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.con

Dubbo学习系列之十(Sentinel之限流与降级)

各位看官,先提个问题,如果让你设计一套秒杀系统,核心要点是啥???我认为有三点:缓存.限流和分离.想当年12306大面积崩溃,还有如今的微博整体宕机情况,感觉就是限流降级没做好,"用有限的资源响应过量请求"——这就是限流降级的核心.限流降级组件,当今开源界应该是Hystrix最为出名,这也得益于SpringCloud的流行,当然,挑战者总是有的,于是Sentinel横空出世,正因实际生产使用中似乎并不多见,所以才有必要拿来一用,不然就脱离了此系列文章的主旨了,就是要见些不一样的风景!