Kinesis至少有一次语义学

时间:2015-11-20 18:10:23

标签: amazon-kinesis

根据文档,Kinesis至少有一次语义。我试图找出一种方法来确保检测到重复项。如果存在重复记录,是否可以保证它将来自原始记录来自的相同分片?我问的原因是这将决定我的重复检测是否需要"全球"从某种意义上说,如果我有多个实例处理流,我是否需要检测这些实例中的重复项?如果副本来自同一个分片,那么这意味着很可能同一个记录处理器将看到重复(当然是相同的实例),然后我的重复检测可以是" local"那个例子。

1 个答案:

答案 0 :(得分:2)

决定性的答案是检查后备存储或索引以查看是否已经插入了记录(DynamoDB,Redshift,RDS等)。最佳做法是将数据存储区与Kinesis处理器实例分开,这样您只需要检查一个位置。有几种方法可以做到这一点,这可能是另一个问题的主题。

如果您正在使用KCL,那么它会自己处理分片,并且您不需要处理它们。使用KCL,您的实例消耗的分片可能会随时间而变化,因此我不建议创建一个依赖于始终从同一分片中接收数据的实例的系统。

要回答这个问题,如果从分片中消耗了一次唯一记录并且(无论出于何种原因)再次出现,那么它将是第二次来自同一个分片,因为它的分区键将会没有改变。

注意:通常只有在第一次为该记录批次交货失败时才会再次收到记录。