4

我想从 Amazon Kinesis 流中获取最新记录。我打算从这条记录中提取时间戳并将其与消费者应用程序检查点的最后一条记录的时间戳进行比较,以检查消费者是否落后。

我不能使用最新的分片迭代器类型。这是因为 LATEST 指向最近的记录之后,所以它不能用于访问最近的记录。

有没有简单的方法来获取最新记录?

我正在考虑的一种方法是获取消费者最近处理的记录的序列号的分片迭代器,使用该分片迭代器发出 GetRecords 请求,从请求的结果中获取下一个分片迭代器,并重复直到GetRecords 请求不返回任何记录。

这种方法将涉及读取自消费者检查点以来的所有记录,这似乎是不必要的浪费。有什么办法可以请求所有这些记录吗?

4

1 回答 1

1

您可以使用指标:来自 Kinesis 的 CloudWatch 指标的 GetRecords.IteratorAgeMilliseconds。请参阅此处:http ://docs.aws.amazon.com/kinesis/latest/dev/monitoring_with_cloudwatch.html

请注意,这是跨多个分片的多个迭代器的平均值。如果您需要在每个分片中对该指标有更细粒度的视图,您可以将其作为处理器的一部分进行计算。

请记住,具有多个分片的流中没有最新记录,因为每个分片的顺序都是独立的。如果您有多个分片,则需要检查每个分片的状态。在独立的工作人员中处理每个分片也是一种最佳实践,这通常会导致每个工作人员的延迟不同。

另一个重要注意事项是,您可以为运动流拥有多个进程。一个可以将事件放入 Redshift,一个可以处理这些事件以在您的操作仪表板中创建实时计数器。这意味着您可以为每种类型的处理器设置不同的延迟,而不仅仅是每个分片。

于 2015-04-03T15:16:31.170 回答