我们知道微服务分布式依赖关系错综复杂,比方说前端的请求转化为后端调用的服务请求,一个前端请求会转为成很多个后端调用的服务请求,那么这个时候后台的服务出现不稳定或者延迟,如果没有好的限流熔断措施,可能会造成用户体验的下降,严重的时候会出现雪崩效应,把整个网站给搞垮,如果向阿里巴巴在双11等活动中,如果没有一套好的限流熔断措施,这是不可想象的,可能是根本无法支撑那么大的并发容量。

netflix在2012年前也没有设计好的限流容错,当时也是饱受着系统稳定性的困扰,好几次网站因为没有好的熔断措施把网站搞垮,在2012年netflix启动了弹性工程项目,其中有一个产品叫hystrix,这个产品主要用来解决微服务的可靠性,有了这个系统之后,netflix在系统稳定性上上了一个大的台阶,在此之后就没有出现过大规模的雪崩事故

下面使用hystrix也例子来讲解一下限流熔断

几个概念:

熔断,隔离,限流,降级,这几个概念是分布式容错最重要的概念和模式。

熔断

如果说房子里面安装了电路熔断器,当你使用超大功率的电路时,有熔断设配帮你保护不至于出问题的时候把问题扩大化。

隔离

我们知道计算资源都是有限的,cpu,内存,队列,线程池都是资源,他们都是限定的资源数,如果不进行隔离,一个服务的调用可能要消耗很多的线程资源,把其他服务的资源都给占用了,那么可能出现应为一个服务的问题连带效应造成其他服务不能进行访问。

限流

让大流量的访问冲进去我们的服务时,我们需要一定的限流措施,比方说我们规则一定时间内只允许一定的访问数从我们的资源过,如果再大的化系统会出现问题,那么就需要限流保护。

降级

如果说系统后题无法提供足够的支撑能力,那么需要一个降级能力,保护系统不会被进一步恶化,而且可以对用户提供比较友好的柔性方案,例如告知用户暂时无法访问,请在一段时候后重试等等。

hystrix

hystrix就把上面说的 熔断,隔离,限流,降级封装在这么一个组件里面 下图是hystrix内部设计和调用流程

大致的工作流如下:
  1. 构建一个HystrixCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数
  2. 执行命令,Hystrix提供了几种执行命令的方法,比较常用到的是synchrous和asynchrous
  3. 判断电路是否被打开,如果被打开,直接进入fallback方法
  4. 判断线程池/队列/信号量是否已经满,如果满了,直接进入fallback方法
  5. 执行run方法,一般是HystrixCommand.run(),进入实际的业务调用,执行超时或者执行失败抛出未提前预计的异常时,直接进入fallback方法
  6. 无论中间走到哪一步都会进行上报metrics,统计出熔断器的监控指标
  7. fallback方法也分实现和备用的环节
  8. 最后是返回请求响应

博客地址:「微服务系列 13」熔断限流隔离降级

转载于:https://juejin.im/post/5cde87886fb9a07efe2d8a7b

「微服务系列 13」熔断限流隔离降级相关推荐

  1. 「微服务系列」统一网关Gateway

    为什么需要网关 网关功能: 身份认证和权限校验 服务路由.负载均衡 请求限流 在SpringCloud中网关的实现包括两种: Zuul:基于Servlet的实现,属于阻塞式编程. SpringClou ...

  2. 「微服务系列」微服务框架的介绍

    为什么要学习微服务框架知识? 从求知的角度.企业的角度,微服务都是必知必会的! 需要学习哪些微服务知识? 传统单点架构,无法承载高并发场景:微服务领域按功能模块,将应用拆分成多个服务.大型企业可能拆分 ...

  3. 微服务网关GateWay 过滤+路由+限流

    文章目录 1 微服务网关概述 2 微服务网关微服务搭建 3 微服务网关跨域 4 微服务网关过滤器 5 微服务网关限流 5.1 思路分析 5.2 令牌桶算法 5.3 网关限流代码实现 1 微服务网关概述 ...

  4. c++图的创建_「PS抠图系列13」通道混合器

    Hello,大家好,我是小申羊.很高兴又和大家见面啦! 这是PS抠图系列的第13篇文章. 1.写在前面 在上一篇文章中,着重讲解了钢笔工具在抠图中的一些常用操作,PS中的钢笔工具虽然没有Ai那么强大, ...

  5. 36、熔断-限流-降级

    目录 一.服务雪崩 二.熔断-限流-降级概述 三.熔断限流技术选型 四.sentinel限流 1 - 基于QPS限流 2 - Throttling策略 3 - sentinel预热/冷启动 五.sen ...

  6. 微服务架构之「 下一代微服务 Service Mesh 」

    点击上方"朱小厮的博客",选择"设为星标" 做积极的人,而不是积极废人 Service Mesh 被大家称为下一代的微服务,是微服务领域的一颗新星,被大家讨论的 ...

  7. 架构设计之「 微服务入门 」

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 奎哥 来源 | 不止思考 微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务.一方面这些团队确实很好的推动了微服务 ...

  8. 架构演进之「微服务架构」

    "为什么要搞「微服务架构」"?这也是我们当初讨论的聚焦点.现在天天把"微服务"挂在嘴边的人很多,但是有多少人真正深入思考过"为什么",我认为 ...

  9. 微服务之熔断、限流、降级 三板斧

    系列服务器开发 文章目录 系列服务器开发 前言 一.背景 二.熔断 三. 限流 四. 降级 五.三种措施的差异 总结 前言 Spring Cloud全家桶是提供的一整套微服务开源解决方案,包括服务注册 ...

最新文章

  1. 第九章 组合模型在信贷风控中的应用
  2. python 归并排序(详解)
  3. m_Orchestrate learning system---二十、如何写代码不容易犯错
  4. 对称加密算法 - Java加密与安全
  5. IE开发人员工具无法使用
  6. 算法总结-1算法入门
  7. Pycharm简单配置及详细快捷键介绍
  8. ibm招mysql_IBM-ETP实训之MySql基本命令总结
  9. LeetCode--62.不同路径(排列组合,动态规划)
  10. 内核中的notification chain浅析
  11. idea搭建java openCV环境
  12. python开发环境
  13. Pycharm中创建一个 Python 项目
  14. 2022-09-13 mysql列存储引擎-POC-查询数据错误追踪
  15. 无线射频识别的应用方案有哪些?
  16. 手机号正则表达式(含大陆港澳台)
  17. 璞华PLM为全场景产品生命周期管理赋能,助力产品主线的企业数字化转型
  18. Keil更改背景颜色
  19. 开源表单推荐:Tduck 填鸭 —— 表单收集器
  20. mysql数据库复合索引

热门文章

  1. Linux压缩命令总结
  2. 一步一步SharePoint 2007之三十七:在SharePoint中实现Workflow(3)——运行Workflow
  3. 2017年软件工程第四次作业-4每周例行报告
  4. 苹果要为app store速度奇慢付出代价
  5. Nessus 4.4 windows and linux 安装手册
  6. 关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
  7. 用“ul+li”及css制作韩国风格菜单
  8. python 跳过迭代_Python迭代和解析(4):自定义迭代器
  9. eclipse 自动生成代码
  10. SQL Server密码爆破工具SQLdict