使用 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 数据流的高写入吞吐量。

您可利用亚马逊监控 KPLCloudWatch. 有关更多信息,请参阅与亚马逊一起监控 Kinesis 创建器库CloudWatch

注意

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

KPL 的作用

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

  • 使用可配置的自动重试机制对一个或多个 Kinesis Data Streams 进行写入

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

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

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

  • 提交亚马逊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 可在同步或异步使用案例中使用。除非存在使用同步操作的具体原因,否则建议您使用异步接口的较高性能。有关这两种使用案例和示例代码的更多信息,请参阅 使用 KPL 写入 Kinesis 数据流

性能优势

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

使用者端易于使用

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

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

创建器监控

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

异步架构

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

何时不使用 KPL

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