| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring Cloud Openfeign -> 正文阅读 |
|
[Java知识库]Spring Cloud Openfeign |
目录 2?创建 Application Service 服务提供者 Module 3?创建 Application Client 服务消费者 Module 3.1 只配置 Openfeign 请求-应答中的 GZIP 压缩 一、 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 处理。
2?创建 Application Service 服务提供者 Module添加依赖: 实现ServiceAPI? ?编写配置文件: 启动类: 在启动类上添加@EnableDiscoveryClient,听说不用添加了 3?创建 Application Client 服务消费者 Module1 添加依赖: 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 负载均衡配置? ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:41:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |