你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
|
可以看到if语句里,有三个条件。
只有同时满足这三个条件,OkHttp的透明压缩才会起作用,帮我们自动解压。 它挖的坑有点深 可惜的是,上面的关键代码,只有if,没有else,也就是当其中的任何一个条件不满足,后端的数据包将原封不动的返回。 2、3两个条件是没有什么问题的,原样返回后端数据并没有什么损害,问题就出在第一个条件里。
如果你在代码中,使用了下面的代码: 到此为止,我们就可以享受OkHttp的透明代理带来的便捷性了。 假如你的应用数据包大,调用链长,这种方式甚至会给你的服务带来数秒的性能力提升。xjjdog就曾经靠调整几个参数,就让一个蜗牛系统飞了起来。大家惊呼:原来B端也可以C一下。 OkHttp是如何实现透明压缩的? OkHttp对于透明压缩的处理,是通过拦截器来做的。具体的类,就是okhttp3.internal.http.BridgeInterceptor。
具体代码如下,当判断没有Accept-Encoding头的时候,就自行加入一个。 如上图,一个请求从浏览器到达真正的服务节点,可能要经过很多环节。
如果我们的数据,大多数是由微服务B提供的,那么上面的任何一个环节传输效率慢,都会影响请求的性能。 所以,我们需要开启Feign接口的gzip压缩。使用OkHttp的透明代理是最简单的方式。
首先,在项目中引入feign的jar包。 要使用OkHttp,一定要知道它的透明压缩,否则死都不知道怎么死的;或者活也不知道为什么活的不舒坦。 反正不是好事。 什么叫透明压缩呢?OkHttp在发送请求的时候,会自动加入gzip请求头Accept-Encoding:gzip。所以,当返回的数据带有gzip响应头时Content-Encoding=gzip,OkHttp会自动帮我们解压数据。(Accept-Encoding和Content-Encoding是一对请求头,分别对应着请求和返回) 为什么要进行压缩呢?因为它能大幅减少传输的容量。像一些CPU资源占用不高的服务,比如Kafka,我们就可以开启gzip压缩,加快信息的流转。
这个压缩比有多高呢?可以看下下面实实在在的截图,对于普通的xml或者json,数据可以由9MB压缩到350KB左右,压缩比足足达到了26。 (编辑:广元站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



