HTTP/2——gRPC 的秘密武器
大家好!本次讲座我们将学习什么是 HTTP/2,它的工作原理,它为何是 gRPC 的强大武器,并将其与旧的 HTTP/1.1 进行比较。
以下是完整的 gRPC 课程播放列表的 YouTube链接
;GitHub 代码库:pcbook-go和pcbook-java;
GitLab 代码库:pcbook-go和pcbook-java
为什么选择HTTP/2?
gRPC 使用 HTTP/2 作为传输协议,因此它继承了 HTTP/2 的一些优秀特性,例如二进制帧。二进制帧具有高性能、高鲁棒性、传输更轻量级、解码更安全等优点,优于其他基于文本的协议。而且由于它是二进制的,因此与协议缓冲区 (Protocol Buffer) 非常契合。
HTTP/2 还使用 HPACK 压缩标头,这将降低开销成本并提高性能。
HTTP/2 支持多路复用,这意味着客户端和服务器可以通过单个 TCP 连接并行发送多个请求和响应。这有助于降低延迟并提高网络利用率。
最后,HTTP/2 支持服务器推送,即客户端只需发送一个请求,服务器即可返回多个响应。这在很多情况下对于降低客户端和服务器之间的往返延迟至关重要,因为服务器可以预先知道客户端需要哪些资源,并在客户端请求之前就将其发送出去。
让我们通过这个演示来了解一下 HTTP/2 相对于 HTTP/1.1 的速度如何。在这个演示中,我们将尝试从服务器加载 200 张小图片。
如您所见,HTTP/2 的加载速度几乎是 HTTP/1.1 的两倍。
HTTP/2 的工作原理
那么,HTTP/2 的底层工作原理是什么呢?它的逻辑结构可以用下图表示:
单个 TCP 连接承载多个双向数据流。每个数据流都有一个唯一的标识符,并承载多个双向消息。
每条消息,无论是请求还是响应,都会被分解成多个二进制帧。帧是承载不同类型数据的最小单元,例如头部、设置、优先级、数据等等。
实际上,这些数据流并非独立传输,而是在连接过程中交错帧传输,并在到达另一端时重新组装。正是由于这种二进制帧层,HTTP/2 才能够实现流复用。
HTTP/2 与 HTTP/1.1
好了,现在你已经了解了HTTP/2的工作原理。让我们把它和HTTP/1.1进行比较,看看它们之间有什么区别。
- 首先,HTTP/2 是二进制协议,而 HTTP/1.1 是文本协议。
- HTTP/2 中头部信息是压缩的,而 HTTP/1.1 中头部信息则是纯文本。
- HTTP/2 支持多路复用,而 HTTP/1.1 不支持。
- 在 HTTP/2 中,我们可以在单个连接中发送多个请求和响应,而在 HTTP/1.1 中,我们只能发送 1 个请求和响应,这意味着我们必须创建多个 TCP 连接才能发送多个请求。
- 服务器推送功能在 HTTP/2 中是可行的,但在 HTTP/1.1 中则不可行。
- HTTP/2 于 2015 年发布,而 HTTP/1.1 于 1997 年发布。
关于HTTP/2的讲座就到此结束了。在下一讲中,我们将学习gRPC的不同用例,并将其与REST进行比较。
如果您喜欢这篇文章,请订阅我们的 YouTube 频道并在 Twitter 上关注我们,以便将来获取更多教程。
如果你想加入我在Voodoo的优秀团队,请点击此处查看我们的招聘信息。可远程办公,也可在巴黎/阿姆斯特丹/伦敦/柏林/巴塞罗那现场办公,公司提供签证担保。
文章来源:https://dev.to/techschoolguru/http-2-the-secret-weapon-of-grpc-32dk



