Кафка производитель - как узнать, какой ключ будет go для какого раздела? - PullRequest
0 голосов
/ 15 февраля 2020

Мне известна команда kafka console producer, и она довольно удобна. Я хочу знать, есть ли способ узнать наверняка, какой ключ будет go для какого раздела, когда у нас также есть ключ? Предполагая, что у нас есть 10 разделов в kafka topi c, как производитель решит, для какого раздела ключ будет go?

Я думал, что он может использовать key.toString.hashCode() % (num_of_partitons), но я не думаю, что это способ, с помощью которого производитель консоли kafka использует.

Можем ли мы проверить, на какой производитель разделов будут отправляться данные?

1 Ответ

1 голос
/ 15 февраля 2020

Если используется разделитель по умолчанию, он не будет хэшировать значение строки ключей, вместо этого он использует алгоритм хеширования Murmur2 , как показано в org. apache .kafka.clients.producer. internals.DefaultPartitioner код:

Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;

Реализацию алгоритма можно найти здесь .

...