>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 17280 个阅读者 刷新本主题
 * 贴子主题:  【Spring Cloud Alibaba专题】OpenFeign开启对请求和响应数据的压缩 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2022-08-25 09:21:03     消息  查看  搜索  好友  邮件  复制  引用

本文参考孙卫琴所创作的<<Spring Cloud Alibaba微服务开发零基础入门到实战>>一书

默认情况下,OpenFeign没有开启对请求数据和响应数据的压缩。为了提高网络传输的效率,可以开启对传输数据的gzip压缩功能,需要设置OpenFeign的以下属性:

feign.compression.request.enabled:当取值为true,开启对请求数据的压缩功能。默认值为false。
feign.compression.response.enabled:当取值为true,开启对响应数据的压缩功能。默认值为false。
feign.compression.request.mime-types:指定待压缩的请求数据的类型。
feign.compression.request.min-request-size:指定待压缩的请求数据的临界大小。例如,如果取值为2048,就表示当请求数据的大小超过2048字节,就对其压缩;如果低于2048字节,就不会对其压缩。

问题:“开启对请求数据和响应数据的压缩功能,尽管会提高网络传输的效率,但是也会增加CPU的运行负荷。如何在提高网络传输效率和减轻CPU运行负荷之间进行平衡呢?”
答案:“可以把feign.compression.request.min-request-size属性设置大一点,避免对小规模的请求数据压缩,减少压缩次数。这种折中措施即能减轻CPU运行负荷,也能保证网络传输效率。”

为了使得消费者访问提供者微服务时会启用数据压缩功能,在消费者模块的application.yaml文件中需要加入如下配置属性:

feign:
  compression:
    request:
      enabled: true
      mime-types: text/xml,application/xml,application/json
      min-request-size: 2048
    response:
      enabled: true

当消费者访问提供者微服务时,观察运行消费者模块的IDEA控制台,会看到OpenFeign输出以下FULL级别的日志:

[HelloFeignService#sayHello] --->
  GET http://hello-provider-service/user/greet/Tom HTTP/1.1
[HelloFeignService#sayHello] Accept-Encoding: gzip
[HelloFeignService#sayHello] Accept-Encoding: deflate
[HelloFeignService#sayHello] ---> END HTTP (0-byte body)
……

以上位于请求头中的“Accept-Encoding: gzip”的作用是告诉hello-provider-service微服务,返回按照gzip压缩的响应结果。



程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 sunweiqin 在 2024-07-11 13:46:51 重新编辑]
  Java面向对象编程-->集合(上)
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->XML数据处理
  精通Spring-->组合(Composition)API
  Vue3开发-->Vue组件开发基础
  【Vue.js技术专题】命名路由
  【Spring Cloud Alibaba专题】SkyWalking整合MySQL
  【Spring Cloud Alibaba专题】按照集群模式搭建Redis集群
  【Spring专题】Spring MVC是否过时?
  从《精通Spring》和《精通Vue.js》的写作分享学习新技术的经...
  【持久化专题】用@MapsId注解映射派生主键
  【Java网络编程专题】用java.net.URL类访问HTTP服务器读取网...
  【Java网络编程专题】用Java套接字访问HTTP服务器读取网页数...
  【Java网络编程专题】优化访问数据库的程序代码的一些技巧
  【持久化专题】通过JPQL查询语句进行批量处理数据
  【持久化专题】比较JPA的EntityManager接口与Hibernate的Ses...
  【JavaWeb专题】在Servlet中利用Apache开源类库实现文件上传
  《大话Java程序设计从入门到精通》写作花絮
  【JavaWeb专题】选择32位或64位JDK或者Apache HTTP服务器的安...
  【Java基础编程专题】Java基本类型和引用类型的三个区别
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。