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

跟踪 Amazon Kinesis Data Streams Application状态

对于每个 Amazon Kinesis Data Streams application,KCL 使用唯一的 Amazon DynamoDB 表跟踪应用程序的状态。由于 KCL 使用 Amazon Kinesis Data Streams application的名称来创建该表的名称,因此每个应用程序名称都必须是唯一的。

您可在应用程序运行的同时使用 Amazon DynamoDB 控制台查看该表。

如果您的 Amazon Kinesis Data Streams application的 Amazon DynamoDB 表在应用程序启动时不存在,则其中一个工作程序会创建该表并调用 describeStream 方法来填充该表。有关更多信息,请参阅 应用程序状态数据

重要

您的账户将被收取与 DynamoDB 表关联的费用(除开与 Kinesis Data Streams 本身关联的费用)。

吞吐量

如果您的 Amazon Kinesis Data Streams application收到了预置的吞吐量异常,您应为 DynamoDB 表增加预置的吞吐量。KCL 将创建预置吞吐量为 10 次读取/秒和 10 次写入/秒的表,但这对于您的应用程序可能不够。例如,如果您的 Amazon Kinesis Data Streams application执行频繁的检查点操作或对由很多分片组成的流执行操作,您可能需要更多吞吐量。

有关 DynamoDB 中的预置吞吐量的信息,请参阅 Amazon DynamoDB 开发人员指南 中的 Amazon DynamoDB 中的预置吞吐量处理表

应用程序状态数据

DynamoDB 表中的每行表示您的应用程序正在处理的分片。该表的哈希键为分片 ID。

除了分片 ID 以外,每行还包含以下数据:

  • checkpoint:分片的最新检查点序号。此值在流中的所有分片中都是唯一的。

  • checkpointSubSequenceNumber:使用 Kinesis Producer Library 的聚合功能时,这是对跟踪 Kinesis 记录中单个用户记录的 checkpoint 的扩展。

  • leaseCounter:用于租赁版本控制,工作程序可以检测其租赁已由其他工作程序获取。

  • leaseKey:租赁的唯一标识符。每个租赁特定于流中的一个分片,一次由一个工作程序持有。

  • leaseOwner:持有此租赁的工作程序。

  • ownerSwitchesSinceCheckpoint:自上次写入检查点以来,此租赁更改了工作程序的次数。

  • parentShardId:用于确保在开始子分片上的处理之前已经完全处理了父分片。这可以确保记录按照放入流中的相同顺序处理。