Кинезис Осколки VS Ключ раздела - PullRequest
0 голосов
/ 28 января 2019

Если во время создания потока данных Kinesis я указываю количество осколков, скажем, 10, и каждый раз, когда я помещаю запись, я присваиваю ему случайный ключ раздела, как это:

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

Как кинезис решит поместить запись в определенный осколок, и что произойдет, если количество уникальных ключей Разделения будет больше числа осколков?

1 Ответ

0 голосов
/ 28 января 2019

Хеширование и по модулю.

Ключ раздела: хешируется и затем делится на количество осколков. по модулю деления определяет используемый осколок.Таким образом, ключ раздела всегда использует один и тот же шард.Если количество шардов изменяется, распределение будет другим.

Это распространенный метод, используемый во многих системах.Например, внутреннее хранилище словарей Python использует этот метод для назначения хранилища для пар ключ / значение.

...