一、 Hystrix熔断器
1. Hystrix分析
① 雪崩效应
在一个请求过程中,有可能会连续的访问多个微服务,如果其中一个微服务因为网络原因或者线程阻塞或者一些bug造成当前微服务不可访问,如果长时间未得到解决的话会造成当前请求不可用或者直接导致服务瘫痪。简单的说就是服务与服务之间的依赖性,服务产生的故障会进行传播,会对整个微服务系统造成灾难性的后果,这就称为雪崩效应。
② 熔断器/断路器
当一个服务访问异常次数到达指定的阈值时就会给当前请求返回一个固定值(url)进行 访问或返回,就避免了客户长时间等待或者应用的雪崩。(相当于异常处理)
③ Hystrix熔断机制
1. Hystrix实现-服务提供者
① 基于父工程创建一个hystrix-8001的服务提供者module
② 复制8001module中的pom.xml和其他资源
③ 在pom.xml文件中添加hystrix依赖
④ 修改yml文件,添加hystrix服务标识
⑤ 熔断机制方法的创建和调用
⑥ 在启动器中添加开启熔断机制
⑦ 启动服务测试
先启动6001、6002服务,然后启动hystrix8001,然后再启动consumer-feign80,通过访问consumer调用
2. Hystrix实现-消费者(Feign)
Feign是自带了熔断机制,也就是针对消费者客户端进行服务熔断,当客户端访问微服务若出现访问网络异常等错误时就会进行熔断处理。
默认情况下Feign中的熔断机制是关闭
需求:重构consumer-feign-80 Module,实现客户端的熔断机制处理
① 修改yml配置文件,开启Feign中的熔断机制
② 创建一个FallBack熔断处理类,这个类是当Feign接口中方法调用出现异常时对应的处理类
这个类需实现Feign接口
③ 在@FeignClient注解中指定fallback处理类
④ 实现熔断处理方法
⑤ 测试
启动6001、6002,然后启动product-8002,然后启动consumer80
A、通过consumer80调用是正常的访问
B、手动关闭product-8002模拟网络异常
C、再次通过consumer80访问,由于ms-product微服务不存在,此时就会启用熔断处理