5.Hystrix
6.Hystrix
6.1.服务雪崩
6.1.1.介绍
什么是服务雪崩
服务雪崩的本质:线程没有及时回收。
不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩
6.1.2.解决
①修改超时时长
将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服务可用
优点:非常简单,也可以有效的解决服务雪崩
缺点:不够灵活,有的服务需要更长的时间去处理(写库,整理数据)
②设置拦截器
6.2.简介
Hystrix
是Netflix
公司开源的一个项目,它提供了熔断器功能,能够阻止分布式系统中出现联动故障。
Hystrix
是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。
熔断器,也叫断路器!(默认断路器是关的,只有出了问题才打开)用来保护微服务不雪崩的方法。
6.3.快速入门
当有服务调用的时候,才会出现服务雪崩,所以
Hystrix
常和OpenFeign
,Ribbon
一起出现
6.3.1.搭建customer-service
①pom.xml
②修改启动类
③修改配置类
④添加feign接口
⑤添加Hystrix类
⑥添加controller类
6.3.2.搭建car-service
①pom.xml
②修改启动类
③修改配置类
④添加controller
6.3.3.搭建eureka-server
6.3.4.访问测试
http://localhost:8002/customer
测试出现滴滴滴滴滴滴后将8001服务停止,如果出现我是备选方法则为开启成功。
6.4.常用配置
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开销小
- 缺点:并发请求不易太多,当请求过多,就会拒绝请求做一个保护机制
- 应用场景:使用内部调用 ,并发小的情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本