Kinesis Shards VS分区键

时间:2019-01-27 23:05:21

标签: amazon-web-services amazon-kinesis

如果在创建Kinesis数据流时,我指定的碎片数为10,并且每次放置记录时,我都会为它分配一个随机的分区键,如下所示:

 var putRecord = new PutRecord
            {
                Data = data ?? new byte[0],
                StreamName = stream,
                PartitionKey = GetRandomPartitionKey()
            };

Kinesis如何决定将记录放入某个分片中?如果唯一分区键的数量大于分片数,会发生什么?

1 个答案:

答案 0 :(得分:3)

哈希和模。

分区键已散列,然后除以分片数。分区的确定要使用的分片。这样,分区键始终使用相同的分片。如果分片数量发生变化,则分配将有所不同。

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