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

使用 Kinesis Client Library 开发 Amazon Kinesis Data Streams 使用者

您可使用 Kinesis Client Library (KCL) 开发适用于 Amazon Kinesis Data Streams 的使用者应用程序。尽管您可使用 Kinesis Data Streams API 从 Kinesis data stream 中获取数据,但我们建议为 KCL 提供的使用者应用程序使用设计模式和代码。

您可利用 Amazon CloudWatch 监控 KCL。有关更多信息,请参阅 利用 Amazon CloudWatch 监控 Kinesis 客户端库

Kinesis Client Library

Kinesis Client Library (KCL) 帮助您使用和处理来自 Kinesis data stream 的数据。此类应用程序也称为使用者。KCL 负责执行与分配式计算关联的许多复杂任务,如跨多个实例进行负载均衡、响应实例故障、对已处理记录进行检查点操作以及对重新分片做出反应。KCL 使您能够专注于编写记录处理逻辑。

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

KCL 是一个 Java 库,支持 Java 以外的其他语言,提供使用多语言界面,称为MultiLangDaemon。此后台程序是基于 Java 和在后台运行,当您使用 KCL 语言而非 Java。例如,如果您安装了适用于 Python 的 KCL 并完全在 Python 中编写使用者应用程序,则由于 MultiLangDaemon,您仍需要在您的系统中安装 Java。此外,MultiLangDaemon 有一些默认设置,您可能需要根据自己的使用案例进行自定义,例如所连接到的 AWS 区域。有关 MultiLangDaemon 的更多信息,请转至 GitHub 上的 KCL MultiLangDaemon 项目页。

在运行时,KCL 应用程序利用配置信息实例化工作程序,然后使用记录处理器处理从 Kinesis data stream 接收的数据。您可以在任意数量的实例上运行 KCL 应用程序。同一应用程序的多个实例将动态协调故障和负载均衡。您还可以使用多个 KCL 应用程序处理相同的流,具体取决于吞吐量限制。

KCL 的角色

KCL 充当您的记录处理逻辑和 Kinesis Data Streams 之间的中介。

当您启动 KCL 应用程序时,它会调用 KCL 来实例化工作程序。这一调用将为应用程序提供带配置信息的 KCL,如流名称和 AWS 凭证。

KCL 将执行以下任务:

  • 连接到流

  • 枚举分片

  • 协调与其他工作程序的分片关联(如果有)

  • 为其管理的每个分片实例化记录处理器

  • 从流中提取数据记录

  • 将记录推送到对应的记录处理器

  • 对已处理记录进行检查点操作

  • 在工作程序实例计数更改时均衡分片与工作程序的关联

  • 在分片被拆分或合并时均衡分片与工作程序的关联