什么是限流、熔断和降级

服务降级限流熔断

在进入正题之前,有个问题,分布式系统中肯定会遇到服务雪崩效应,这个服务雪崩效应是什么呢?
下面这幅图可以说明这个问题

服务雪崩图

商品详情展示服务会依赖商品服务, 价格服务,商品评论服务,调用三个依赖服务会共享商品详情服务的线程池,如果其中的商品评论服务不可用(超时,代码异常等等), 就会出现线程池里所有线程都因等待响应而被阻塞, 从而造成服务雪崩。
概况一下就是:因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,就叫服务雪崩效应,这句话应该很好理解,就不过多的解释了。
到这里就知道了雪崩的原因是服务提供者的不可用导致的,那么什么是导致服务提供者的不可用呢?无非就这么几点:大流量请求(高并发),提供者硬件问题,缓存击穿,程序的bug,超时等等
到这里想想怎么解决?第一个想到的就是,重试,当服务的提供方不可用时,重试无形中增加了提供方的压力,所以重试不可取。
到这里瓶颈了,再想想是不是哪里有问题,服务雪崩的根本原因到底是什么?
应该是:

大量请求线程同步等待造成的资源耗尽

当服务调用者使用同步调用的时候,会产生大量的等待线程占用系统资源,一旦线程资源被耗尽,
服务调用者提供的服务也将处于不可用状态,于是服务雪崩效应产生了!

知道了根本原因,问题来了,怎么解决呢?这里才入正题,是不是引子有些长?

解决方案

1,超时机制
2,服务限流
3,服务熔断
4,服务降级

超时机制

如果我们加入超时机制,例如2s,那么超过2s就会直接返回了,那么这样就在一定程度上可以抑制消费者资源耗尽的问题

服务限流

通过线程池+队列的方式,通过信号量的方式。比如商品评论比较慢,最大能同时处理10个线程,队列待处理5个,那么如果同时20个线程到达的话,其中就有5个线程被限流了,其中10个先被执行,另外5个在队列中

服务熔断

这个熔断可以理解为我们自己家里的电闸。
当依赖的服务有大量超时时,在让新的请求去访问根本没有意义,只会无畏的消耗现有资源,比如我们设置了超时时间为1s,如果短时间内有大量请求在1s内都得不到响应,就意味着这个服务出现了异常,此时就没有必要再让其他的请求去访问这个服务了,这个时候就应该使用熔断器避免资源浪费

服务降级

有服务熔断,必然要有服务降级。
所谓降级,就是当某个服务熔断之后,服务将不再被调用,此时客户端可以自己准备一个本地的fallback(回退)回调,返回一个缺省值。 例如:(备用接口/缓存/mock数据),这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强,当然这也要看适合的业务场景

微服务从零到一 什么是限流、熔断和降级相关推荐

  1. Spring-Cloud 微服务网关Zuul、ZuulFilter过滤器和限流

    微服务网关 一. Zuul网关 1. 创建工程 并导入依赖 2. application.yml 配置文件 3. 启动类添加注解 4. 依次启动服务 5. 进入浏览器访问测试 二. ZuulFilte ...

  2. 深度好文 — 微服务和API网关限流熔断实现关键逻辑思路

    来源:https://www.toutiao.com/i6853970319745483275/?group_id=6853970319745483275 今天准备谈下微服务架构和API网关中的限流熔 ...

  3. 微服务架构之限流熔断

    微服务架构之限流熔断 1 高并发下如何保证高可用 1.1 什么是高并发? 高并发(High Concurrency)是一种系统运行过程中遇到的一种"短时间内遇到大量操作请求"的情况 ...

  4. 儒猿秒杀季!微服务限流熔断技术源码剖析与架构设计

    疯狂秒杀季:49元秒杀 原价 299元 的 <微服务限流熔断技术源码剖析与架构设计课> 今天 上午11点,仅 52 套,先到先得! === 课程背景 === 成为一名架构师几乎是每个程序员 ...

  5. 秒杀项目之网关服务限流熔断降级分布式事务

    目录 一.网关服务限流熔断降级 二.Seata--分布式事务 2.1 分布式事务基础 2.1.1 事务 2.1.2 本地事务 2.1.3 分布式事务 2.1.4 分布式事务场景 2.2 分布式事务解决 ...

  6. 【云原生】服务限流熔断概述、常见限流算法

    文章目录 1.服务雪崩 1)服务熔断 2)服务降级 3)服务熔断降级的几种常见方案 1> 平均响应时间 2> 异常比例 3> 异常数量 2.限流概述 1)为什么要有限流? 2)DDo ...

  7. 高可用服务设计之二:Rate limiting 限流与降级

    <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...

  8. 抖音服务器维护播放为零,抖音作品为什么播放为零 账号是不是被官方限流屏蔽了...

    为什么在抖音发布了新作品却没有人看?很多人想知道自己的账号是不是被官方限流屏蔽了?小编教你如何判断抖音号是不是作废了,一起来看看吧. 1.怎么样确定抖音号已废? 如何你的播放量下降了,还不继续好好运营 ...

  9. SpringCloud微服务组件:Sentinel限流熔断

    点击关注公众号,实用技术文章及时了解 前言 什么是雪崩问题? 微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况. 解决雪崩问题的常见方式有四种: 超时处理:设定超时时间,请 ...

最新文章

  1. 通过这12张手绘图,搞懂什么是微服务架构
  2. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点
  3. winform groupbox控件放到窗体中间位置
  4. 2017-9-17pat甲级 B
  5. 12月中国域名服务商Top20市场份额解析(图)
  6. [nRF51822] 3、 新年也来个总结——图解nRF51 SDK中的Button handling library和FIFO library...
  7. 07-图6 旅游规划 (25 分)
  8. git reset后本地拉取_Git 代码防丢指南
  9. 《天天数学》连载00:序言
  10. 设计可扩展的应用程序
  11. excel模糊匹配两列文字_如何使用Power Pivot进行模糊匹配
  12. 【DFS + 记忆化递归】LeetCode 140. Word Break II
  13. VC++动态链接库编程之MFC规则DLL
  14. Layui图片上传限制一张的问题
  15. vue邮箱验证正则表达式错误:Unterminated regular expression
  16. 【机器人学习】MPU6050数据的换算
  17. 小小靖Java成长日记02
  18. 如果你认为高端红酒与普通红酒成份是一样的话,我也可以告诉你...
  19. 柳比歇夫时间管理法 | 让你的时间管理更有效率
  20. twitter三方登录的实现

热门文章

  1. 京东双11超级工程:AI成为交易平台备战主力
  2. 开心_小段子(笑笑更健康)
  3. 深圳索尼激光工程投影机案例
  4. Go语言之sync.Pool
  5. 【计算机网络】【自顶向下课后习题-4】
  6. MD毛豆新发现--友链平台
  7. 大家好,怎样对网站做优化?都有哪些手段? (谷歌)
  8. 敬伟PS教程:掌握篇B01初级抠图、B02制图操作、B03图层样式、B04工具介绍
  9. 武汉理工智能车工作室2022招新视频
  10. pcie转sata3硬盘不启动_星三角启动:星型启动正常,转三角型启动后电机异响不转的原因...