我无法在正式文档中找到AWS Kinesis
TRIM_HORIZON
与检查点之间的任何显式引用,以及LATEST
之间的任何引用和检查站。
你能否证实我的理论:
TRIM_HORIZON
- 如果应用程序名称是新的,那么我将读取流中可用的所有记录。此外,已经使用了应用程序名称,然后我将从 我的 上一个检查点开始阅读。
LATEST
- 如果应用程序名称是新的,那么我将读取流中添加 之后 我订阅的所有记录到溪边。否则,已经使用了应用程序名称,我将从 我的 最后一个检查点读取消息。
TRIM_HORIZON
和LATEST
之间的区别仅在应用名称为新的时候。
答案 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 服务器双重职责。它们提供互斥和位置跟踪。所以为了互斥需要创建一个租约,并且为了满足位置跟踪,必须选择一个初始值。
(重点是我加的。)