HTTP1.0和HTTP2.0的区别
一、HTTP1.0
HTTP 1.0
浏览器与服务器默认为短连接,每次请求都需要与服务器建立一个TCP
连接
服务器完成请求处理后立即断开TCP
连接,然后依次建立新的TCP连接,服务器不跟踪每个客户也不记录过去的请求。
例如,解析html
文件,当发现文件中存在资源文件的时候,这时候又创建单独的链接
最终导致,一个html
文件的访问包含了多次的请求和响应,每次请求都需要创建连接、关系连接
这种形式明显造成了性能上的缺陷
如果需要建立长连接,需要设置一个非标准的Connection字段 Connection: keep-alive
HTTP2.0
HTTP/2.0默认是长连接。HTTP/2.0支持长连接,即在一个TCP连接上可以并发多个请求和响应,避免了频繁建立和关闭连接的开销,提高了性能和效率12。HTTP/2.0与长连接相关的特性
- 多路复用:HTTP/2.0引入了多路复用技术,允许在同一个TCP连接上并发发送多个请求和响应,避免了为每个请求建立新的TCP连接13。
- 二进制协议:HTTP/2.0采用二进制格式传输数据,减少了解析的复杂性,提高了传输效率1。
- 头部压缩:使用HPACK算法对头部进行压缩,减少了头部的大小,降低了网络传输开销1。
- 流控制和优先级:引入了流控制和优先级的机制,可以根据需求对请求进行优先级排序,提高了资源利用率1
HTTP2缺点:
1)GRPC尚未提供连接池,需要自行实现
2)尚未提供“服务发现”、“负载均衡”机制
3)因为基于HTTP2,绝大部多数HTTP Server、Nginx都尚不支持,即Nginx不能将GRPC请求作为HTTP请求来负载均衡,而是作为普通的TCP请求(nginx1.9版本已支持)
4)Protobuf二进制可读性差(貌似提供了Text_Fromat功能)默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)
5)难以调试和跟踪,在排查问题时,可能需要额外的工具和技术来解析和查看数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?