⑦. Hystrix结合FeignClient解耦
- ①. 问题引入:
②. 未来我们要面对的异常(运行时异常、超时、服务器宕机)
③. 修改cloud-consumer-feign-hystrix-order80
(根据cloud-consumer-feign-hystrix-order80已经有的PaymentHystrixService接口,重新新建一个类(PaymentFallbackService)实现该接口,统一为接口里面的方法进行异常处理)
@Component @FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT",fallback = PaymentFallbackService.class) public interface PaymentHystrixService { @GetMapping("/payment/hystrix/ok/{id}") public String paymentInfo_OK(@PathVariable("id") Integer id); @GetMapping("/payment/hystrix/timeout/{id}") public String paymentInfo_TimeOut(@PathVariable("id") Integer id); }
@Component // 这个注解不能少 public class PaymentFallbackService implements PaymentHystrixService { @Override public String paymentInfo_OK(Integer id) { return "---PaymentFabllbackService fall back-paymentInfo_OK"; } @Override public String paymentInfo_TimeOut(Integer id) { return "---PaymentFabllbackService fall back-paymentInfo_TimeOut"; } }
③. 这个ok方法我们没有在controller中做全局处理,而这个paymentInfo_TimeOut做了全局处理
⑧. 服务熔断是什么?
①. 熔断机制概述:熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到节点微服务调用响应正常后,恢复调用链路
②. Closed:关闭状态(断路器关闭),所有请求都正常访问
③. Open:打开状态(断路器打开),所有请求都会被降级。Hystrix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次
④. Half Open:半开状态,不是永久的,断路器打开后会进入休眠时间(默认是5S),随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会关闭断路器,否则继续保持打开,再次进行休眠计时