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

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

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

一、什么是雪崩效应

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

二、雪崩效应常见场景

  • 硬件故障:

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

  • 流量激增:

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

  • 缓存穿透:

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

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


相关推荐

  • python 文件描述符是什么_python程序设计第三版课后答案

    python 文件描述符是什么_python程序设计第三版课后答案【案例讲解】Python为什么要使用描述符?

    2022年4月22日
    48
  • MFC界面库BCGControlBar的介绍

    MFC界面库BCGControlBar的介绍英文原文:http://www.bcgsoft.com/bcgcontrolbarpro.htmBCGControlBar是MFC的一个扩展库其英文全称是”BusinessComponentsGalleryControlBar”,它允许你去创建像完全自定义的像MicrosoftOffice2000/XP/2003/2007/2010/2013and VisualStudio的界

    2022年7月14日
    34
  • B4j教程_ubuntu以太坊挖矿

    B4j教程_ubuntu以太坊挖矿Bminer产品介绍Bminer是目前最快的挖矿程序,Bminer是基于NVIDIAGPU深度优化的挖矿软件。Bminer支持Equihash和Ethash两种算法的虚拟币,包括:ETH(以太坊),ETC,ZEC(零币),ZCL,ZEN,HUSH,BitcoinPrivate,KMD,BitcoinGold(比特币黄金)等币种。挖Ethash的币,比如ETH(以太坊),ETC,Bminer仅…

    2022年10月15日
    3
  • Java基础篇:封装、继承、多态三大特性

    Java基础篇:封装、继承、多态三大特性

    2021年10月4日
    63
  • c语言实现大数运算_c语言标准库教程

    c语言实现大数运算_c语言标准库教程前言:通过前面的3篇文章我们已经实现了大数的四则运算,本篇博客我们会把这是几个个方法做成一个库文件,可以供自己日后使用。细心的读者可能意到了,每个程序都引用了big.h但是都被注释掉了。big.h就是头文件只要将函数的声明放到该文件中,然后在其它程序中引用该文件就可以使用大数运算的方法。重复的代码我就不再写了,其实有了算法你们自己就可以实现,所以我就简单的说几句。文件命名:头文件:b

    2022年10月7日
    4
  • TransactionScope事务级别

    TransactionScope事务级别在TransactionScope中默认的事务级别是Serializable,即在事务过程中,完全性锁表。别的进程不能查询,修改,新增,删除。这样会导致效率大大降低,虽然数据完整性很高。通常我们不需要那么高的数据完整性。所以需要修改默认的事务级别 所有的事务级别如下Chaos无法改写隔离级别更高的事务中的挂起的更改。ReadCommitted不可以在事务期间读取可变

    2022年7月19日
    13

发表回复

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

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