Spring Cloud Openfeign

目录

一、 Openfeign 简介

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

1 编写Service API

2 创建 Application Service 服务提供者 Module

3 创建 Application Client 服务消费者 Module

注意注意:

4  参数处理简单总结

二 Openfeign 的性能优化

1 GZIP 简介

2 HTTP 协议中的压缩传输简介

3 在 Openfeign 技术中应用 GZIP 压缩

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

3.2 配置全局 GZIP 压缩 

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

1 超时时间配置

2 负载均衡配置


一、Openfeign简介

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

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

在使用 Openfeign 技术开发 Spring Cloud 微服务时,需要先抽取要注册发
布的服务标准,将这套标准通过接口的形式定义出来。
Application Service 端开发中,依赖抽取的服务标准接口工程,并对接
口给予实现。
Application Client 端开发中,依赖抽取的服务标准接口工程,并应用接
口信息和 Openfeign 技术,实现远程服务的调用。
在整体微服务开发中, Eureka Server 作为注册中心必不可少,注册中心的
作用不变,仍旧是注册和发现服务。

1 编写Service API

随便写:

 

注意: 如果绑定的参数是普通参数的话要用

@RequestParam 注解描述。  且,无论方法参数名和请求参数名是否一致,都需要定义@RequestParam 注解的

 

使用 POST 请求传递自定义类参数。 必须使用@RequestBody 处理。

创建 Application Service 服务提供者 Module

添加依赖:

实现ServiceAPI 

 编写配置文件:

启动类:

在启动类上添加@EnableDiscoveryClient,听说不用添加了

创建Application Client服务消费者Module

1 添加依赖:

2 编写抽取出的接口 :

3 编写controller

通过注入实现服务的调用

 4 编写启动类:

 

注意注意:

我们使用openfeign的时候不用这么麻烦,在编写服务提供方的时候正常编写controller就可以了,然后再服务消费方编写一个接口通过@FeignClient和服务名就好,前提是服务消费方中定以的抽象方法要和服务提供方的controller一致,然后通过@RequestParam或者@RequestBody来绑定参数即可

服务提供方:

服务消费方: 

 

4  参数处理简单总结

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

二 Openfeign的性能优化

1 GZIP简介

gzip 介绍: gzip 是一种数据格式,采用用 deflate 算法压缩数据; gzip 是一种流行的数
据压缩算法,应用十分广泛,尤其是在 Linux 平台。
gzip 能力:当 Gzip 压缩到一个纯文本数据时,效果是非常明显的,大约可以减少 70
以上的数据大小。
gzip 作用:网络数据经过压缩后实际上降低了网络传输的字节数,最明显的好处就是
可以加快网页加载的速度。网页加载速度加快的好处不言而喻,除了节省流量,改善用户
的浏览体验外,另一个潜在的好处是 Gzip 与搜索引擎的抓取工具有着更好的关系。例如
Google 就可以通过直接读取 gzip 文件来比普通手工抓取更快地检索网页。

2 HTTP协议中的压缩传输简介

第一:客户端向服务器请求头中带有: Accept-Encoding:gzip, deflate
字段,向服务器
表示,客户端支持的压缩格式( gzip 或者 deflate) ,如果不发送该消息头,服务器是不会压
缩的。
第二:服务端在收到请求之后,如果发现请求头中含有 Accept-Encoding 字段,并且
支持该类型的压缩,就对响应报文压缩之后返回给客户端,并且携带 Content-Encoding:gzip
消息头,表示响应报文是根据该格式压缩过的。
第三:客户端接收到响应之后,先判断是否有 Content-Encoding 消息头,如果有,按
该格式解压报文。否则按正常报文处理。

 

3Openfeign技术中应用GZIP压缩

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

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

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

只开启 Feign 请求 - 应答过程中的 GZIP ,也就是浏览器 -Application Client 之间的请求
应答不开启 GZIP 压缩。
在全局配置文件中,使用下述配置来实现 Openfeign 请求 - 应答的 GZIP 压缩

3.2配置全局GZIP压缩 

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

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

1超时时间配置

2负载均衡配置

 

 

 

 


版权声明:本文为m0_51343808原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。