限流、雪崩、熔断、降级

本文介绍了微服务架构中的限流机制,包括TPS的理解、服务间调用的限流方法,以及雪崩效应的定义。还详细讲解了熔断(隔离)的概念,如主动探测和被动状态上报,以及降级策略如何在高并发场景下保护服务稳定性。
摘要由CSDN通过智能技术生成

一、限流

1、什么是TPS

一般情况下,一个请求进来,服务端会从线程池中分配一个空闲线程供其使用。假设该服务A线程池最大数量为10,平均每个请求处理时长为10ms,有5个微服务A对外服务,则该服务A的最大TPS为5*1000,当请求数量每秒钟小于5000的时候,该服务完全能够对外服务。假设从历史情况来看,每秒种的请求数量维持在4500左右。当有一个服务宕机,这个时候四个微服务也能够对外提供4500的响应,因为每个请求有设计超时时间,超时时间的长短设计会影响成功率。但是当3个服务都宕机的时候,2个服务无法承载这么大的请求流量,这个时候就要对外限流了。
在这里插入图片描述

2、限流

当服务因为性能或者其他原因无法提供这么大并发量的时候,就需要考虑限流了。一般情况下,服务无法做到对自己做限流操作,一般由上游API网关、或者ESB做限流操作。例如ESB令牌的设计,令牌一般设置为下游服务所能提供的最大处理线程数量。有主调限流,调用方限流;被调限流,被调用方限流。

二、雪崩

1、什么时雪崩

在微服务之间进行通信服务调用时由于某一个服务故障,导致级联服务故障的现象叫做雪崩效应。雪崩效应描述的是服务方不可用,导致消费方不可用并将不可用逐渐放大的过程。比如如下服务调用过程:
在这里插入图片描述
用户服务,商品服务能够正常对位提供服务,但是库存服务因为某种原因响应比较慢或者服务有问题,当交易量增加的时候,库存服务因为无法经受这么大的交易量,而变得不可用,这会导致商品服务的请求也会变得阻塞,会慢慢耗尽商品服务的线程池资源,进而导致用户服务不可用。
所以微服务中雪崩产生的根本原因是在调用链路中链路的某一个服务因为响应时间过长,或者大规模出现异常导致自身服务不可用,并且将这种不可用进行放大的情况,就像雪崩一样。
当出现雪崩的时候可以对服务进行熔断或者降级来解决该现象。

三、熔断

1、什么是熔断(隔离)?

上游对下游做定时探测,当探测到下游服务不可用的时候,或者调用失败达到一定的比例时,触发自动熔断(隔离),把该服务从自己的可用列表中删除;当服务恢复的时候再把服务添加进来;探测的方法如下:
上游服务主动探测下游服务

  • 1、端口探测,发现端口存活就默认该服务是存活的,这种方法无法判断僵死的服务;
  • 2、接口探测,探测相应的接口,接口正常认为服务正常,这种方法无法判断僵死的服务;

下游服务主动向上游服务发送自己的状态
该探测方式能够判断僵死的服务,当上游接收不到状态的时候,上游会认为服务僵死;

四、降级

一个服务中可能会集成多个功能,当并发量增大的时候,比如双11,可以对服务做降级操作,即关闭一些不重要的功能或者服务,只留重要的功能或者服务对外提供服务。

Sentinel熔断降级限流是一种用于保护应用程序的机制,它可以防止应用程序不断执行可能失败的操作,并快速拒绝可能导致错误的调用。熔断降级规则是熔断降级机制的核心属性之一。\[1\] 熔断降级规则的配置可以通过在应用程序中设置相关属性来实现。例如,在Spring Cloud中,可以通过配置`spring.cloud.sentinel.transport.dashboard`属性来指定Sentinel控制台的地址,以及通过`management.endpoints.web.exposure.include`属性来开放管理端点。\[2\] 熔断降级机制的作用是在感知到下游服务的资源出现不稳定状态时,暂时切断对下游服务的调用,而不是一直阻塞等待服务响应。这样可以防止级联失败导致的雪崩效应,并保证系统的可用性。在微服务架构下,熔断降级机制尤为重要,可以保护后端不会过载。\[3\] 熔断降级规则包含一些核心属性,可以根据具体需求进行配置。这些属性包括但不限于超时时间、异常比例、最小请求数等。当资源被熔断降级后,在降级时间窗口内,对该资源的调用会自动返回降级数据。当检测到该节点的服务调用响应正常后,熔断机制会恢复调用链路。\[3\] 总结来说,Sentinel熔断降级限流是一种保护应用程序的机制,通过设置熔断降级规则来防止应用程序执行可能失败的操作,并在下游服务资源不稳定时暂时切断对下游服务的调用。这样可以防止级联失败导致的雪崩效应,并保证系统的可用性。熔断降级规则包含一些核心属性,可以根据具体需求进行配置。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [sentinel 限流熔断神器详细介绍](https://blog.csdn.net/a745233700/article/details/122733366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Sentinel服务流控、熔断降级](https://blog.csdn.net/m0_49183244/article/details/124273538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值