本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Kinesis 客户端库 (KCL) 处理 Amazon Keyspaces 直播
本主题介绍如何使用 Kinesis 客户端库 (KCL) 来使用和处理来自 Amazon Keyspaces 变更数据捕获 (CDC) 流的数据。
使用 Kinesis 客户端库 (KCL) 可以提供许多好处,而不是直接使用 Amazon Keyspaces Streams Streams API,例如:
-
内置分片血统跟踪和迭代器处理。
-
在工作人员之间自动进行负载平衡。
-
容错能力和从工作器故障中恢复。
-
使用检查点来跟踪处理进度。
-
适应直播容量的变化。
-
简化了用于处理 CDC 记录的分布式计算。
以下部分概述了使用 Kinesis 客户端库 (KCL) 处理流的原因和方法,并提供了使用 KCL 处理 Amazon Keyspaces CDC 流的示例。
有关定价的信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)定价
什么是 Kinesis Client Library?
Kinesis 客户端库 (KCL) 是一个独立的 Java 软件库,旨在简化使用和处理来自流的数据的过程。KCL 可以处理许多与分布式计算相关的复杂任务,让您在处理流数据时专注于实现业务逻辑。KCL 管理多个 worker 之间的负载平衡、响应工作器故障、检查已处理记录以及响应流中分片数量的变化等活动。
要处理 Amazon Keyspaces CDC 流,您可以使用 KCL 中的设计模式来处理流分片和流记录。KCL 提供低级 Kinesis Data Streams API 之上的有用抽象来简化编码。有关 KCL 的更多信息,请参阅 Amazon Kinesis Data Streams 开发者指南中的使用 KCL 开发消费者。
要使用 KCL 编写应用程序,请使用 Amazon Keyspaces Streams Kinesis 适配器。Kinesis 适配器实现了 Kinesis Data Streams 接口,因此您可以使用 KCL 来使用和处理来自亚马逊密钥空间流的记录。有关如何设置和安装 Amazon Keyspaces Streams Kinesis 适配器的说明,请访问存储库。GitHub
下图显示了这些库是如何相互交互的。

KCL 经常更新,以纳入较新版本的底层库、安全改进和错误修复。我们建议您使用最新版本的 KCL,以避免出现已知问题并从所有最新改进中受益。要查找最新的 KCL 版本,请参阅 KCL 存储库 GitHub
KCL 概念
在使用 KCL 实现消费者应用程序之前,您应该了解以下概念:
- KCL 消费者应用程序
-
KCL 消费者应用程序是一个处理来自 Amazon Keyspaces CDC 流的数据的程序。KCL 充当您的消费者应用程序代码和 Amazon Keyspaces CDC 流之间的中介。
- 工人
-
工作程序是 KCL 使用者应用程序的执行单元,用于处理来自 Amazon Keyspaces CDC 流的数据。您的应用程序可以运行分布在多个实例上的多个工作程序。
- 记录处理器
-
记录处理器是应用程序中处理来自 Amazon Keyspaces CDC 流中分片的数据的逻辑。记录处理器由工作程序为其管理的每个分片实例化。
- 租赁
-
租赁代表分片的处理责任。工作人员使用租约来协调哪个工作人员正在处理哪个分片。KCL 将租赁数据存储在 Amazon Keyspaces 的表中。
- 检查点
-
检查点是记录处理器在分片中成功处理记录的位置的记录。Checkpointing 使您的应用程序能够在工作程序失败时从中断的位置恢复处理。
Amazon Keyspaces Kinesis 适配器到位后,您可以开始基于 KCL 接口进行开发,API 调用无缝定向到亚马逊密钥空间流终端节点。有关可用端点的列表,请参阅如何在 Amazon Keyspaces 中访问 CDC 直播终端节点。
应用程序启动后,调用 KCL 来实例化工作进程。您必须向工作人员提供应用程序的配置信息,例如流描述符和 AWS 凭证,以及您提供的记录处理器类的名称。在记录处理器中运行代码时,工作进程执行以下任务:
-
连接到流
-
枚举流中的分片
-
协调与其他工作程序的分片关联(如果有)
-
为其管理的每个分片实例化记录处理器
-
从流中提取记录
-
将记录推送到对应的记录处理器
-
对已处理记录进行检查点操作
-
在工作程序实例计数更改时均衡分片与工作程序的关联
-
在分片被拆分时平衡分片与工作程序的关联