共计 1930 个字符,预计需要花费 5 分钟才能阅读完成。
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
-
导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
- 启动类上加注解
在商品服务中写被调用接口(无参接口测试)
在用户服务中 间接应用 Feign 写服务调用
- 创立一个一般的 Java 接口
- 通过注解申明以后接口为 Feign 的客户端
- 在 Feign 接口中 写服务调用的办法
- 在用户服务的 Controller 中应用 Feign 接口
- 启动所有服务 两个商品服务 一个用户服务 注册核心 拜访用户服务察看服务调用
拜访用户服务的 Controller 能够看到负载平衡的成果
- 流程
对于传递参数的解决
参数传递都是 json 实际上是 RestFul 的申请
-
/{} 拼接参数
- 被调用接口示例【商品服务】
- Feign 接口示例【用户服务】
- 被调用接口示例【商品服务】
-
?拼接参数 对应常见申请类型 Get 申请
- 被调用接口示例【商品服务】
- Feign 接口示例【用户服务】
- 被调用接口示例【商品服务】
-
申请体传递参数 对应常见申请 Post 申请
- 被调用接口示例【商品服务】
- Feign 接口示例【用户服务】
- 被调用接口示例【商品服务】
开启日志
Feign 和 RestTemplate 不一样,对申请细节封装的更加彻底,不论是申请还是申请的参数,还是响应的状态都看不到,想要看到申请的细节须要通过 Feign 的日志
Feign 日志的配置
1. 配置类 @Bean
@Bean
public 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=true
feign.compression.response.enabled=true
## 配置压缩文档类型及最小压缩的文档大小
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048
如果你感觉这篇内容对你挺有有帮忙的话:
- 点赞反对下吧,让更多的人也能看到这篇内容(珍藏不点赞,都是耍流氓 -_-)
- 欢送在留言区与我分享你的想法,也欢送你在留言区记录你的思考过程。
- 感觉不错的话,也能够关注 编程鹿 的集体公众号看更多文章和解说视频(感激大家的激励与反对????????????)