Kinesis Shards VS 分区键

Sam*_*eed 4 amazon-web-services amazon-kinesis

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

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

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

Joh*_*ein 6

散列和取模。

分区键经过哈希处理,然后除以分片数。除法的模数决定了要使用的分片。这样,分区键始终使用相同的分片。如果shard的数量改变了,那么分配就会不同。

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

  • 对,那是正确的。如果您希望按顺序处理一组特定的记录,则为它们分配相同的分区键。如果顺序完全不重要,那么随机分区键就很好。 (2认同)