gpt4 book ai didi

amazon-web-services - 您如何处理Amazon Kinesis Record重复项?

转载 作者:行者123 更新时间:2023-12-03 23:18:51 25 4
gpt4 key购买 nike

根据Amazon Kinesis Streams documentation,一条记录可以多次传递。

确保只处理一次所有记录的唯一方法是将它们临时存储在支持完整性检查的数据库(例如DynamoDB,Elasticache或MySQL / PostgreSQL)中,或者仅检查每个Kinesis分片的RecordId。

您知道更好/更有效的方式来处理重复项吗?

最佳答案

在为移动应用程序构建遥测系统时,我们确实遇到了这个问题。在我们的案例中,我们还不确定生产者将每个消息发送一次,因此,对于每个接收到的记录,我们都会即时计算其MD5并检查它是否以某种持久存储形式出现,但实际上使用的是哪种存储。最棘手的。

首先,我们尝试了琐碎的关系数据库,但是它很快成为整个系统的主要瓶颈,因为这不仅是读取繁重的情况,也是写入繁重的情况,因为通过Kinesis传递的数据量非常大。

我们最终有了一个DynamoDB表,用于存储每个唯一消息的MD5。我们遇到的问题是删除消息并不是那么容易-尽管我们的表包含分区键和排序键,但DynamoDB不允许删除具有给定分区键的所有记录,我们必须查询所有以获得排序键值(浪费时间和容量)。不幸的是,我们不得不偶尔将整个表放下。次优解决方案的另一种方法是定期轮换存储消息标识符的DynamoDB表。

但是,最近DynamoDB引入了一个非常方便的功能-Time To Live,这意味着现在我们可以通过启用每个记录的自动过期来控制表的大小。从这个意义上讲,DynamoDB似乎与ElastiCache非常相似,但是ElastiCache(至少是Memcached集群)的持久性要差得多-那里没有冗余,并且在扩展规模或发生故障的情况下,位于终止节点上的所有数据都会丢失。

关于amazon-web-services - 您如何处理Amazon Kinesis Record重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com