5

我正在使用 DynamoDB Streams + Kinesis 客户端库 (KCL)。如何测量在流中创建事件与在 KCL 端处理事件之间的延迟?

据我所知,KCL 的MillisBehindLatest指标特定于 Kinesis Streams(不是 DynamoDB 流)。 approximateCreationDateTime记录属性具有分钟级别的近似值,这对于在亚秒级延迟系统中进行监控是不可接受的。

您能否提供一些有用的指标来监控DynamoDB Streams 延迟?

4

1 回答 1

1

您可以更改在应用程序中写入的方式,以允许您的应用程序跟踪表流中突变的传播延迟。例如,您可以在创建和更新项目时始终更新“last_updated=”时间戳属性。这样,当您的创建和更新出现在流中时,您可以通过从流记录的 NEW_IMAGE 中的 last_updated 中减去当前时间来估计传播延迟。

因为删除在流记录中没有 NEW_IMAGE,所以您的删除需要分两步进行:

  1. 逻辑删除,您将“logically_deleted =”时间戳写入项目和
  2. 在 1 之后立即实际调用 DeleteItem 的物理删除。

然后,您将使用与创建和更新相同的数学运算,唯一的区别是在处理删除时您将使用 OLD_IMAGE 并且您需要减去至少大约 10 毫秒以考虑执行逻辑删除所需的时间(步骤1)。

于 2017-02-05T04:17:36.987 回答