使用 Kinesis 客户端库 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Kinesis 客户端库

什么是 Kinesis 客户端库?

Kinesis 客户端库 (KCL) 是一个独立的 Java 软件库,旨在简化使用和处理来自亚马逊 Kinesis Data Streams 的数据的过程。KCL 可以处理许多与分布式计算相关的复杂任务,使开发人员能够专注于实现用于处理数据的业务逻辑。它管理诸如在多个工作程序之间进行负载平衡、响应工作器故障、检查已处理记录以及响应流中分片数量的变化等活动。

KCL 经常更新,以纳入较新版本的底层库、安全改进和错误修复。我们建议您使用最新版本的 KCL,以避免出现已知问题并从所有最新改进中受益。要查找最新的 KCL 版本,请参阅 K CL Github。

重要
  • 我们建议您使用最新的 KCL 版本,以避免出现已知的错误和问题。如果您使用的是 KCL 2.6.0 或更早版本,请升级到 KCL 2.6.1 或更高版本,以避免在流容量变化时出现可能阻塞分片处理的罕见情况。

  • KCL 是一个 Java 库。使用名为的基于 Java 的守护程序提供对 Java 以外其他语言的支持。 MultiLangDaemon MultiLangDaemon通过 STDIN 和 STDOUT 与 KCL 应用程序交互。有关 MultiLangDaemon on 的更多信息 GitHub,请参阅使用非 Java 语言使用 KCL 开发消费者

  • 不要在 KCL 3.x 中使用 2.27.19 到 2.27.23 适用于 Java 的 Amazon SDK 版本。这些版本包含一个导致与 KCL 的 DynamoDB 使用相关的异常错误的问题。我们建议您使用 2.28.0 或更高 适用于 Java 的 Amazon SDK 版本来避免此问题。

KCL 的主要功能和优势

以下是 KCL 的主要功能和相关优势:

  • 可扩展性:KCL 使应用程序能够通过在多个工作程序之间分配处理负载来动态扩展。您可以手动或使用自动缩放功能向内或向外扩展应用程序,而不必担心负载重新分配。

  • 负载平衡:KCL 自动平衡可用工作器之间的处理负载,从而在工作人员之间均匀分配工作。

  • Check pointing:KCL 管理已处理记录的检查点,使应用程序能够从上次成功处理的位置恢复处理。

  • 容错:KCL 提供了内置的容错机制,可确保即使个别工作人员出现故障,数据处理也能继续进行。KCL 还提供 at-least-once送货服务。

  • 处理流级别的变化:KCL 适应由于数据量变化而可能发生的分片拆分和合并。它通过确保子分片只有在父分片完成并进行检查后才对其进行处理,从而保持排序。

  • 监控:KCL 与 Amazon 集成, CloudWatch 用于消费者级监控。

  • 多语言支持:KCL 原生支持 Java,并支持多种非 Java 编程语言。 MultiLangDaemon