Feign

简介: Feign

RestTemplate方式调用存在的问题

先来看看我们以前利用RestTemplate发起远程调用的代码

存在下面的问题:

代码可读性差,编程体验不统一

参数复杂URL难以维护

feign是一个声明式的http客户端。

其作用就是帮助我们优雅地实现http请求的发送,解决上面提到的问题。

使用feign的步骤如下:

1、引入依赖

2、在项目的启动类添加注解开启feign的功能;

3.编写feign客户端:

主要是基于SpringMVC的注解来生命远程调用的信息,比如:

服务名称:userservice

请求方式:GET

请求路径:/user/{id}

请求参数:Long id

返回值类型:User

对比:

原来的

总结

Feign的日志配置

1.方式一是配置文件,feign.client.config.xxx.loggerLevel

1)如果xxx是default则达标全局

2)如果xxx是服务名称,例如userservice则代表某服务

2.方式二是java代码配置Logger.Level这个Bean

1)如果在@EnableFeignClient注解声明则代表全局

2)如果在@Feignclient注解中声明则达标某服务

Feign的性能优化

Feign底层的客户端实现:

  • URLConnection:默认实现,不支持连接池
  • Apache:HttpClient:支持连接池
  • OKHttp:支持连接池

因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection

URLConnection每次都要建立连接又断开连接。使用连接池能够提升效率。

Feugn的优化:

1.使用httpclient或okhttp代替URLConnectionl

1)引入依赖

2)配置文件开启httpclient功能,设置连接池参数

2.日志级别尽量使用basic

Feign的最佳实践

什么是最佳实践?就是企业在使用的过程中各种踩坑,总结出来的最佳方法。

方式一(继承):给消费者的FeignClient和提供者地controller定义统一的父接口作为标准。

抽取FeignClient

实现最佳时间方式二的步骤如下:

1.首先创建一个module,命名为feign-api,然后引入feign的starter依赖

2.将order-service中编写的UserClient、user、defaultFeignConfiguration都复制到feign-api项目中

3.在order-service中引入feign-api的依赖

4.修改order-service中的所有与上述三个组件有关的import部分,改成导入feign-api中的包


目录
相关文章
|
19天前
|
负载均衡 Java 应用服务中间件
Ribbon、Feign和OpenFeign的区别来了
Ribbon、Feign和OpenFeign的区别来了
|
19天前
|
Nacos
SpringCloud Feign使用
SpringCloud Feign使用
27 1
|
19天前
|
负载均衡 Java 应用服务中间件
springcloud3-服务到服务调用ribbon及openfeign
springcloud3-服务到服务调用ribbon及openfeign
47 0
|
19天前
|
监控 安全 Java
深入理解Feign
深入理解Feign
94 2
|
19天前
|
负载均衡 监控 前端开发
Feign 与 OpenFeign
Feign 与 OpenFeign
47 0
|
10月前
SpringCloud-Feign-文件服务调用
SpringCloud-Feign-文件服务调用
40 0
|
19天前
|
微服务
Feign远程调用
Feign远程调用
40 0
|
8月前
|
前端开发 Java Apache
springcloud feign
springcloud feign
41 0
springcloud feign
|
JSON Java API
Feign远程调用
Feign远程调用
91 0