SpringCloud 实现分布式架构 使用Feign 实现模块之间调用详解 查看下面链接
SpringBoot 和SpringCloud、 Nacos 与Netflix Feign 实现服务调用_Json的知识梦工厂-CSDN博客
//熔断器 Netflix Hystrix 供分布式使用
// 服务调用的执行过程
// Feign(服务调用) -> Hystrix (熔断器) ->Ribbon (负载均衡) ->Http Client (apache http)
//Hystrix (熔断器) 是什么?
// 当访问某个服务
// 1. 这个服务挂掉了、宕机 或没启动 就会执行这个熔断器 切断这个执行过程 一种保护功能
// 2. 当请求相应过长 会有延迟处理 默认请求时间为 1000毫秒 可配置
// Ribbon (负载均衡) 是什么?
// 调用某个服务 这个服务是集群模式 在不同不服务器上都部署了这个模块
// 则这个Ribbon 会帮助你 负载均衡 分配 模块调用 减少服务器压力
//最后执行 Http Client 则完成整个流程调用过程
//在项目中怎么使用
//1. 引入依赖
// <!-- ribbon依赖 负载均衡-->
// <dependency>
// <groupId>org.springframework.cloud</groupId>
// <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
// </dependency>
// <!--hystrix依赖,熔断器 主要是用 @HystrixCommand -->
// <dependency>
// <groupId>org.springframework.cloud</groupId>
// <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
// </dependency>
// 2. 熔断器 配置文件
//# 开启熔断机制
//feign.hystrix.enabled=true
// #修改熔断器的默认毫秒
// hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
//3. 创建远程调用接口的实现类
//在 创建的调用其他模块的方法的 那个接口(interface)里 还需要创建 这个接口的(interface) 对应的实现类
//在实现类实现方法, 如果远程调用出错了就会输出内容
//4. 在远程调用接口上 加上注解和属性
// name 服务名称 fallback 出错后需要调用那个类的方法
// @FeignClient(name = "service-oss",fallback = OssClientimpl.class)
//5. 重启测试
以下为测试代码
1.首先引入依赖
2.定义的远程调用的接口的实现类 创建文件并实现
实现类内容 如果测试输出这句话 则说明成功
@Component
public class OssClientimpl implements OssClient {
@Override
public R addTest(TestRequest testRequest) {
return R.error().message("远程调用出错了,我执行了熔断器");
}
}
3. 修改 远程服务调用的接口
修改注解内容如下
@FeignClient(name = "service-oss",fallback = OssClientimpl.class)
4.测试熔断器是否配置成功
启动一个服务 关闭一个服务
通过访问 调用 关闭的这个服务中的某个方法 看是否会执行熔断器里的方法