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

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

使用 Amazon Kinesis Producer Library 开发创建器

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

您可以使用 Amazon CloudWatch 监控 KPL。有关更多信息,请参阅使用亚马逊云观察监控 Kinesis 生产器库

KPL 的作用

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

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

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

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

  • 无缝集成与Kinesis 客户端库(KCL) 取消聚合使用者上的批记录

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

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

KPL 使用的优势

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

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

性能优势

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

使用者端易于使用

对于使用 Java 中 KCL 的使用者端开发人员来说,KPL 无需额外工作即可集成。当 KCL 检索包含多个 KPL 用户记录的已聚合 Kinesis 数据流记录时,它将自动调用 KPL 来在将单个用户记录返还到用户之前提取这些记录。

对于未使用 KCL 而是使用 API 操作的使用者端开发人员来说,GetRecords,KPL Java 库可用于在将单个用户记录返还到用户之前提取这些记录。

创建器监控

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

异步架构

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

何时不使用 KPL

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