Amazon Kinesis Data Streams
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Kinesis Producer Library 开发 Amazon Kinesis Data Streams 创建器

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

您可利用 Amazon CloudWatch 监控 KPL。有关更多信息,请参阅 利用 Amazon CloudWatch 监控 Kinesis Producer Library

KPL 的角色

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

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

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

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

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

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

请注意,KPL 与 AWS 软件开发工具包 中可用的 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 Stream 中

性能优势

KPL 可帮助构建高性能创建器。考虑以下情况:您的 Amazon EC2 实例充当代理来从数以百计或数以千计的低功率设备中收集 100 个字节的事件并将记录写入 Kinesis data stream 中。这些 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 发送记录的结果。这与 AWS 开发工具包中的异步客户端的行为相同。

何时不使用 KPL

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