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 消息头,如果有,按
该格式解压报文。否则按正常报文处理。

 

3 Openfeign 技术中应用 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 负载均衡配置

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值