SpringCloud远程调用

SpringCloud远程调用
jwangSpring Cloud Feign
Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。不再需要拼接URL,参数等操作。项目主页:https://github.com/OpenFeign/feign 。
- 集成Ribbon的负载均衡功能
- 集成了Hystrix的熔断器功能
- 支持请求压缩
- 大大简化了远程调用的代码,同时功能还增强啦
- Feign以更加优雅的方式编写远程调用代码,并简化重复代码</p>
快速入门
使用Feign替代RestTemplate发送Rest请求。
实现步骤:
1. 导入feign依赖 |
实现过程:
(1)导入依赖
在user-consumer中添加spring-cloud-starter-openfeign依赖
<!--配置feign--> |
(2)创建Feign客户端
在user-consumer中创建com.jwang.feign.UserClient接口,代码如下:
解释:
Feign会通过动态代理,帮我们生成实现类。 |
(3)编写控制层
在user-consumer中创建com.jwang.controller.ConsumerFeignController,在Controller中使用@Autowired注入FeignClient,代码如下:
|
(4)开启Feign
修改user-consumer的启动类,在启动类上添加@EnableFeignClients注解,开启Feign,代码如下:
(5)测试
请求<http://localhost:18082/feign/2>,效果如下:
负载均衡
Feign自身已经集成了Ribbon,因此使用Feign的时候,不需要额外引入依赖。
Feign内置的ribbon默认设置了请求超时时长,默认是1000,可以修改
ribbon内部有重试机制,一旦超时,会自动重新发起请求。如果不希望重试可以关闭配置:
# 修改服务地址轮询策略,默认是轮询,配置之后变随机 |
熔断器支持
feign整合Hystrix熔断器
Feign默认也有对Hystrix的集成!
实现步骤:
1. 在配置文件application.yml中开启feign熔断器支持 |
(1)开启Hystrix
在配置文件application.yml中开启feign熔断器支持:默认关闭
feign: |
(2)熔断降级类创建
修改user-consumer,创建一个类com.jwang.feign.fallback.UserClientFallback,实现刚才编写的UserClient,作为FallBack的处理类,代码如下:
|
(3)指定Fallback处理类
在@FeignClient注解中,指定FallBack处理类
(4)测试
关闭服务消费方,请求<http://localhost:18082/feign/2>,效果如下:
如果不想写/user,可以如下使用
请求压缩
SpringCloudFeign支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗。
通过配置开启请求与响应的压缩功能:
feign: |
也可以对请求的数据类型,以及触发压缩的大小下限进行设置
feign: |
Feign的日志级别配置
通过loggin.level.xx=debug来设置日志级别。然而这个对Feign客户端不会产生效果。因为@FeignClient注解修饰的客户端在被代理时,都会创建一个新的Feign.Logger实例。我们需要额外通过配置类的方式指定这个日志的级别才可以。
实现步骤:
1. 在application.yml配置文件中开启日志级别配置 |
实现过程:
(1)普通日志等级配置
在user-consumer的配置文件中设置com.jwang包下的日志级别都为debug
# com.jwang 包下的日志级别都为Debug |
(2)Feign日志等级配置
在user-consumer中创建com.jwang.feign.util.FeignConfig,定义日志级别
|
日志级别说明:
Feign支持4中级别: |
(3)指定配置类
修改user-consumer的com.jwang.feign.UserClient指定上面的配置类,代码如下:
重启项目,即可看到每次访问的日志
小结
Feign的作用:不再使用拼接URL的方式实现远程调用,以接口调用的方式实现远程调用,简化了远程调用的实现方式,增强了远程调用的功能,例如:增加了负载均衡、熔断、压缩、日志启用。
掌握Feign的使用过程
1.引入Feign依赖包
2.创建Feign接口,feign接口中需要指定调用的服务名字
3.使用@EnabledFeignClients启用Feign功能掌握Feign的负载均衡配置
在配置文件中配置
{spring.application.name}:ribbon:负载均衡属性配置掌握Feign的熔断配置
1.在application.yml中开启Hystrix
2.给Feign接口创建一个实现类
3.给Feign指定fallback类掌握Feign的压缩配置
在application.yml中指定压缩属性即可
掌握Feign的日志配置
1.在application.yml中开启普通日志等级
2.创建一个类,定义Feign日志等级
3.在Feign接口中指定定义日志的配置













