本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以下各节包含理解 Kinesis Producer 库并从中受益所必需的概念和术语()KPL。
记录
在本指南中,我们区分了KPL用户记录和 Kinesis Data Streams 记录。当我们使用没有限定词的术语记录 时,我们指的是 KPL 用户记录。当我们提及 Kinesis Data Streams 记录时,我们明确指 Kinesis Data Streams 记录。
KPL 用户记录是对用户有特别含义的数据 Blob。示例包括代表网站上 UI 事件的 JSON blob 或来自 Web 服务器的日志条目。
Kinesis Data Streams 记录是 Kinesis Data Streams 服务定义的数据结构的一个实例。Record
API它包含一个分区键、序列号和数据 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 中的一个分片为例,该分片目前以每秒 1,000 条记录的恒定速度运行,每条记录为 512 字节。通过KPL聚合,您可以将 1,000 条记录打包到 10 个 Kinesis Data Streams 记录中,从而将记录减少RPS到 10 条(每条 50 KB)。
集合
集合是指批量处理多个 Kinesis Data Streams 记录,然后通过调用PutRecords
操作在HTTP单个请求中发送它们,而不是在自己的请求中发送每条 Kinesis Data Streams 记录。API HTTP
与不使用收集相比,这增加了吞吐量,因为它减少了发出许多单独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--|