feign 第一次调用超时_java架构师高端课微服务_04_SpringCloud_Open_Feign - Go语言中文社区

feign 第一次调用超时_java架构师高端课微服务_04_SpringCloud_Open_Feign


d9106bdadb29622689f054579b061a4f.png

主要内容

Openfeign简介

Openfeign的请求参数处理

Openfeign的性能优化

配置Openfeign负载均衡请求超时时间

学习目标

153d8d3b3ea64adcb07b65cdfde94847.png

Spring Cloud Openfeign

一、 Openfeign简介

Openfeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。

Spring Cloud的声明式调用, 可以做到使用 HTTP请求远程服务时能就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。Openfeign的应用,让Spring Cloud微服务调用像Dubbo一样,Application Client直接通过接口方法远程调用Application Service,而不需要通过常规的RestTemplate构造请求再解析返回数据。它解决了让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。

1 使用Feign技术开发时的应用部署结构

392eb6baf243fde95b4faeeea506303d.png

二、 Openfeign的请求参数处理

创建Eureka Client工程

e90981443c9c283cef142fe182a9f432.png

1.1 POM依赖

801363dedea1883b93059db3395c1078.png

2 创建Service API服务标准Module

8c19ab5c9d63887020cf054155c5f4c2.png

3 开发服务标准 - Service API

3.1 POM依赖

7fcc3dfa37f3b10546a37999db277586.png

3.2 测试自定义参数类型

6ce61827b9095158da2ba105c4061544.png

69ac6600439ae429cface67121a8ae2f.png

81c91580566c16bf2a3a96780e87e632.png

3.3 服务接口定义

ce72a63d4c3c2e85a220ebf6de5b5bbc.png

cd6c827650f060dae4655be5250be217.png

7c3e5fd835c364d21e07d84beebcceb4.png

4 创建Application Service服务提供者Module

af6c6cca3fdb3ac9551ef4d8d99e313b.png

5 开发服务提供者 - Application Servic

5.1 POM依赖

0b28d32e9cf94b185ae81417fc7e6151.png

0a3d544fac98c958ef5e25a9c578f3fa.png

5.2 服务标准实现

06552d33da338d51ffb226a3e969ea5c.png

708da47a3ccebc95c0496d15d74e7d85.png

e3cfab4779c93f0feb03d112c74d53e7.png

5.3 配置文件application.yml

f0d8d4988477cdefd232258f9c378a3d.png

5.4 启动类

872a8259d6f881db0518cbd7c560f4f2.png

4c7f6225ec186d8bd1a8ef05f8424e0d.png

6 创建Application Client服务消费者Module

808616d3d6b7ec94a5fdabebbc533006.png

7 开发服务消费者 - Application Client

7.1 POM依赖

0f951c0fde20e6c4408def76a710c5a8.png

2faaef768562d1eecf7fb2f7ee1dbb41.png

7.2 本地服务接口

be2a7be7b091e1f3ba0c78a45f0ac541.png

7.3 控制器开发

4294aeef754cf2d5b5bf71cab89622bf.png

0d60259656dd7b07cb1408f5aa32acb4.png

7.4 配置文件application.yml

4109ba4a59a46950a177437e88468e03.png

01f8cc0bcdcb7ee02a38d165752f734c.png

7.5 启动类

d33b32f89cebd4dadf3e960a82f16f7d.png

8 参数处理简单总结

在Openfeign处理远程服务调用时,传递参数是通过HTTP协议传递的,参数存在的位置是请求头或请求体中。请求头传递的参数必须依赖@RequestParam注解来处理请求参数,请求体传递的参数必须依赖@RequestBody注解来处理请求参数。

三、 Openfeign的性能优化

1 GZIP简介

gzip介绍:gzip是一种数据格式,采用用deflate算法压缩数据;gzip是一种流行的数据压缩算法,应用十分广泛,尤其是在Linux平台。

gzip能力:当Gzip压缩到一个纯文本数据时,效果是非常明显的,大约可以减少70%以上的数据大小。

gzip作用:网络数据经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。

HTTP协议中的压缩传输简介

8e4d115a91c18bffd0a92c5f482e8c6e.png

第一:客户端向服务器请求头中带有:Accept-Encoding:gzip, deflate 字段,向服务器表示,客户端支持的压缩格式(gzip或者deflate),如果不发送该消息头,服务器是不会压缩的。

第二:服务端在收到请求之后,如果发现请求头中含有Accept-Encoding字段,并且支持该类型的压缩,就对响应报文压缩之后返回给客户端,并且携带Content-Encoding:gzip消息头,表示响应报文是根据该格式压缩过的。

第三:客户端接收到响应之后,先判断是否有Content-Encoding消息头,如果有,按该格式解压报文。否则按正常报文处理。

3 在Openfeign技术中应用GZIP压缩

在Spring Cloud微服务体系中,一次请求的完整流程如下:

b519f8da4418c4b06f214bfc1e35b766.png

在整体流程中,如果使用GZIP压缩来传输数据,涉及到两次请求-应答。而这两次请求-应答的连接点是Application Client,那么我们需要在Application Client中配置开启GZIP压缩,来实现压缩数据传输。

3.1 只配置Openfeign请求-应答中的GZIP压缩

只开启Feign请求-应答过程中的GZIP,也就是浏览器-Application Client之间的请求应答不开启GZIP压缩。

在全局配置文件中,使用下述配置来实现Openfeign请求-应答的GZIP压缩

0a145172b945d7d34dea99061d3c908f.png

e481aff084f22a4db7f3c681ca2e5484.png

3.2 配置全局GZIP压缩

在全局配置文件中配置下述内容,来开启所有请求-应答中的GZIP压缩,这里使用的是Spring Boot中的GZIP技术。在Spring Boot中已经集成了GZIP压缩技术,并对所有的请求-应答实现GZIP数据压缩。工程中已经依赖了Spring Boot技术,所以在配置文件中可以开启Spring Boot中的GZIP压缩技术,对完整流程中所有相关的请求-应答开启GZIP压缩。

affd9e05ffb906257ee1cbd41dde51e0.png

1e2b15365edf863ff1d0668931e50816.png

四、 配置Openfeign负载均衡请求超时时间

Openfeign技术底层是通过Ribbon技术实现的,那么在负载均衡和超时时间配置上,主要对Ribbon的配置。具体配置如下:

1 超时时间配置

在Application Client应用的配置文件上,增加下述配置:

ribbon:# 请求连接的超时时间,单位毫秒,默认的时间为1秒ConnectTimeout: 1000# 请求处理的超时时间,单位毫秒,默认的时间为1秒ReadTimeout: 1000

1 负载均衡配置

# 设置负载均衡策略。openfeign-service为设置负载均衡的服务名称

openfeign-service: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39715290/article/details/110508679
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-17 05:15:12
  • 阅读 ( 988 )
  • 分类:架构

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢