服务器忙,请稍后再试,不让客户端等待并立刻返回一个友好提示,fallback 哪些情况触发降级?
程序运行异常超时服务熔断触发服务降级线程池/信号量打满也会导致服务降级降级用在服务提供者还是服务消费者呢? 都可以的,不过大多数情况是用在服务消费者多一些啦。
类比保险丝达到最大服务访问后,直接拒绝访问,拉闸限电,然后调用服务降级的方法并返回友好提示,fallback 熔断是什么? 熔断机制是对应雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断改节点微服务的调用,快速返回错误的响应信息。 当检测到该节点微服务调用响应正常后,恢复调用链路。
断路器
秒杀高并发等操作,严禁一窝蜂的过来拥挤,大家排队,一秒钟N个,有序进行
为什么微服务我们要用Hystrix呢?因为它可以解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力。
在SpringCloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。使用@HystrixHystrixCommand注解。
maven引入Hystrix依赖
<!--hystrix --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> <version>1.4.6.RELEASE</version> </dependency>假设在调用某个服务的时候出现异常,在方法上加@HystrixCommand注解,通过她中fallbackMethod去调用提示方法。 假设我们出现超时的异常
@HystrixProperty全局服务降级 避免代码膨胀,合理减少代码量,我们可以通过@HystrixProperty解决每个方法上加一个降级方法。通过@HystrixProperty直接在类上加@HystrixProperty就可以了,方法上直接写@HystrixCommand注解。 实例:
@FeignClient 通配服务降级 通过@FeignClient中的fallback解决了解耦,实现了服务降级,解决了到吗膨胀,代码混乱。 实例: