TRIM_HORIZON vs LATEST

时间:2018-04-09 08:41:29

标签: amazon-web-services aws-sdk amazon-kinesis amazon-kcl

我无法在正式文档中找到AWS Kinesis TRIM_HORIZON与检查点之间的任何显式引用,以及LATEST之间的任何引用和检查站。

你能否证实我的理论:

  • TRIM_HORIZON - 如果应用程序名称是新的,那么我将读取流中可用的所有记录。此外,已经使用了应用程序名称,然后我将从 我的 上一个检查点开始阅读。

  • LATEST - 如果应用程序名称是新的,那么我将读取流中添加 之后 我订阅的所有记录到溪边。否则,已经使用了应用程序名称,我将从 我的 最后一个检查点读取消息。

  • TRIM_HORIZONLATEST之间的区别仅在应用名称为新的时候。

3 个答案:

答案 0 :(得分:3)

来自GetShardIterator documentation(根据我使用Kinesis的经验排列):

  

在请求中,您可以指定分片迭代器类型AT_TIMESTAMP以从任意时间点TRIM_HORIZON读取记录,以使ShardIterator指向系统中分片中的最后一条未修剪记录(分片中最旧的数据记录)或LATEST,以便您始终读取分片中的最新数据。

基本上,区别在于您是想从最早的未处理记录(TRIM_HORIZON)开始,还是从#34;现在开始#34; (LATEST - 在最新检查点和现在之间跳过数据)。

答案 1 :(得分:1)

  

AT_TIMESTAMP

-从特定时间戳记起

  

TRIM_HORIZON

-Kinesis流中的所有可用消息(与Kafka中最早的消息相同)

  

最新

-来自最新消息

答案 2 :(得分:0)

问题明确询问这些选项与检查点有何关联。然而,现有的答案都没有解决检查点问题。

Justin Pfifer 对此问题的权威回答出现在 GitHub 问题 here 中。

最相关的部分是

<块引用>

KCL 将始终使用租用表中的值(如果存在)。 请务必记住,Kinesis 本身不跟踪消费者的位置。跟踪由租用表提供。租用 KCL 服务器双重职责。它们提供互斥和位置跟踪。所以为了互斥需要创建一个租约,并且为了满足位置跟踪,必须选择一个初始值。

(重点是我加的。)