,由于hystrix官方已经停止维护了,目前spring-cloud推荐使用resilience4j来代替hystrix实现熔断、限流。,熔断一般指客户端调用服务端接口出现异常时客户端侧的处理,当然也可以是服务端的处理出现异常时熔断快速返回,可以暂时切断对下游服务的调用,是一种牺牲局部保全整体的有效措施(同时此客户端也可能是服务端)。,限流一般是指限制在指定时间间隔内的请求量,避免因请求过多导致服务崩溃,限流被看作是服务端的自我保护能力。,模拟一个客户端,通过feign调用一个服务端接口来模拟此功能。,使用spring-boot的版本为2.7.3,spring-cloud版本为2021.0.4,关键的依赖如下:,增加feign客户端请求类并需要增加fallback方法处理熔断后的默认返回,简单写一个测试类完成测试,观察对应的参数情况。,运行结果如下:,
,简单分析一下,滑动窗口的大小slidingWindowSize为7,滑动窗口类型slidingWindowType为计数器,熔断器从打开到半开的状态等待时间为5秒,熔断器半开状态下允许的数量permittedNumberOfCallsInHalfOpenState为6。,failureRateThreshold的含义:如60(即%60),这个阈值控制两个状态的变化,从CLOSE=>OPEN时,表示当错误率高于60%时开启熔断,而状态从HALF_OPEN=>CLOSE时,表示当错误率低于60%时关闭熔断。,
,使用一个服务端的接口简单模拟一下限流的方式,如设定5秒内最多10个请求,观察异常情况。,同样是使用spring-boot的版本2.7.3,spring-cloud版本2021.0.4进行模拟。,可以适当减少单元测试的休眠时间,观察发生限流的情况。
© 版权声明
文章版权归作者所有,未经允许请勿转载。