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

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

KPL 的重要概念

以下部分包含了解 Kinesis Producer Library(KPL)并从中获益所需的概念和术语。

记录

在本指南中,我们区分了 KPL 用户记录Kinesis Data Streams 记录。当我们使用没有限定词的术语记录时,我们指 KPL 用户记录。当我们提及 Kinesis Data Streams 记录时,我们明确指 Kinesis Data Streams 记录。

KPL 用户记录是对用户有特别含义的数据 Blob。示例包括表示网站上的 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 聚合,您可将 1000 条记录打包到 10 条 Kinesis Data Streams 记录中,从而将 RPS 降低到 10(每条记录 50 KB)。

集合

集合指批处理多条 Kinesis Data Streams 记录,并通过调用 API 操作 PutRecords 在单个 HTTP 请求中发送此类记录,而无需在其自己的 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--|