KPL 重要概念 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

KPL 重要概念

以下各节包含理解 Kinesis 生产者库 (KPL) 并从中受益所必需的概念和术语。

记录

在本指南中,我们区分了 KPL 用户记录和 K inesis Data Streams 记录。当我们使用不带限定符的术语记录时,我们指的是 KPL 用户记录。当我们提及 Kinesis Data Streams 记录时,我们明确地说 Kinesis Data Streams 记录

KPL 用户记录是一组对用户具有特殊意义的数据。示例包括表示网站上的 UI 事件的 JSON Blob 或 Web 服务器中的日志条目。

Kinesis Data Streams 记录是 Kinesis Data Streams 服务 API 定义Record的数据结构的一个实例。它包含一个分区键、序列号和数据 Blob。

批处理

批处理 指对多个项执行单个操作而不是对每个单独的项重复执行操作。

在这种情况下,“物品” 是一条记录,操作会将其发送到 Kinesis Data Streams。在非批处理情况下,您可以将每条记录放在单独的 Kinesis Data Streams 记录中,然后发出一个 HTTP 请求将其发送到 Kinesis Data Streams。利用批处理,每个 HTTP 请求可携带多条记录而不仅仅是一条记录。

KPL 支持两种类型的批处理:

  • 聚合 — 在单个 Kinesis Data Streams 记录中存储多个记录。

  • 收集-使用 API 操作PutRecords将多个 Kinesis Data Streams 记录发送到 Kinesis 数据流中的一个或多个分片。

这两种类型的 KPL 批处理设计为共存,可以相互独立开启或关闭。默认情况下,两种批处理将同时启用。

聚合

聚合是指在 Kinesis Data Streams 记录中存储多个记录。聚合允许客户增加每个 API 调用发送的记录的数目,这将有效增加创建器吞吐量。

Kinesis Data Streams 分片每秒最多支持 1,000 条 Kinesis Data Streams 记录,或 1 MB 的吞吐量。Kinesis Data Streams 每秒记录数限制将客户与小于 1 KB 的记录绑定。记录聚合允许客户将多个记录合并为单个 Kinesis Data Streams 记录。这使客户能够提高其每分片吞吐量。

考虑以下情况:区域 us-east-1 中的一个分片当前正在以每秒 1000 条记录的恒速运行,其中每条记录的大小为 512 个字节。通过 KPL 聚合,您只能将 1,000 条记录打包成 10 条 Kinesis Data Streams 记录,从而将 RPS 减少到 10 条(每条 50 KB)。

集合

收集是指批处理多个 Kinesis Data Streams 记录,然后通过调用 API 操作在单个 HTTP 请求中发送它们PutRecords,而不是在自己的 HTTP 请求中发送每条 Kinesis Data Streams 记录。

与不使用集合相比,这将增加吞吐量,因为它减少了发出多个单独 HTTP 请求的开销。实际上,PutRecords 本身专用于实现此目的。

收集与聚合的不同之处在于,它处理的是 Kinesis Data Streams 记录组。正在收集的 Kinesis Data Streams 记录仍然可以包含来自用户的多条记录。可通过如下方式来可视化此关系:

record 0 --| record 1 | [ Aggregation ] ... |--> Amazon Kinesis record 0 --| ... | | record A --| | | ... ... | | record K --| | record L | | [ Collection ] ... |--> Amazon Kinesis record C --|--> PutRecords Request ... | | record S --| | | ... ... | | record AA--| | record BB | | ... |--> Amazon Kinesis record M --| ... | record ZZ--|