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

时间:2016-10-14 15:24:55

标签: streaming amazon-dynamodb amazon-kinesis amazon-dynamodb-streams amazon-kcl

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 逻辑删除,您在其中写入'logically_deleted =' 项目的时间戳和
  2. 物理删除,您实际上在1之后立即调用DeleteItem。
  3. 然后,您将使用与创建和更新相同的数学,唯一的区别是您在处理删除时使用OLD_IMAGE并且您需要减去至少大约10ms以考虑执行逻辑所花费的时间删除(第1步)。