HTTP1.0、1.1、2.0对比优缺点详解(长链接、缓存、错误码增加、断点续传、Host优化、身份认证、多路复用、二进制分帧、报文压缩、服务端推送)

HTTP1.0

问题

短连接

每一个请求建立一个TCP连接,请求完成后立马断开连接。这将会导致2个问题:连接无法复用。

阻塞

连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。会导致带宽无法被充分利用,以及后续健康请求被阻塞。客户端同时发起的请求数目是固定的,如果太多就会排队阻塞。

HTTP1.1

优化

长连接(增加connection header)

通过http pipelining实现,http1.1默认开启长连接keep-alive(close时为短连接)。多个http 请求可以复用一个TCP连接,服务器端按照FIFO原则来处理不同的Request,一个Tcp连接通道可以并行多个http的请求和关闭。但是服务端还是根据客户端请求的先后顺序并且处理的,所以服务器依然会阻塞。

缓存优化

缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

错误码增加

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除

断点续传优化

引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

新增请求方式

PUT:请求服务器存储一个资源。
DELETE:请求服务器删除标识的资源。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。

Host优化

新增Host优化,通过不同host可以支持服务一个Ip对应多个虚拟Host主机。在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。

节约宽带(身份认证)

HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器。如果返回401,客户端就可以不用发送请求body了节约了带宽。

http 2.0

优化

多路复用

客户端和服务端可以并行发起或者回复,避免串行带来的阻塞。做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

在这里插入图片描述

从上图可以看出,请求index.html页面的时候,浏览器会去请求style.css和scripts.js的文件。左边的图是顺序加载两个个文件的,右边则是并行加载两个文件。

我们知道,TCP连接相当于两根管道(双工,一个用于服务器到客户端,一个用于客户端到服务器),管道里面数据传输是通过字节码传输,传输是有序的,每个字节都是一个一个来传输。

例如客户端要向服务器发送Hello、World两个单词,只能是先发送Hello再发送World,没办法同时发送这两个单词。不然服务器收到的可能就是 HWeolrllod(注意是穿插着发过去了,但是顺序还是不会乱)。

接上面的问题,能否同时发送Hello和World两个单词能,当然也是可以的,可以将数据拆成包,给每个包打上标签。发的时候是这样的①H ②W ①e ②o ①l ②r ①l ②l ①o ②d。这样到了服务器,服务器根据标签把两个单词区分开来。实际的发送效果如下图:在这里插入图片描述

 二进制分帧

二进制分帧可以实现上面的效果,HTTP/2 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。并行地在同一个 TCP 连接上双向交换消息。二进制分帧层在 应用层(HTTP/2)和传输层(TCP or UDP)之间。HTTP/2并没有去修改TCP协议而是尽可能的利用TCP的特性。

在这里插入图片描述
在二进制分帧层中, HTTP/2 会将所有传输的信息分割为帧(frame),并对它们采用二进制格式的编码 ,其中 首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面。

HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 连接会随着时间进行自我「调谐」,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因,让原本就具有突发性和短时性的 HTTP 连接变的十分低效。

HTTP/2 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升。

报文压缩

在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。

       HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

服务端推送

一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

       为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的分布式计算框架,旨在处理大规模数据集。它由Apache基金会开发和维护。Hadoop的版本演进经历了几个重要的里程碑,其中包括Hadoop 1.0和Hadoop 2.0。 Hadoop 1.0是Hadoop框架的初始版本,也被称为Hadoop MapReduce。它的核心组件包括Hadoop Distributed File System(HDFS)和MapReduce计算模型。HDFS是一个分布式文件系统,用于存储大规模数据集,并提供高容错性和可靠性。MapReduce是一种用于处理大规模数据集的编程模型,它将数据分成小块,并在分布式集群上进行并行处理。 Hadoop 2.0引入了一些重要的改进和新功能。最显著的改变是引入了YARN(Yet Another Resource Negotiator)作为集群资源管理器。YARN的目标是将资源管理和作业调度与MapReduce计算模型解耦,使得Hadoop可以支持更多的计算模型。YARN使得Hadoop集群可以同时运行多个应用程序,如MapReduce、Apache Spark、Apache Flink等。 Hadoop的三大组件是HDFS、YARN和MapReduce。HDFS是Hadoop的分布式文件系统,它负责存储和管理数据。YARN是Hadoop的资源管理器,它负责集群中的资源分配和作业调度。MapReduce是Hadoop的计算模型,它负责将数据分成小块并在集群中进行并行计算。 至于"Hadoop三驾马车"的说法,通常是指Hadoop、Hive和HBase。Hive是一个建立在Hadoop上的数据仓库基础设施,它提供了一种类似于SQL的查询语言,可以方便地对存储在Hadoop中的数据进行查询和分析。HBase是一个基于Hadoop的分布式列式存储系统,它提供了对大规模结构化数据的随机实时读写访问能力。这三个组件相互配合,可以构建起一个完整的大数据处理平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值