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中的包


目录
相关文章
|
10月前
|
监控 BI 数据库连接
仿通达OA完整源码
仿通达OA完整源码
213 0
|
12月前
|
机器学习/深度学习
 GHSL: 全球1975 年到 2030 年以 5 年间隔建成面积的分布情况(100m)
全球人类住区图层(GHSL)项目提供了1975年至2030年建成面积的分布数据,以每100米网格单元为单位,涵盖建筑总面积及非住宅用途面积。该数据集由欧盟委员会联合研究中心(EC JRC)提供,时间间隔为5年,支持时空分析与预测。详情参见[GHSL 数据包 2023](https://ghsl.jrc.ec.europa.eu/documents/GHSL_Data_Package_2023.pdf?t=1683540422)。
377 7
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。
|
存储 监控 Java
OpenFeign请求拦截器组件RequestInterceptor原理与使用场景
该文章讲述了OpenFeign中的请求拦截器组件RequestInterceptor的原理及其常见使用场景。
OpenFeign请求拦截器组件RequestInterceptor原理与使用场景
|
网络协议 算法 Java
04SpringCloud 之 Consul 简介
04SpringCloud 之 Consul 简介
391 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue的在线图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的在线图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
160 1
|
存储 Java 关系型数据库
基于SSM框架的电影院售票网站
基于SSM框架的电影院售票网站
基于SSM框架的电影院售票网站
使用System.getProperty获取系统属性
使用System.getProperty获取系统属性
|
缓存 Java 测试技术
Spring Boot中的性能测试与调优
Spring Boot中的性能测试与调优
|
监控 Java API
4.服务网关之Spring Cloud Gateway
4.服务网关之Spring Cloud Gateway
1047 0