|  | 本文参考孙卫琴所创作的<<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 重新编辑]
 |  |