

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

# 使用 Amazon Kinesis Producer Library（KPL）开发产生器
<a name="developing-producers-with-kpl"></a>

Amazon Kinesis Data Streams 创建器是指将用户数据记录放入 Kinesis 数据流中（也称为*数据摄取*）的应用程序。Amazon Kinesis Producer Library（KPL）简化了创建器应用程序的开发，从而允许开发人员实现到 Kinesis 数据流的高写入吞吐量。

您可以通过 Amazon CloudWatch 监控 KPL。有关更多信息，请参阅 [使用亚马逊监控 Kinesis 制作人库 CloudWatch](monitoring-with-kpl.md)。

**Topics**
+ [查看 KPL 的作用](#developing-producers-with-kpl-role)
+ [了解使用 KPL 的优势](#developing-producers-with-kpl-advantage)
+ [了解何时不使用 KPL](#developing-producers-with-kpl-when)
+ [安装 KPL](kinesis-kpl-dl-install.md)
+ [从 KPL 0.x 迁移至 KPL 1.x](kpl-migration-1x.md)
+ [转换为适用于 KPL 的 Amazon Trust Services（ATS）证书](kinesis-kpl-upgrades.md)
+ [KPL 受支持平台](kinesis-kpl-supported-plats.md)
+ [KPL 的重要概念](kinesis-kpl-concepts.md)
+ [将 KPL 与产生器代码集成](kinesis-kpl-integration.md)
+ [使用 KPL 写入 Kinesis Data Streams](kinesis-kpl-writing.md)
+ [配置 Amazon Kinesis Producer Library](kinesis-kpl-config.md)
+ [实现消费端取消聚合](kinesis-kpl-consumer-deaggregation.md)
+ [将 KPL 与 Amazon Data Firehose 搭配使用](kpl-with-firehose.md)
+ [将 KPL 与 AWS Glue 架构注册表一起使用](kpl-with-schemaregistry.md)
+ [配置 KPL 代理配置](kpl-proxy-configuration.md)
+ [KPL 版本生命周期策略](kpl-version-lifecycle-policy.md)

**注意**  
建议您升级到最新 KPL 版本。KPL 会定期更新至最新版本，包括最新依赖项和安全补丁、错误修复以及向后兼容的新功能。有关更多信息，请参阅 [https://github.com/awslabs/amazon-kinesis-producer/releases/](https://github.com/awslabs/amazon-kinesis-producer/releases/)。

## 查看 KPL 的作用
<a name="developing-producers-with-kpl-role"></a>

KPL 是一个高度可配置的库 easy-to-use，可帮助您写入 Kinesis 数据流。它在您的创建器应用程序代码和 Kinesis Data Streams API 操作之间充当中介。KPL 执行以下主要任务：
+ 利用可配置的自动重试机制对一个或多个 Kinesis 数据流进行写入
+ 收集记录并使用 `PutRecords` 根据请求将多条记录写入多个分片
+ 聚合用户记录以增加负载大小并提高吞吐量
+ 与 [Kinesis Client Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html)（KCL）无缝集成以在消费端上取消聚合批记录
+ 代表您提交 Amazon CloudWatch 指标，以提供对制作人绩效的可见性

请注意，KPL 与中提供的 Kinesis Data Streams API 不同。[AWS SDKs](https://aws.amazon.com/tools/)Kinesis Data Streams API 可帮助您管理 Kinesis Data Streams 的许多方面（包括创建流、重新分片以及放置并获取记录），而 KPL 提供专用于摄取数据的提取层。有关 Kinesis Data Streams API 的信息，请参阅 [Amazon Kinesis API Reference](https://docs.aws.amazon.com/kinesis/latest/APIReference/)。

## 了解使用 KPL 的优势
<a name="developing-producers-with-kpl-advantage"></a>

以下列表说明了使用 KPL 开发 Kinesis Data Streams 创建器的部分主要优势。

KPL 可在同步或异步使用案例中使用。除非存在使用同步操作的具体原因，否则建议您使用异步接口的较高性能。有关这两种使用案例和示例代码的更多信息，请参阅 [使用 KPL 写入 Kinesis Data Streams](kinesis-kpl-writing.md)。

 **性能优势**   
KPL 可帮助构建高性能创建器。考虑以下情况：您的 Amazon EC2 实例充当代理，从数以百计或数以千计的低功率设备中收集 100 个字节的事件并将记录写入 Kinesis 数据流中。这些 EC2 实例均须将每秒数以千计的事件写入您的数据流。要实现所需的吞吐量，创建器必须实施复杂逻辑（例如，批处理或多线程处理）及重试逻辑并在消费端端取消记录聚合。KPL 为您执行所有此类任务。

 **消费端端易于使用**   
对于使用采用 Java 的 KCL 的消费端端开发人员而言，KPL 无需额外工作即可集成。当 KCL 检索包含多个 KPL 用户记录的已聚合 Kinesis Data Streams 记录时，它将自动调用 KPL，以在将单个用户记录返还到用户之前提取此类记录。  
对于未使用 KCL 而是直接使用 API 操作 `GetRecords` 的消费端端开发人员而言，KPL Java 库可用于在将用户记录返还给用户之前提取此类记录。

 **创建器监控**   
您可以使用 CloudWatch 亚马逊和 KPL 收集、监控和分析您的 Kinesis Data Streams 制作者。KPL 代表您向 CloudWatch 发送吞吐量、错误和其他指标，并且可以配置为在流、分片或生产者级别进行监控。

 **异步架构**   
由于 KPL 可在将记录发送到 Kinesis Data Streams 之前对其进行缓冲处理，因此它在继续运行时之前不会强制调用方应用程序阻止和等待确认记录已到达服务器。用于将记录放入 KPL 中的调用应始终立即返回，并且不等待发送记录或接收来自服务器的响应。相反，将创建一个 `Future` 对象，该对象稍后将接收向 Kinesis Data Streams 发送记录的结果。这与 AWS SDK 中的异步客户端行为相同。

## 了解何时不使用 KPL
<a name="developing-producers-with-kpl-when"></a>

当 KPL 会导致库（用户可配置）中产生高达 `RecordMaxBufferedTime` 的额外处理延迟时。`RecordMaxBufferedTime` 值越大，产生的包装效率和性能就越高。无法容忍此额外延迟的应用程序可能需要直接使用 AWS 开发工具包。有关将软件开发工具包与 Kinesis AWS Data Streams 配合使用的更多信息，[使用 Amazon Kinesis Data Streams API 开发制作人 适用于 Java 的 AWS SDK](developing-producers-with-sdk.md)请参阅。有关 `RecordMaxBufferedTime` 和 KPL 其他用户可配置属性的更多信息，请参阅 [配置 Amazon Kinesis Producer Library](kinesis-kpl-config.md)。