3-0服务雪崩原因解决方式案例模拟组件介绍

本文探讨了服务雪崩现象及其对微服务系统的影响,介绍了通过熔断、降级、隔离和缓存等策略来增强系统稳定性。同时,对比分析了Hystrix、Resilience4j和Sentinel三种服务容错组件的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 服务雪崩简介

分布式系统中,由于网络或自身原因,无法保证服务100%可用,如果一个服务出了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入(高并发),就会出现多条线程阻塞等待,进而导致服务瘫痪。
由于服务之间的依赖性,故障传播对整个微服务系统会造成灾难性的后果,这就是服务故障的雪崩效应。

注意1:服务熔断理解-https://zhuanlan.zhihu.com/p/59109569,在Hystrix中,对应配置如下

//滑动窗口的大小,默认为20
circuitBreaker.requestVolumeThreshold 
//过多长时间,熔断器再次检测是否开启,默认为5000,即5s钟
circuitBreaker.sleepWindowInMilliseconds 
//错误率,默认50%
circuitBreaker.errorThresholdPercentage

注意2:服务雪崩的理解-https://zhuanlan.zhihu.com/p/69866628

雪崩原因:
    1.服务提供者不可用(硬件故障,程序bug,缓存击穿,用户或代码逻辑大量重试)
    2.服务调用者不可用(同步等待造成的资源耗尽)
解决方式:
    1.降级:超时降级、资源不足降级(限流降级) --> 应用埋点配置中心监测进行开关降级
    2.隔离:线程池或信号量隔离,不会影响其他服务调用
    3.熔断:达到错误率(阈值)触发降级
    4.缓存
    5.请求合并

2 服务雪崩模拟步骤

2.1 yaml配置文件,设置tomcat最大访问线程数的值为10

  # 测试高并发场景,服务雪崩的雏形
server
  tomcat:
    max-threads: 10

2.2 原有order方法return之前先休眠2000ms

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

2.3 新增测试方法highConcurrency

    /**
     * 模拟服务雪崩的高并发测试方法
     */
    @RequestMapping("/order/highConcurrency")
    public String highConcurrency() {
        return "测试高并发";
    }

2.4 第一次访问highConcurrency看页面效果,通过jmeter工具设置循环100次1s请求20次原来的order方法,再请求highConcurrency方法看页面效果

3 服务容错组件简介

比较对象hystrixresilience4jsentinel
简介cloud提供的组件官方推荐替代hystrix的组件阿里组件
隔离策略线程池隔离/信号量隔离信号量隔离信号量隔离(并发线程数限流)
熔断降级策略基于异常比率基于异常比率、响应时间基于异常比率、响应时间、异常数
实时统计实现滑动窗口基于RxJavaRing Bit Buffer滑动窗口LeapArray
动态规则配置支持多种数据源有限支持支持多种数据源
扩展性插件的形式接口形式多个扩展点
基于注解的支持支持支持支持
限流有限支持rate limit基于QPS,支持基于调用关系的限流
流量整形不支持简单的Rate Limited模式支持预热模式、匀速器模式、预热排队模式
系统自适应保护不支持不支持支持
整形不支持简单的Rate Limited模式支持预热模式、匀速器模式、预热排队模式
系统自适应保护不支持不支持支持
控制台简单的监控查看不提供控制台,可对接其他监控系统提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值