RichTalk 快报 第 4 期

image.png

《诗》有之:‘高山仰止,景行行止。虽不能至,然心向往之。 - 司马迁

RichTalk 是我们团队每 2 周一次的技术分享活动,前 5 分钟分享最近 2 周社区动态,接着一场技术分享

头条

RFC 9114 HTTP/3

www.rfc-editor.org/rfc/rfc9114… 6 月 IETF QUIC 和 HTTP 工作组成员 Robin Marx 宣布,经过 5 年的努力,HTTP/3 被标准化为 RFC 9114,这是 HTTP 超文本传输协议的第三个主要版本。

http/1.0 在HTTP/1.0中,客户端和服务器之间的每次请求/响应交换都会创建一个新的 TCP 连接,这意味着在每个请求之前 TCP 和 TLS 都要完成握手,所有请求都会产生延迟。在网络层上获得并发的唯一方法是并行使用多个 TCP 连接到同一源。
http/1.1 引入“keep-alive”连接的概念来解决重复建立 TCP 连接的问题,该概念允许客户端重用 TCP连接,从而分摊建立初始连接的成本和跨多个请求的缓慢启动。
http/2.0 SPDY 出现,首次引入了 HTTP “流”的概念:这是一种抽象的概念,允许 HTTP 实现在同一个 TCP 连接上并发地复用不同的 HTTP 交换,允许浏览器更有效地重用 TCP 连接。HTTP/2 在单独的流上隔离不同的 HTTP 交换。
http/3.0 不使用 TCP 作为会话的传输层,而是使用 QUIC(一种新的Internet传输协议)。QUIC 流共享相同的 QUIC 连接,因此不需要额外的握手和慢启动来创建新的 QUIC 流,但 QUIC 流是独立交付的,因为 QUIC 数据包被封装在 UDP 数据报头的顶部,所以在大多数情况下,包丢失只影响一个流而不影响其他流。

Screen Shot 2021-06-19 at 9.26.36 PM.png

内容来自语雀:yuque.antfin.com/shimeng.xj/…

假设我们使用 HTTP/1.0 获取一张图片。首先我们需要建立一个连接,然后发送请求,等待服务器处理这个请求,然后接收响应包。如果我们想在第一个资源返回响应之前获取另外一个资源,我们又要经历同样的阶段:建立连接、发送请求、等待处理、接收响应。从图中可以看出,大部分时间花费在连接建立阶段。 Screen Shot 2021-06-19 at 9.31.26 PM.png HTTP/1.1 通过连接复用,新的请求直接复用前一个连接,减少了连接建立的耗时,但只有在前一个响应结束后才能发送下一个请求,这被称为队头阻塞。在过去,HTTP 实现使用许多并行连接来克服这个问题。应用程序甚至可以配置并行 HTTP 连接的数量。然而这导致客户端和服务器的网络行为效率低下。 Screen Shot 2021-06-19 at 9.33.20 PM.png HTTP/2 通过在单个连接上多路复用多个流来解决队头阻塞问题。请求可以更早发送,来自不同流的数据也可以交错。这允许更有效地使用单个 TCP 连接,因为空闲等待时间大大减少。 Screen Shot 2021-06-19 at 9.41.52 PM.png HTTP/3 接建立的速度要比 HTPP/2 更快,因此请求可以更快地发出。 Screen Shot 2021-06-19 at 9.46.40 PM.png HTTP/3 的流是独立的,这与 HTTP/2 不同,所有流共享一个 TCP 连接。 Screen Shot 2021-06-19 at 9.50.13 PM.png 在大多数网络上,数据包会丢失。这是无线网络上的正常事件,也是检测网络容量的自然组成部分。在 HTTP/2 中,丢包可能会影响许多流,因为所有 HTTP/2 流共享一个 TCP 连接。 在 HTTP/3 中,只有相关的 HTTP 流受到影响,属于其他流的数据不受影响。 HTTP/2: image1-1.gif HTTP/3: image4-1.gif HTTP/3 拥有更快的连接建立速度以及更出色的丢包处理能力,这些改进是由底层的传输协议 QUIC 实现。

QUIC 是一种全新的可靠传输协议,已被 IETF(Internet Engineering Task Force ,互联网工程任务组)标准化。它基于与TCP的相同概念,但提供了端到端加密、多路复用流、身份验证功能。 QUIC安全性是建立在TLS 1.3之上的。QUIC依靠TLS 1.3来执行安全握手,不需要像TCP那样三次握手,QUIC将握手时间减少到单次往返。

QUIC 的多路复用流不会受到队头阻塞的影响。一个QUIC端点能够将它收到的数据包信息传递给另一个端点,并且不受 TCP 限制的影响,因此 QUIC 具有更出色的丢包恢复能力。

QUIC 还支持连接迁移,允许连接在不同网络接口之间无缝移动,且无需重新建立会话,例如在蜂窝网和 Wi-Fi 之间切换。

更多详情阅读 RFC 原文。

扩展阅读:

精选

The State of Serverless 2022

www.datadoghq.com/state-of-se…

  1. 在云上运营的组织超过一半采用了 serverless

image.png

  1. Python 和 Node.js 在 Lambda 用户中仍然占主导地位

image.png

  1. 超过 60% 的大型组织已经部署了至少三种语言的 Lambda 函数

image.png

  1. API Gateway 和 SQS 是最常调用 Lambda 函数的 AWS 技术

image.png

  1. 来自 API Gateway 的 80% 的 Lambda 调用是针对单一用途的函数

image.png

  1. 五分之一的 Lambda 用户将函数部署为容器镜像

image.png

  1. 超过 20% 的 Lambda 客户也在使用 ECS Fargate

image.png

  1. Google Cloud Run 是在 Google Cloud 中部署 serverless 应用程序增长最快的方法

image.png

  1. Azure Functions 是 Azure 最受欢迎的 serverless 产品,但 Azure 容器实例的采用正在快速增长

image.png

你不知道的 HTML 属性

www.smashingmagazine.com/2022/03/htm… 一些有趣的 HTML 属性,您可能听说过也可能没有听说过,如果觉得这些属性有用,可以在您的项目中尝试使用。

  1. 虚拟键盘的 enterkeyhint 属性
<input type="text" enterkeyhint="done">
复制代码

enterkeyhint 接受七个可能的值,这些值将替换“enter”键上的文本

  • enter,
  • done,
  • go,
  • next,
  • previous,
  • search,
  • send.

image.png

  1. 样式表上的 **title** 属性
<link href="main.css" rel="stylesheet" title="Default">
<link href="contrast.css" rel="alternate stylesheet" title="High Contrast">
<link href="readable.css" rel="alternate stylesheet" title="Readable">
复制代码

Firefox 有一个选项可让您选择查看页面时要使用的样式表。 image.png

  1. 元素的**decoding**属性
<img src="/images/example.png" alt="Example" decoding="async">
复制代码

取值:

  • sync:同步解码图像。
  • async:异步解码图像以避免延迟其他内容的呈现。
  • auto:默认允许浏览器使用自己的内置解码方法。

扩展阅读:

动态

猜你喜欢

转载自juejin.im/post/7109057949347086350