36

我在正式文档中找不到与检查点之间的AWS Kinesis任何明确引用,TRIM_HORIZON以及与检查点之间的任何引用LATEST

你能证实我的理论吗:

  • TRIM_HORIZON- 如果应用程序名称是新的,那么我将读取流中可用的所有记录。否则,应用程序名称已被使用,那么我将从上一个检查点读取。

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

  • TRIM_HORIZON和之间的区别LATEST仅在应用程序名称是新的情况下。

4

3 回答 3

17

AT_TIMESTAMP

-- 从特定的时间戳

TRIM_HORIZON

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

最新的

-- 来自最新消息,即刚进入 Kinesis/Kafka 的当前消息以及从那时起的所有传入消息

于 2019-04-24T13:15:49.137 回答
16

来自GetShardIterator 文档(符合我使用 Kinesis 的经验):

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

基本上,区别在于您是想从最旧的记录(TRIM_HORIZON)开始,还是从“现在”(LATEST-在最新检查点和现在之间跳过数据)开始。

于 2018-04-09T14:02:04.740 回答
2

问题清楚地询问这些选项与检查点的关系。但是,现有的答案都没有解决检查点。

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

最相关的部分是

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

(重点由我添加。)

于 2021-05-06T23:38:09.747 回答