Hystrix
目录
1.前言
1.1 什么是服务雪崩
服务雪崩的本质:线程没有及时回收。
不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩
1.2 服务雪崩怎么解决
1.2.1 修改调用的超时时长(不推荐)
将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服务可用
优点:非常简单,也可以有效的解决服务雪崩
缺点:不够灵活,有的服务需要更长的时间去处理(写库,整理数据)
1.2.2 设置拦截器
2.Hystrix 简介
熔断器,也叫断路器!(正常情况下 断路器是关的 只有出了问题才打开)用来保护微服务不雪崩的方法。思想和我们上面画的拦截器一样。
Hystrix 是 Netflix 公司开源的一个项目,它提供了熔断器功能,能够阻止分布式系统中出现联动故障。Hystrix 是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。
3.Hystrix 快速入门
当有服务调用的时候,才会出现服务雪崩,所以 Hystrix 常和 OpenFeign,Ribbon 一起出现。
3.1在 OpenFeign 中使用 Hystrix
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
3.1.1 创建 OrderFeignHystrix 实现 OrderFeign接口
@Component public class OrderFeignHystrix implements OrderFeign { @Override public String addOrder(String orderName) { return null; } }
3.1.2 修改@FeignClient 增加 fallback 属性
@FeignClient(value = "openFeign-server", fallback = OrderFeignHystrix.class) public interface OrderFeign { @GetMapping("/add") String addOrder(@RequestParam("orderName") String orderName); }
3.1.3 修改 yml 配置文件
feign: hystrix: enabled: true # 开启断路器
3.1.4 启动测试
4.Hystrix 的常用配置
hystrix: #hystrix 的全局控制 command: default: #default 是全局控制,也可以换成单个方法控制,把 default 换成方法名即可 fallback: isolation: semaphore: maxConcurrentRequests: 1000 #信号量隔离级别最大并发数 circuitBreaker: enabled: true #开启断路器 requestVolumeThreshold: 3 #失败次数(阀值) sleepWindowInMilliseconds: 20000 #窗口时间 errorThresholdPercentage: 60 #失败率 execution: isolation: Strategy: thread #隔离方式 thread 线程隔离集合和 SEMAPHORE 信号量隔离级别 thread: timeoutInMilliseconds: 3000 #调用超时时长 ribbon: ReadTimeout: 5000 #要结合 feign 的底层 ribbon 调用的时长 ConnectTimeout: 5000 #隔离方式 两种隔离方式 thread 线程池 按照 group(10 个线程)划分服务提供者,用户请求的线程和做远程的线程不一样 # 好处 当 B 服务调用失败了 或者请求 B 服务的量太大了 不会对 C 服务造成影响 用户访问比较大的情况下使用比较好 异步的方式 # 缺点 线程间切换开销大,对机器性能影响 # 应用场景 调用第三方服务 并发量大的情况下 # SEMAPHORE 信号量隔离 每次请进来 有一个原子计数器 做请求次数的++ 当请求完成以后 -- # 好处 对 cpu 开销小 # 缺点 并发请求不易太多 当请求过多 就会拒绝请求 做一个保护机制 # 场景 使用内部调用 ,并发小的情况下 # 源码入门 HystrixCommand AbstractCommand HystrixThreadPool
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/17473438.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步