欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Nacos(1.6)

时间:2023-04-16
Nacos(1.6)- nacos 服务消费(服务熔断与降级,以及Hystrix的使用) 服务熔断与降级概念

熔断:当下游服务报错不可用时,上游服务为了保证整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源

降级:当下游服务响应过慢或者不可用时,上游服务调用下游服务的降级逻辑,立即返回结果,熔断可以看成是降级的一种形式

降级有如下几种类型:

超时降级失败次数降级故障降级限流降级

参考:
https://blog.csdn.net/Milogenius/article/details/104934611
https://blog.csdn.net/ityouknow/article/details/81230412

为何要使用服务降级

解释了降级的概念,可以先看下如下例子:
在 nacos_demo_provider 服务中,http://127.0.0.1:9092/nacos-provider/hello 接口报错

@RestControllerpublic class NacosProviderController { @Value("${server.port}") private String port; @GetMapping(value = "hello") public String hello() { int a = 0; int b = 1 / a; return "hello, i am from " + port; }}

异常为:

java.lang.ArithmeticException: / by zero

nacos_demo_consumer 服务 http://127.0.0.1:9095/nacos-consumer/hello2 接口调用 nacos_demo_provider 服务 http://127.0.0.1:9092/nacos-provider/hello 接口,假设不做降级处理,那么nacos_demo_provider服务异常会直接导致 nacos_demo_consumer 服务对应接口不可用

如何使用Netflix Hystrix使服务降级

Hystrix 是 Netflix 公司提供的服务降级框架,Spring Cloud OpenFeign 默认集成了 hystrix,所以引入了spring-cloud-starter-openfeign 依赖就可以使用 hystrix 了。

① 使用 hystrix 前要将openfeign对hystrix支持的开关打开

feign: hystrix: enabled: true

② 配置 @FeignClient 中 fallback 或 fallbackFactory 属性,fallbackFactory 功能更强些,以 fallbackFactory 配置为例

@Component@FeignClient(name = "nacos-provider", path = "nacos-provider", configuration = {FeignClientConfig.class}, fallbackFactory = HystrixClientFallbackFactory.class)public interface NacosProviderService { @RequestMapping(method = RequestMethod.GET, value = "hello") String hello();}

③ 编写降级处理类 HystrixClientFallbackFactory

package com.hs.nacos_demo_consumer;import com.hs.nacos_demo_consumer.service.NacosProviderService;import feign.hystrix.FallbackFactory;import org.springframework.stereotype.Component;@Componentpublic class HystrixClientFallbackFactory implements FallbackFactory { @Override public NacosProviderService create(Throwable throwable) { return new NacosProviderService() { @Override public String hello() { System.out.println(throwable.getMessage()); return "服务降级"; } }; }}

测试:

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。