如何衡量DynamoDB Streams的传播延迟?

Iva*_*pov 5 streaming amazon-dynamodb amazon-kinesis amazon-kcl amazon-dynamodb-streams

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

据我所知,KCL的MillisBehindLatest度量标准特定于Kinesis Streams(不是DynamoDB流). approximateCreationDateTime记录属性具有分钟级近似值,这对于亚秒级延迟系统中的监视是不可接受的.

您能否帮助我们了解一些监控DynamoDB Streams延迟的有用指标?

Ale*_*kis 1

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

由于删除在流记录中没有 NEW_IMAGE,因此删除需要分两步进行:

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

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