讲一个小故事,可能有点晦涩难懂,我尽量言简意赅。
在HTTP协议发展史中一共经历了几个大的阶段,HTTP1.0 HTTP1.1 HTTP2
其中HTTP1.0引入了POST、HEAD等方法,增加了状态码、版本号、Header等字段,但是此时存在一个重大的问题,那就是每次网络请求都会重新做一次三次握手的网络连接和开销,频繁的TCP链接会大量占用客户端和服务端的网络资源。
于是HTTP1.1引入了KeepAlive、管道机制、分块传输等等特性,其主要就是为了在一次TCP请求中可以实现多次的HTTP请求,极大的减少了网络连接产生的开销,也减低了服务器的资源滥用情况,成为了2000年以来互联网发展的重要技术力量,但是HTTP1.1的长链接技术虽然解决了网络连接的开销问题,但是其请求还是阻塞式的,相当于每一个请求都需要等待前一个请求完成后才可以开始处理下一个请求,如果前一个延迟可能会影响后续的其他请求响应。
所以HTTP2.0版本在2015年应运而生,其主要的方向就是提高请求性能和效率,特别是延迟和吞吐量方面,比如多路复用、二进制分帧、头部压缩等等,其中多路复用的含义就是在一个TCP链接上同时进行多个请求的传输和响应,这些请求之间不再是阻塞式的等待,而是独立接受和处理的,相互之间不再会有干扰和影响,这样可以极大的提高网络的传输效率,也给用户提供更好的体验。
从HTTP的发展史看,工程师们挖空心思的去利用算法和协议在一个TCP链接中大做文章,从长链接到多路复用都是挑战用最小的资源换取最大的收益,极度压榨计算资源和性能,而不是简单的使用多连接并发的模式去提高性能和吞吐量。
今天我看到有人说“复用AD摄像头是低成本的方案”,我真是气不打一处来。对,独立一条线路肯定是高成本方案,但是“复用才是真正的高成本方案”,因为你面对的技术难度完全一个Level的,简单的堆砌我想任何人都做得出来。
借用诸葛亮的话:“我从未见过如此厚颜无耻之人”。
蔚来汽车[超话]