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

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

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

一、什么是雪崩效应

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

二、雪崩效应常见场景

  • 硬件故障:

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

  • 流量激增:

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

  • 缓存穿透:

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

  • 程序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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL常用命令大全(完整)「建议收藏」

    MySQL常用命令大全(完整)「建议收藏」打开Linux或MacOS的Terminal(终端)直接在终端中输入windows快捷键win+R,输入cmd,直接在cmd上输入1、mysql服务的启动和停止netstopmysqlnetstartmysql启动失败可按快捷键win+R,输入services.msc,找到MySQL服务器的名称启动2、登陆mysqlmysql(…

    2022年6月30日
    23
  • HTML布局方式Flex属性详解

    HTML布局方式Flex属性详解背景 flexbox 布局方式旨在容器中的元素在排版 对其 剩余空间处理的问题上提供一个高效的解决方式 无论子元素的大小是已知或未知 动态或者静态 flexbox 布局的思想就是通过改变子元素的长 宽 顺序来更好的利用容器的空间 而且 相比于规则的布局方式如 block inline flexbox 布局方式对于子元素的排列方向也是任意的 注意 flexbox 布局更加适合于应用组件或者小尺寸的布

    2025年7月20日
    3
  • SQL之视图与索引[通俗易懂]

    SQL之视图与索引[通俗易懂]SQL之视图与索引视图的定义、修改、使用索引的创建、查看视图人们在使用数据库时,并不是直接对数据源表进行操作,通常人们只关心源表的部分数据,因此为了使得用户在查询时方便,用不着在每次查询时都编写复杂的代码(比如连接等),可以事先将用户要使用的查询结果通过视图定义在数据库中,这样人们在进行查询时只需查看视图即可,简化了用户的操作,同时使得数据同源数据分离,提高了安全性。1.视图的创建语法:

    2022年7月22日
    10
  • cookie的设置与销毁

    cookie的设置与销毁

    2021年11月3日
    55
  • cubieboard上手

    cubieboard上手最近刚买了cubieboard,入手到玩转后的各个过程记录下购买链接:[url]http://item.taobao.com/item.htm?id=18271795262[/url]已有装备:笔记本,无线路由器入手装备:cubieboard,带电源,ttl2usb线等关键问题:无显示器与电视超市购物:读卡器+网线,(从手机上拿的TF卡)[siz…

    2022年7月22日
    12
  • 并查集例题_并查集算法

    并查集例题_并查集算法E – 带删除并查集 UVA – 11987 Almost Union-Find

    2022年4月20日
    38

发表回复

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

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