首页 > 其他分享 >GRPC与HTTP/3.0

GRPC与HTTP/3.0

时间:2024-05-07 12:12:22浏览次数:26  
标签:HTTP 3.0 GRPC TCP tcp http3 http2 连接

弱网环境下的表现不同

GRPC是基于HTTP/2.0协议开发的,HTTP/2.0通过以下举措在性能方面有极大的提升:

  • 引出了Stream 概念,多个 Stream 可以复用在一条 TCP 连接,解决了HTTP/1.1的队头阻塞问题(在一条TCP连接上服务端对多个请求的响应只能一个一个同步的响应,即使多个请求是并发的)
  • 开发了HPACK算法压缩头部解决http/1.1的头部巨大且重复的问题
  • 将 HTTP/1 的文本格式改成二进制格式传输数据,极大提高了 HTTP 传输效率
  • 服务器主动推送

但此时HTTP2依然存在队头阻塞问题,不过此时的队头阻塞问题存在于TCP层。当发生网络丢包时,由于TCP的机制,服务端需要等丢的包重传成功后,才会再接收此次TCP连接之后的数据包。而此时,所有的请求都会被阻塞住直到丢包重传成功。

为了解决TCP层面的队头阻塞,HTTP/3.0将传输层的tcp协议换成了udp协议,如果发生丢包,只会中断一个数据流,而不是像http2一样中断了所有的数据流,解决了在弱网丢包环境下的队头阻塞问题。

通信连接建立的不同

  • 快速握手:grpc基于http2,而http2是基于tcp协议的,因此需要通过握手建立连接,而http3是基于udp协议的,意味着http3建立连接的速度是很快的。
  • 连接迁移:http3中的连接使用一个随机数,称作Connection ID 来确认通信双方的连接建立与否。因此在网络切换场景下,http3是可以做到连接无痕迁移的,用户在切换网络时不会对应用的延迟有任何感知。而http2是基于tcp的,当切网时,基于tcp的应用会首先无法正常连接,等连接超时后重新建立tcp连接,而重新握手也是需要时间的。

数据传输上的不同

  • 传输的数据都是二进制帧的结构,但http3的二进制帧会比http2的二进制帧更简洁一点。

  • http3头部压缩算法在http2的基础上做了改进,http2的静态表有61项请求头,http3扩展到了91项。

结论

基于弱网环境下http3的表现以及连接迁移的特性,http3会很适合用在移动端进行数据通信。

在连接已建立以及网络状态良好的情况下,由于http2与http3都是基于stream的,数据都是二进制帧的结构,对连接可以多路复用的,在数据传输速度上面,虽然http3在头部压缩算法方面做了相应的改进,但对于都是多路复用的通信场景,在网络通畅的情况下应该区别不大。

标签:HTTP,3.0,GRPC,TCP,tcp,http3,http2,连接
From: https://www.cnblogs.com/KbMan/p/18176990

相关文章

  • vsCode配置自动补全css兼容性代码 ,解决 Autoprefixer 3.0无效
    问题:使用vsCode编辑器,配置Autoprefixer3.0无法实现自动补全兼容性代码解决方法:将Autoprefixer3.0更换到2.0版本,再将网上冲浪的结果整理了一番,终于找到了解决办法,并进行以下步骤进行验证。解决步骤:1、首先搭建node.js环境2、打开vsCode搜索Autoprofixer,一般默认情况下都是最新版......
  • Java发送HTTP GET/POST请求
    一、Java11HttpClient在Java11的java.net.http.*包中,有一个HttpClient类可以完成HTTP请求。Java11HttpClientExample.javapackagecom.lyl.http;importjava.net.URI;importjava.net.URLEncoder;importjava.net.http.HttpClient;importjava.net.http.HttpRequest;im......
  • https加密机制
    参考:https://www.cnblogs.com/sxiszero/p/11133747.htmlhttps://www.cnblogs.com/technology178/p/14094375.html对称加密:只用一个秘钥的加解密,如果秘钥进行了泄漏,导致数据不安全非对称加密:非对称加密算法需要一组密钥对,分别是公钥和私钥,这两个密钥是成对出现的。公钥加密的内......
  • [智能网联汽车] 乾崑车云服务3.0:智能、便捷、安全的全新升级 [转]
    在当今数字化时代,智能汽车已经成为了人们生活中的重要组成部分。华为于2024年4月24日发布了最新的车云服务——乾崑(kun)车云服务3.0,为用户提供了全生命周期的极致体验和贴心服务。下面我们来详细解读一下乾崑车云服务3.0的六大亮点。1VHR云服务3.0:乾崑云鹊大模型乾崑云鹊大......
  • [java与https]第一篇、证书杂谈
    一、算法、密钥(对)、证书、证书库令狐冲是个马场老板,这天,他接到店里伙计电话,说有人已经签了租马合同,准备到马场提马,,他二话不说,突突突就去了,到了之后,发现不认识租客。令狐冲说,你把你租马合同给我看看,这就是证书。没成想这租客是个二道贩子,他呼啦一下掏出来一个装满租马合同的文件......
  • FLINKCDC3.0 datastream程序运行测试
    1.编写程序本地运行正常2.程序正常打包3.提交作业到FLINK集群./bin/flinkrun-mhdf1:8081-ccom.org.cdc.FlinkCDCDataStreamTest./FlinkCdc-test.jar4.监控作业运行作业正常运行,cud查看taskmanagerlog,可以看到cud变更数据5.给当前的Flink程序创建Savepointbin/flin......
  • QQBot Cqhttp服务器配置
    配这个一开始的时候还有点蒙,在这里记录一下。看到QQ指令机器人,心血来潮打算自己也下个cqhttp配一配,然后就有了这篇博客。QQ指令机器人的历史还是相当古老的。10年左右QQ推出了webQQ,基于http协议下的通信特别方便进行抓包篡改,于是就有了酷Q机器人这个小东西。而cqhttp也是相当轻......
  • RestClient C# 举例 是用jsonbody ,并列出httpclient 等价的方式
    以下是使用RestSharp发送POST请求并附带JSON请求体的示例,以及相应的使用HttpClient的等价方式:首先,使用RestSharp:usingSystem;usingRestSharp;usingNewtonsoft.Json;classProgram{staticvoidMain(string[]args){//创建RestClient实......
  • HTTP请求中包含账号密码
    如果你需要在HTTP请求中包含账号密码,你可以使用基本的HTTP身份验证。在C#中,你可以通过设置HttpClient的DefaultRequestHeaders来添加身份验证信息。以下是修改后的示例代码:usingSystem;usingSystem.Net.Http;usingSystem.Text;usingSystem.Threading.Tasks;classP......
  • HttpClient 进行soap请求
    当你在使用C#的HttpClient进行SOAP请求时,确保你的代码类似于以下示例:usingSystem;usingSystem.Net.Http;usingSystem.Text;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(string[]args){try{//创建H......