什么是雪崩效应?雪崩效应常见场景及应对策略

什么是雪崩效应?雪崩效应常见场景及应对策略一、什么是雪崩效应分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,对于同步调用,当会员服务不可用时,订单服务请求线程被阻塞,当有大批量请求调用会员服务时,最终可能导致整个会员服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。​二、雪崩效应常见场景硬件故障:如剔除坏盘抖动,服务器宕机,网络抖动,机房断电,光纤被挖断等;流量激增:如异常流量,重试加大流量等;缓存穿透:短时间内大量缓存失效时,大

大家好,又见面了,我是你们的朋友全栈君。

一、什么是雪崩效应

分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图, 对于同步调用,当会员服务不可用时,订单服务请求线程被阻塞,当有大批量请求调用会员服务时, 最终可能导致整个会员服务资源耗尽,无法继续对外提供服务。并且这种不可用可能沿请求调用链向上传递,这种现象被称为雪崩效应。
在这里插入图片描述

二、雪崩效应常见场景

  • 硬件故障:

如剔除坏盘抖动,服务器宕机,网络抖动,机房断电,光纤被挖断等;

  • 流量激增:

如异常流量,重试加大流量等;

  • 缓存穿透:

短时间内大量缓存失效时,大量的缓存不命中,使请求直击后端服务,造成服务提供者超
负荷运行,引起服务不可用;

  • 程序BUG:

如程序逻辑导致内存泄漏,
JVM长时间FullGC,流量高峰期执行定时任务等;

  • 同步等待:

服务间采用同步调用模式,同步等待造成的资源耗尽。

三、雪崩效应应对策略

针对造成雪崩效应的不同场景,可以使用的应对策略,参考如下:

  • 硬件故障:

多机房容灾、异地多活等;

  • 流量激增:

服务自动扩容、流量控制(限流、关闭重试)等;

  • 缓存穿透:

缓存预加载、缓存异步加载等;

  • 程序BUG:

修改程序bug、及时释放资源、定时任务分散到流量低峰时执行等;

  • 同步等待:

资源隔离、MQ解耦、不可用服务调用快速失败等。资源隔离通常指不同服务调用采用不同的线程池;不可用服务调用快速失败一般通过熔断器模式结合超时机制实现。

四、Netflix Hystrix

Hystrix,中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。本文所说的 Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力,实现了容错和自我保护。
Netflix Hystrix是SOA/微服务架构中提供服务隔离、熔断、降级机制的工具/框架。
Netflix Hystrix是断路器的一种实现,用于高微服务架构的可用性,是防止服务出现雪崩的利器。
在这里插入图片描述

本文是SpringCloud微服务架构教程的课件文档,如需要全套Spring全家桶微服务架构师教程请评论或私信联系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158641.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Charles抓包使用记录

    Charles抓包使用记录Charles抓包使用记录Charlse在Windows系统和Mac使用的不同点Charlse在Windows系统和Mac使用的不同点Windows和Mac上的使用方式基本上没有太大差异,但是对于https安全证书的安装还是有一些不同的,在Windows上安装之后需要在控制面板中找到证书管理页面,界面如下将证书到处到本地,然后再导入到“受信任的根证书颁发机构”。…

    2022年5月26日
    37
  • java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决

    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决

    2020年11月12日
    192
  • Anaconda+PyQt5+PyCharm开发并生成.exe可执行文件[通俗易懂]

    Anaconda+PyQt5+PyCharm开发并生成.exe可执行文件[通俗易懂]一、安装Anaconda软件二、安装PyCharm软件三、安装PyQt5Anaconda软件自带PyQt,但是安装不完整,开发时可能会遇到问题。因此,最好自己重新完整安装一遍。1.打开AnacondaPrompt终端界面2.安装pyqt5输入以下命令安装:pipinstallpyqt5如果以上命令安装不成功的话使用镜像安装,执行命令:pipinsta…

    2022年8月28日
    0
  • 语义分割如何做标注_语义分割转实例分割

    语义分割如何做标注_语义分割转实例分割在进行Segmentation训练之前需要准备训练集和验证集,本文将要来介绍如何使用LabelMe进行标记。LabelMe是个可以绘制多边形、矩形、圆形、直线、点的一套标记工具,可用于分类、目标检测、语义分割、实例分割任务上的数据标注。1.label安装与数据标注首先安装LabelMe,我使用Anaconda进行安装。打开AnacondaPrompt执行以下指令:pipinstalllabelme接着输入labelme会出现以下UI介面,点选OpenDir选择要标记的图片资料

    2022年8月23日
    8
  • Java入门基础学习总结[通俗易懂]

    Java入门基础学习总结[通俗易懂]基础(Basics)打开CMD的方式:1.开始+系统+命令提示符2.Win键+R输入cmd打开控制台(推荐使用)3.在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口4.资源管理器的地址栏前面加上cmd一个空格路径常用的Dos命令#盘符切换D:冒号需用英文模式#查看当前目录下的所有文件dir#切换目录cdchangedirectorycd.. 返回上级目录#清理屏幕cls(clearscreen)#退出终端exit#查看电脑的i

    2022年7月8日
    21
  • idea查看激活码_通用破解码

    idea查看激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号