2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」

教程全目录「含视频」:https://gitee.com/bingqilinpe...

OpenFeign实战开发和参数调优

OpenFeign根本应用

OpenFeign简介

OpenFeign是一个申明式的http客户端,让编写web服务客户端变的非常容易,只须要创立一个接口并在接口上增加注解即可,OpenFeign的前身是Feign,后者目前曾经停更了,OpenFeign是SpringCloud在Feign的根底上反对了Spring MVC的注解,并通过动静代理的形式产生实现类来做负载平衡并进行调用其余服务。

Ribbon+RestTemplate过于繁琐,通过OpenFeign能够简化开发

根本应用

以用户服务调用商品为例

用户服务配置 OpenFeign

  1. 导入依赖

    <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-openfeign</artifactId>        </dependency>
  2. 启动类上加注解

在商品服务中写被调用接口(无参接口测试)

在用户服务中 间接应用Feign写服务调用

  1. 创立一个一般的Java接口

  2. 通过注解申明以后接口为 Feign的客户端

  3. 在Feign接口中 写服务调用的办法

  4. 在用户服务的Controller中应用Feign接口

  5. 启动所有服务 两个商品服务 一个用户服务 注册核心 拜访用户服务察看服务调用

    拜访用户服务的Controller 能够看到负载平衡的成果

  6. 流程

对于传递参数的解决

参数传递都是json 实际上是RestFul的申请
  1. /{} 拼接参数

    1. 被调用接口示例【商品服务】

    2. Feign接口示例【用户服务】

  2. ?拼接参数 对应常见申请类型Get申请

    1. 被调用接口示例【商品服务】

    2. Feign接口示例【用户服务】

  3. 申请体传递参数 对应常见申请Post申请

    1. 被调用接口示例【商品服务】

    2. Feign接口示例【用户服务】

开启日志

Feign 和 RestTemplate 不一样 ,对申请细节封装的更加彻底,不论是申请还是申请的参数,还是响应的状态都看不到,想要看到申请的细节须要通过Feign的日志

Feign日志的配置

1.配置类 @Bean

@Beanpublic Logger.Level feignConfig(){    return Logger.Level.FULL;}

2.在配置文件中开启Feign接口所在包的日志

通过以上配置 重启我的项目 再次应用Feign服务调用 就会看到如下日志:

Feign参数调优

1. 替换OKHttp

在默认状况下 spring cloud feign在进行各个子服务之间的调用时,http组件应用的是jdk的HttpURLConnection,没有应用线程池。

有2种可选的线程池:HttpClient和OKHttp,比拟举荐OKHttp,申请封装的非常简单易用,性能也很ok。

增加依赖

<dependency>    <groupId>com.squareup.okhttp3</groupId>    <artifactId>okhttp</artifactId></dependency>

批改配置文件

feign:  okhttp:    enabled: true  httpclient:    enabled: false    max-connections: 1000    max-connections-per-route: 100
max-connections:最大连接数

max-connections-per-route:每个url的连接数

2. 开启Feign申请响应压缩

开启压缩能够无效节约网络资源,然而会减少CPU压力,倡议把最小压缩的文档大小适度调大一点

## 开启Feign申请响应压缩feign.compression.request.enabled=truefeign.compression.response.enabled=true## 配置压缩文档类型及最小压缩的文档大小feign.compression.request.mime-types=text/xml,application/xml,application/jsonfeign.compression.request.min-request-size=2048

如果你感觉这篇内容对你挺有有帮忙的话:

  1. 点赞反对下吧,让更多的人也能看到这篇内容(珍藏不点赞,都是耍流氓 -_-)
  2. 欢送在留言区与我分享你的想法,也欢送你在留言区记录你的思考过程。
  3. 感觉不错的话,也能够关注 编程鹿 的集体公众号看更多文章和解说视频(感激大家的激励与反对????????????)