微服务架构下存在的 '雪崩' 问题

在微服务架构中, 一个请求需要调用多个服务是非常常见的. 如客户端访问订单服务, 而订单服务需要调用库存服务, 库存服务需要调用配送服务, 由于网络原因或者自身的原因, 如果订单服务或者配送服务不能及时响应, 订单服 务将处于阻塞状态, 直到库存服务配送服务响应. 此时若有大量的请求涌入, 容器的线程资源会被消耗完毕, 导致服务瘫痪. 服务与服务之间的依赖性, 故障会传播, 造成连锁反应, 会对整个微服务系统造成灾难 性的严重后果, 这就是服务故障的“雪崩”效应.

雪崩效应是微服务架构中一定存在的问题, 雪崩是系统中的蝴蝶效应导致其发生的原因多种多样, 有不合理的容量设计, 或者是高并发下某一个方 法响应变慢,亦或是某台机器的资源耗尽。从源头上我们无法完全杜绝雪崩源头的发生, 但是雪崩的根 本原因来源于服务之间的强依赖, 所以我们可以提前评估, 做好 隔离,熔断, 限流.

服务隔离

顾名思义, 它是指将系统按照一定的原则划分为若干个服务模块, 各个模块之间相对独立, 无强依赖. 当有故障发生时, 能将问题和影响隔离在某个模块内部, 而不扩散风险, 不波及其它模块, 不影响整体 的系统服务.

服务熔断

熔断这一概念来源于电子工程中的断路器(Circuit Breaker). 在互联网系统中, 当下游服务因访问压 力过大而响应变慢或失败, 上游服务为了保护系统整体的可用性, 可以暂时切断对下游服务的调用. 这 种牺牲局部, 保全整体的措施就叫做熔断.

服务降级

所谓降级, 就是当某个服务熔断之后, 服务器将不再被调用, 此时客户端可以自己准备一个本地的 fallback回调, 返回一个缺省值. 也可以理解为兜底~

熔断和降级通常是一起发生的, 两者目的都是为了保持自身服务的可用性, 在其它服务存在问题时而不会发起调用.

服务限流

限流可以认为服务降级的一种, 限流就是限制系统的输入和输出流量已达到保护系统的目的. 一般来说 系统的吞吐量是可以被测算的, 为了保证系统的稳固运行, 一旦达到的需要限制的阈值, 就需要限制流 量并采取少量措施以完成限制流量的目的.比方: 推迟解决, 拒绝解决, 或者者部分拒绝解决又或者使用MQ这种中间件排队解决等等.

SpringCloud Hystrix和阿里的Sentinel可以用来解决上述讨论的服务限流, 熔断, 降级等问题.

微服务架构下的 服务熔断, 降级, 限流相关推荐

  1. 微服务架构下的服务调用与鉴权——某保险公司微服务平台实施案例分享

    2019独角兽企业重金招聘Python工程师标准>>> 转载本文需注明出处:EAWorld,违者必究. 引言: 根据保险行业发展趋势,目前保险交易已经呈现高频化.碎片化.场景化等特点 ...

  2. K8S 在微服务架构下做服务注册中心的一种思路

    K8S 在微服务架构下做服务注册中心的一种思路 使用 K8S 的 Service 和 DNS: 每个微服务 都在 K8S 中创建一个 Service ,名起名比如: user.xingren.host ...

  3. 微服务架构下的服务关联图

    2019独角兽企业重金招聘Python工程师标准>>> 在微服务架构下,服务之间的关系是非常复杂的,是一个典型的有向有环图,在一个中等规模的项目中,一般会有100多个服务,而大型项目 ...

  4. mysql微服务查询问题_【mysql】微服务架构下跨服务查询的聚合有什么好的方案?...

    微服务架构中,每个服务都有自己的独立数据库. 然而现在有个需求,需要生成一张实时的报表,该报表包含两个服务的数据. 如服务A,服务B.B中仅包含A的主键id作为关联. 而此报表的搜索条件包含A服务实体 ...

  5. 不能再让服务这么任性的被访问啦---分布式服务熔断降级限流利器至Hystrix

    全文概览 文章目录 为什么需要hystrix 特色功能 项目准备 接口测试 业务隔离 线程隔离 信号量隔离 服务降级 触发条件 不足 服务熔断 服务限流 请求合并 HystrixCollapser 工 ...

  6. 如何在微服务架构下进行数据设计?

    作者:唐建法 && Mongoing中文社区 来自:http://www.mongoing.com/ 微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微 ...

  7. Service Mesh微服务熔断、限流的骚操作

    在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断.限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一. 那么什么是熔断.限流?在传统Spring ...

  8. 玩转Service Mesh微服务熔断、限流骚操作

    在微服务架构中,随着服务调用链路变长,为了防止出现级联雪崩,在微服务治理体系中,熔断.限流作为服务自我保护的重要机制,是确保微服务架构稳定运行的关键手段之一. 那么什么是熔断.限流?在传统Spring ...

  9. golang bufio.newscanner如何超时跳出_Golang微服务的熔断与限流

    (给Go开发大全加星标) 来源:Che Dan https://medium.com/@dche423/micro-in-action-7-cn-ce75d5847ef4 [导读]熔断和限流机制对于大 ...

最新文章

  1. 在同一台电脑上同时安装Python2和Python3
  2. NX机制及绕过策略-ret2libc
  3. Nifty File Lists for Mac(文件列表创建工具)
  4. ReSIProcate环境搭建
  5. wyse WES系统操作
  6. ibatis java配置文件,ibatis学习-sqlMap.xml配置文件 | 学步园
  7. Redis笔记(六)Redis的消息通知
  8. Redis master和slave是如何实现数据同步的
  9. PHP导出CSV文件出现乱码的解决方法
  10. Asp.net发布网站
  11. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
  12. Atitit 接受post raw数据目录1. 接受get参数 11.1. //req.query只能拿到get参数 //post请求使用 body-parser拿到 12. 原生expre
  13. matlab画中国地图深浅,科学网—MATLAB绘制中国地图 - 栾威的博文
  14. win10设置透明任务栏
  15. CMMI 知识扫盲篇
  16. 一部手机必须能用 7 年?苹果、三星、Google:三年支持差不多!
  17. 修复图片移入移出抖动错位bug
  18. ROS学习笔记9 —— launch文件
  19. [AAM-GCN Neurocomputing2021] Attention adjacency matrix based graph convolutional networks for skele
  20. Python 罗德里格矩阵的空间坐标转换——两组公共点求所属坐标系的旋转矩阵与平移矩阵

热门文章

  1. 计算机视觉-相机参数标定
  2. 三个一样的字,你认识几个?
  3. FPGA学习:timescale简介
  4. 计算机运维相关专业知识考试,计算机项目运维人员考什么证书
  5. 达芬奇工具链的建立(工程编译步骤DM6446)
  6. ProPlusWW.msi
  7. eav java_产品变体 - 如何建模?希望不是EAV?
  8. 计算机基础及ms office应用,全国一级计算机基础及MSOffice应用.pdf
  9. JAVA开发GPau_最后完善的JAVA WEB服务器源代码
  10. Ubuntu系统目录下各文件夹功能介绍【转载】