使用 Amazon Kinesis Producer Library(KPL)开发产生器 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Kinesis Producer Library(KPL)开发产生器

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

您可以使用 Amazon CloudWatch 监控 KPL。有关更多信息,请参阅 使用亚马逊监控 Kinesis 制作人库 CloudWatch

注意

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

查看 KPL 的作用

KPL 是一个易于使用的且高度可配置的库,可帮助您对 Kinesis 数据流进行写入。它在您的创建器应用程序代码和 Kinesis Data Streams API 操作之间充当中介。KPL 执行以下主要任务:

  • 利用可配置的自动重试机制对一个或多个 Kinesis 数据流进行写入

  • 收集记录并使用 PutRecords 根据请求将多条记录写入多个分片

  • 聚合用户记录以增加负载大小并提高吞吐量

  • Kinesis Client Library(KCL)无缝集成以在消费端上取消聚合批记录

  • 代表您提交 Amazon CloudWatch 指标以提供创建器性能的可见性

请注意,KPL 与 Amazon 开发工具包中可用的 Kinesis Data Streams API 不同。Kinesis Data Streams API 可帮助您管理 Kinesis Data Streams 的许多方面(包括创建流、重新分片以及放置并获取记录),而 KPL 提供专用于摄取数据的提取层。有关 Kinesis Data Streams API 的信息,请参阅 Amazon Kinesis API Reference

了解使用 KPL 的优势

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

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

性能优势

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

消费端端易于使用

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

对于未使用 KCL 而是直接使用 API 操作 GetRecords 的消费端端开发人员而言,KPL Java 库可用于在将用户记录返还给用户之前提取此类记录。

创建器监控

您可使用 Amazon CloudWatch 和 KPL 收集、监控和分析您的 Kinesis Data Streams 创建器。KPL 代表您向 CloudWatch 发出吞吐量、错误和其他指标,并可配置为在流、分片或创建器级别进行监控。

异步架构

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

了解何时不使用 KPL

当 KPL 会导致库(用户可配置)中产生高达 RecordMaxBufferedTime 的额外处理延迟时。RecordMaxBufferedTime 值越大,产生的包装效率和性能就越高。无法容忍此额外延迟的应用程序可能需要直接使用 Amazon开发工具包。有关使用 Amazon开发工具包和 Kinesis Data Streams 的更多信息,请参阅 使用 Amazon Kinesis Data Streams API 和 Amazon SDK for Java 开发产生器。有关 RecordMaxBufferedTime 和 KPL 其他用户可配置属性的更多信息,请参阅 配置 Kinesis Producer Library