http2.0 有什么优势

Posted 性能与架构

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http2.0 有什么优势相关的知识,希望对你有一定的参考价值。

现在我们使用的是Http1.1,互联网发展迅速,http这个基础协议也要升级了,http2.0就要来了

http2.0 的核心优势

(1)采用二进制格式传输数据,而非 http1.1 的文本格式,二进制格式在协议的解析和优化扩展上带来更多的优势和可能

(2)对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量,而 http1.1 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源,头压缩能够很好的解决该问题

(3)多路复用,就是多个请求都是通过一个 TCP 连接并发完成,http1.1 虽然通过pipeline也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 http2.0做到了真正的并发请求,同时,流还支持优先级和流量控制

(4)Server Push,服务端能够更快的把资源推送给客户端,例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 html 再发送这些请求,当客户端需要的时候,它已经在客户端了

http2.0 的基础

http2.0 有一个根本性的改动,就是不使用文本格式了,采用了二进制格式

二进制更易于frame(帧 数据包)的实现

frame 就是 http2.0 的基础,可以把它理解为TCP的数据包一样,http2.0 之所以能够有如此多的新特性,正是因为底层数据格式的改变

http2.0 中 每次传输的数据视为数据流,整个数据被拆分放入多个 frame 中,每个 frame 中记录了此帧的数据长度、类型、所属数据流的ID

多路复用

http2.0 能对网络效率有较大提升,其中一个主要原因就是使用了‘多路复用’机制

先看下http1.1中多请求的处理方式



可以看到,要么是串行,一个请求完成后再发另一个请求,要么是可以并发,但请求结果的返回过程必须是顺序的,第一个响应完成后,才能响应第二个,即使第二个先处理完成,也要等待第一个,就产生了阻塞

http2.0 的处理方式



只要有了请求结果数据,可以立即返回,不关心顺序问题,因为数据都被组装成了一个个的frame帧,frame中记录了自己所属数据流的ID,客户端把frame都接收到以后,根据数据流ID再进行组装即可