首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用android中的http2和okhttp,为什么要为20个请求创建20个流

在Android中使用HTTP/2和OkHttp时,为什么要为20个请求创建20个流?

HTTP/2是一种新一代的网络协议,它在传输效率、性能和安全性方面相较于旧版的HTTP有很大的改进。而OkHttp是一个流行的开源HTTP客户端库,提供了对HTTP/2的支持。

在HTTP/2中,引入了多路复用(Multiplexing)的概念,它允许在单个TCP连接上同时发送多个请求和接收多个响应。这就意味着可以在一个连接上并行处理多个请求,而不需要为每个请求都建立一个新的连接。

当使用OkHttp发送多个请求时,每个请求都会被分配到一个独立的流(Stream)上。流是HTTP/2中的一个基本单位,它代表了一个双向的数据流通道,可以用于发送请求和接收响应。

为20个请求创建20个流的主要原因是为了充分利用HTTP/2的多路复用特性,以提高请求的并发处理能力和性能。通过将每个请求分配到独立的流上,可以同时发送和接收多个请求和响应,而无需等待之前的请求完成。

优势:

  1. 提高性能:通过并行处理多个请求,减少了请求的等待时间,提高了整体的响应速度和吞吐量。
  2. 节省资源:相比于为每个请求建立一个新的连接,多路复用可以减少连接的数量,节省了服务器和客户端的资源消耗。
  3. 减少延迟:由于可以同时发送多个请求,减少了请求的排队时间,从而降低了延迟。

应用场景:

  1. 并发请求:当需要同时发送多个请求时,使用HTTP/2和OkHttp的多路复用特性可以提高请求的并发处理能力,适用于需要高并发的场景,如大规模数据同步、高并发的API调用等。
  2. 提高性能:对于需要快速响应的应用,使用HTTP/2和OkHttp可以减少请求的等待时间,提高整体的性能和用户体验。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云提供了丰富的云计算服务和解决方案,其中包括与HTTP/2和OkHttp相关的产品和服务。以下是一些推荐的腾讯云产品和对应的介绍链接:

  1. 腾讯云CDN(内容分发网络):https://cloud.tencent.com/product/cdn 腾讯云CDN提供了全球分布式加速服务,可以加速静态和动态内容的传输,提高网站的访问速度和用户体验。
  2. 腾讯云API网关:https://cloud.tencent.com/product/apigateway 腾讯云API网关是一种高性能、高可用的API管理服务,可以帮助开发者快速构建和部署API,并提供了丰富的功能和扩展性。
  3. 腾讯云容器服务:https://cloud.tencent.com/product/ccs 腾讯云容器服务是一种高性能、高可用的容器管理服务,可以帮助开发者快速构建、部署和管理容器化应用。

请注意,以上推荐的产品仅供参考,具体选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android高频面试专题 - 架构篇(二)okhttp面试必知必会

okhttp火热程度,不用多说,已经被谷歌爸爸加入到Android源码,也是面试高频问题之一,如果只是满足于API工程师,那么面试还是有一点难度。 1、HTTP报文结构 请求报文 ?...多字符集支持、多部分发送、权限、缓存等 HTTP/1.1 持久连接 pipeline 增加host其他一些命令 HTTP2 所有数据以二进制传输 同一个连接里面发送多个请求不再需要按照顺序来 头信息压缩以及推送等提高效率功能...3、okhttp有哪些优势 1)支持http2,对一台机器所有请求共享同一个socket 2)内置连接池,支持连接复用,减少延迟 3)支持透明gzip压缩响应体 4)通过缓存避免重复请求 5)请求失败时自动重试主机其他...ip,自动重定向 6)丰富API,可扩展性好 4、okhttp使用 //1.创建OkHttpClient OkHttpClient client = new OkHttpClient(); //2.创建...单例模式(Platform类,已经使用Okhttp使用单例) 策略模式(在CacheInterceptor,在响应数据选择中使用了策略模式,选择缓存数据还是选择网络访问。)

3.9K21

Android面试刨根问底之常用源码篇(二):OkHttp, Retrofit,自定义View源码分析总结

OkHttp分析 Okhttp是对Socket封装。有三个主要类,Request,Response,Call默认使用new OkHttpClient() 创建初client对象。...()创建并开启拦截器链 Okhttp拦截器,默认分为5种 RetryAndFollowUpInterceptor 做网络失败重连,但是并不是所有的请求都需要重连,根据响应码。...发起真正网络请求,解析返回数据 http写入网络IO,从网络IO读取返回给客户端数据。...,底层网络请求默认使用Okhttp,本身只是简化了用户网络请求参数配置等,还能与Rxjava相结合,使用起来更加简洁方便。...App应用程序通过Retrofit请求网络,实际上是使用Retrofit接口层封装请求参数,之后由OkHttp完成后续请求操作。

1.2K00

Android OkHttp是如何上位

场景:初入职场小码在开发Android时发现官方推出HttpURLConnection库没流行多久,就被一个OkHttp半路截胡迅速统治了Android网络请求库。甚至!...Android4.4之后,也是基于OkHttp实现!小码决定上秋名山找老司机解惑。 老司机!为什么官方HttpURLConnection4.4 之后也是基于OkHttp实现。...想当年Android最开始网络请求库用是HttpClient,怎奈它问题太多。谷歌爸爸就拉出了HttpURLConnection。就像雍正爷用华妃压制皇后一样。 ?...后来·应用到HTTP协议改进Web应用程序性能。 ? 也是GNU出来铁打的实力派啊!也被应用到了OkHttp中了。就像甄嬛有了槿汐姑姑,那在大前端这个宫里很快就混开了。 ? 我X!还真能省流量。...咦,老司机它GitHub上说支持SPDY,什么鬼啊? ? 这个嘛,就是利用一个socket共享来处理同一个服务所有请求。而且有人对这个谷歌提出技术有争议,而且Http2完全替代它了。

49030

【腾讯经验】闪现社区App网络优化

游戏社区网络请求要为App内部api请求,这类型请求特点是数据量相对较小、请求集中、并发量高且不可缓存等,原有的App网络框架有如下问题: Android使用OkHttp3作为基础库,iOS使用...OkHttp3如果没有做深度定制,在高并发弱网环境下性能一般;NSURLSessionDataTask是一个黑盒子,无法深度改造定制。...Lighting网络组件内部全部使用C++实现,底层网络请求实现使用了TQuicCurl,TQuic主要用来进行quic协议请求;Curl则是Curl + Mbedtls + NgHttp2支持Http2...[image.png] Lighting内部实现参考了OkHttp3责任链模式,所有的网络请求通过一系列拦截器来实现: [image.png] 通过责任链模式,可以解耦请求过程各个阶段,并且允许外部自定义拦截器进行控制...最后网络请求结束,也会返回一系列请求过程性能数据给调用方,调用方可以对比自身耗时数据。

2.3K72

Okhttp如何开启Http2.0

但是我一直有些疑惑,Http2.0为什么后端支持了前端就能直接访问2.0版本了,Okhttp如何开启Http2.0呢?...把 HTTP/1.1 每个请求都当作一个,那么多个请求变成多个请求响应数据分成多个帧,不同帧交错地发送给对方,这就是 HTTP/2 多路复用。...概念实现了单连接上多请求 - 响应并行,解决了线头阻塞问题,减少了 TCP 连接数量 TCP 连接慢启动造成问题.http2 对于同一域名只需要创建一个连接,而不是像 http/1.1 那样创建...生成随机对称密钥,使用证书中服务端公钥加密,发送给服务端 服务端使用私钥解密获取对称密钥 不知道各位有没有思考过一个问题,为什么只要后端将接口升级到Http2.0支持之后,客户端就能自动把所有的请求切换到...2.0必须使用TLS原因就是因为这个ALPN拓展协议。 ? OkHttp Connection 分析 Okhttp是如何实现这整个流程呢,我画了个大概流程图。 ?

5K40

这一次爱奇艺大佬带你深度分析OkHttp源码与Retrofit封装,彻底了解!

我们项目当中每个app都需要用到网络和服务器进行交互,在Android项目开发中使用HTTP协议完成通信的话,基本上都要用到OkHttp或者Retrofit。...OkHttp OkHttp是一个高效HTTP客户端,是目前Android使用最广泛网络框架。它横空出世,让其他网络请求框架都变得黯然失色。...网上一般都推荐RxJava+Retrofit+OkHttp框架,Retrofit负责请求数据请求结果,使用接口方式呈现,OkHttp负责请求过程,RxJava负责异步,各种线程之间切换,用起来非常便利...主要步骤都是: 创建网络请求实体client -> 构建真正网络请求 -> 将网络请求方案与真正网络请求实体结合构成一个请求Call -> 执行网络请求 -> 处理返回数据 -> 处理Android...你是怎么搭建Android应用框架? 责任链模式 interceptorsnetworkInterceptors区别? 设计模式封层解耦理念 动态代理 .........

75200

【知识点】OkHttp 原理 8 连问

前言 OkHttp可以说是Android开发中最常见网络请求框架,OkHttp使用方便,扩展性强,功能强大,OKHttp源码与原理也是面试常客 但是OKHttp源码内容比较多,想要学习它源码往往千头万绪...分发器主要作用是维护请求队列与线程池,比如我们有100个异步请求,肯定不能把它们同时请求,而是应该把它们排队分个类,分为正在请求列表正在等待列表, 等请求完成后,即可从等待列表取出等待请求...ConnectInterceptor 连接拦截器,内部会维护一个连接池,负责连接复用、创建连接(三次握手等等)、释放连接以及创建连接上socket。...已给数据分配连接....责任链模式: OKHttp核心就是责任链模式,通过5个默认拦截器构成责任链完成请求配置 享元模式: 享元模式核心即池中复用,OKHttp复用TCP连接时用到了连接池,同时在异步请求也用到了线程池

69651

OKHttp源码解析(九):OKHTTP连接中三个核心RealConnection、ConnectionPool、StreamAllocation

3.2、平台本身安全策略允向相应主机发送明文请求。对于Android平台而言,这种安全策略主要由系统组件android.security.NetworkSecurityPolicy执行。...: 创建隧道请求 建立Socket连接 发送请求建立隧道 隧道请求是一个常规HTTP请求,只是请求内容有点特殊。...总结一下OkHttp3代理相关处理; 1、没有设置代理情况下,直接与HTTP服务器建立TCP连接,然后进行HTTP请求/响应交互。...1.3对于加密传输设置了HTTP代理服务器HTTP或HTTP2请求,它是与HTTP服务器之间经过代理服务器SSLSocket,一个隧道连接; 1.4对于加密传输设置了SOCKS代理HTTP或HTTP2...8、OkHttp主要使用Okio来做IO操作,这里会基于前面获取到SSLSocket创建于执行IOBufferedSourceBufferedSink等,并保存握手信息以及所选择协议。

5.4K71

七大主流HttpClient程序比较

3、Apache HttpClient 在Android,AndroidSDK中集成了ApacheHttpClient模块,HttpClient就是一个增强版HttpURLConnection,它只是关注于如何发送请求...如果做好封装或者使用android-async-http,Afinal,Xutils也能挺简单完成http请求,但是Android6.0谷歌因为Apache更新难以同步等原因吧已经放弃了HttpClient...OkHttp 是 Square 公司开源针对 Java Android 程序,封装一个高性能 http 请求库。...okHttp优势: 链接复用 Response 缓存 Cookie 默认 GZIP 请求失败自动重连 DNS 扩展 Http2/SPDY/WebSocket 协议支持 默认情况下,OKHttp会自动处理常见网络问题...Retrofit 封装可以说是很强大,里面涉及到一堆设计模式,你可以通过注解直接配置请求,你可以使用不同 http 客户端,虽然默认是用 OKhttp ,可以使用不同 Json Converter

55620

Spring Cloud OkHttp设计原理

OkHttp是square公司开发一个同时支持HttpHttp2协议Java客户端,可用于AndroidJava应用。...OKHttp有如下几个特性: 支持Http1.1、SPDY,Http2 内部采用连接池机制,能够缓存复用Tcp/IP连接,减少请求延迟。...Okhttp3设计原理 本章节将详细介绍OkHttp3底层设计原理,并结合设计原理,总结在使用过程应当注意事项。...OkHttp3核心是拦截器链,通过拦截器链,处理Http请求: RetryAndFollowUpInterceptor,重试重定向拦截器,主要作用是根据请求信息,创建StreamAllocation...CallServerInterceptor拦截器底层使用了高性能okio(okhttp io components)子组件完成请求发送返回流解析。

1.4K30

OKHttp源码解析(八)--阶之连接与请求前奏

类 5、Connection类 一、为什么要做app网络优化 1、keepalive 在http请求,对于请求速度提升降低延迟,keepalive在网络连接发挥着重大作用。...处理连接规范回退策略:当安全套接字连接由于握手/协议问题而失败时,可能会使用不同协议重试连接。当创建单个连接速时候会被创建该了实例。...而HTTP2则不是,一个TCP连接上可以跑多个请求。所以OkHttp里面用一个Http2Connection代表一个连接。然后用Http2Stream代表一个请求。...简单翻译一下就是: 当一个请求被重定向或者证书验证时候,需要多个。为了拥有更好性能,我们更愿意为序列所有使用相同物理连接。为了支持此功能,此类将”"分配"分开。...有人问,为什么要看这段注释,因为这段注释其实就是okhttp复用连接池精神,为后面复用连接池时候做预热。

1.7K20

一文彻底搞懂OkHttp

作者:RayC 链接:https://juejin.cn/post/6909445385266135048 OkHttpAndroid开发中非常常用一个网络请求库了,它支持HTTP1、HTTP2等多种协议...本篇文章基于OkHttp4.9.0版本代码,从OkHttp创建开始,探究OkHttp是如何发起一次网络请求。如果你有耐心看完,相信你会对OkHttp有了一个深刻了解。...如果觉得太长不看的话,看一下总结也是不错呢(手动滑稽) OkHttpClient 使用OkHttp第一步,自然都是创建OkHttpClient了: OkHttpClient client = new...BridgeInterceptor 这个拦截器是应用网络交互一个桥梁。首先他会获取Request里信息,根据请求内容在Request添加或者一些请求头,这些都是用户未感知到。...再来文字总结一下,OkHttpClinent类是一个网络请求配置类,我们通过构建Request来描述我们请求信息,接着使用newCall方法可以创建一个RealCall实例。

1.6K10

Android | okhttp细枝篇

嗨,我是哈利迪~《看完不忘系列》之okhttp(树干篇)一文对okhttp请求流程做了初步介绍,本文将对他一些实现细节相关网络知识进行补充。 本文约2000字,阅读大约5分钟。...源码基于3.14.9,即java版本最新版 推荐阅读「查缺补漏」巩固你HTTP知识体系,常用概念都在了,由于目前用比较多还是http 1.1,所以下面分析会跳过http2,以http 1.1为主...看看抓包数据,请求可见okhttp自动帮我们加上了gzip压缩(具体支不支持还得看后端接口), ?...要是在面试官前吹:“我做玩安卓App,用了okhttp,他强大缓存机制可以为用户提速、节省流量”,是会被吊打的! ? 缓存体系需要客户端后端共建,不然okhttp也有心无力。...连接池维护了一个RouteDatabase来记录ip黑名单,可以记录最近连接失败过ip地址,在RouteSelector则会优先选择不在黑名单ip, //RouteSelector.java Selection

79930

现代移动端网络短连接优化手段总结:请求速度、弱网适应、安全保障

1、前言 众所周之,通常我们开发一个移动端应用,会直接调用系统提供网络请求接口去服务端请求数据,再针对返回数据进行一些处理,或者使用iOS开源AFNetworking/OKHttp这样网络库(...Android可以用HttpURLConnection或者开源okhttp库),管理好请求线程队列,再自动做一些数据解析,就结束了。...对基于浏览器前端开发来说,网络这块能做事情很少,但对于原生移动端应用来说(本文中说原生主要指iOSAndroid应用),整个网络请求过程是自由控制,可以做很多事情。...关于移动端网络DNS问题,《谈谈移动端 IM 开发登录请求优化》一文也有提到,仅供参考。...移动客户端来说,iOS 9 以上 NSURLSession 已原生支持 HTTP2,只要服务端也支持就可以直接使用Android 开源网络库 okhttp3以上版本也支持了 HTTP2,国内一些大型

3.1K20

OkHttp使用完全教程

在没有OkHttp日子, 我们使用HttpURLConnection或者HttpClient. 那么这两者都有什么优缺点呢? 为什么不在继续使用下去呢?...会自动尝试下一个IP - OkHttp还处理了代理服务器问题SSL握手失败问题 使用 OkHttp 无需重写您程序网络代码。...这样, 你就了解了为什么OkHttp没有指定具体请求协议了吧. 因为OkHttp使用请求协议协商升级, 无论是1.1还是2, 都先只以1.1来发送, 并在发送信息头里包含协议升级字段....讲了OkHttp请求响应类, 我们接下来就可以直接讲述OkHttp使用方法了. 3 HTTP GET 3.1 同步GET 同步GET意思是一直等待http请求, 直到返回了响应....但是如果响应体太大(超过1MB), 应避免使用 string()方法, 因为它会将把整个文档加载到内存. 对于超过1MB响应body, 应使用方式来处理响应body.

4.5K42
领券