Kinesis分片与分区键

9
如果在创建Kinesis数据流时,我指定要使用10个shard,并且每次将记录放入时都会为其分配一个随机的Partition key,如下所示:
 var putRecord = new PutRecord
            {
                Data = data ?? new byte[0],
                StreamName = stream,
                PartitionKey = GetRandomPartitionKey()
            };

kinesis如何决定将记录放入特定的分片中,如果唯一分区键的数量超过了分片的数量会发生什么?

1个回答

13

哈希和取模。

分区键被哈希,然后除以分片数。除法的余数确定要使用的分片。这样,分区键总是使用相同的分片。如果更改了分片数,则分配将不同。

这是许多系统中常用的方法。例如,Python字典的内部存储使用此方法为键/值对分配存储。


那么您的意思是,无论我使用多少不同的分区键,记录最终都会落在这10个分片中的一个? - Sameed
4
没问题,如果你希望按顺序处理一组特定的记录,则需为它们指定相同的分区键。如果顺序完全不重要,则使用随机分区键即可。 - John Rotenstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接