我想从 Amazon Kinesis 流中获取最新记录。我打算从该记录中提取时间戳,并将其与消费者应用程序检查点的最后一个记录的时间戳进行比较,以检查消费者是否落后。
我无法使用最新的分片迭代器类型。这是因为 LATEST 指向最近的记录之后,因此它不能用于访问最新的记录。
有没有简单的方法获取最新记录?
我正在考虑的一种方法是获取消费者最近处理的记录的序列号的分片迭代器,使用该分片迭代器发出 GetRecords 请求,从请求的结果中获取下一个分片迭代器,然后重复直到GetRecords 请求不返回任何记录。
这种方法将涉及读取自消费者检查点以来的所有记录,这似乎不必要地浪费。有什么办法可以请求所有这些记录吗?
您可以使用 Kinesis 的 CloudWatch 指标中的 GetRecords.IteratorAgeMilliseconds 指标。看这里:http://docs.aws.amazon.com/kinesis/latest/dev/monitoring_with_cloudwatch.html http://docs.aws.amazon.com/kinesis/latest/dev/monitoring_with_cloudwatch.html
请注意,这是跨多个分片的多个迭代器的平均值。如果您需要对每个分片的这一指标有更细粒度的视图,您可以将其作为处理器的一部分进行计算。
请记住,具有多个分片的流中没有最新记录,因为每个分片的顺序都是独立的。如果您有多个分片,则需要检查每个分片的状态。在独立的工作程序中处理每个分片也是一种最佳实践,这通常会导致每个工作程序出现不同的延迟。
另一个重要的注意事项是,一个运动流可以有多个进程。人们可以将事件放入 Redshift,然后可以处理事件以在操作仪表板中创建实时计数器。这意味着每种类型的处理器都可以有不同的延迟,而不仅仅是每个分片。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)