Что будет в Кафке, если создать новый раздел для топи c? - PullRequest
0 голосов
/ 05 мая 2020

Я читал в некоторых руководствах в Интернете, что если вы используете порядок ключей, новый раздел в конечном итоге нарушит этот порядок, я действительно не понимаю, как это сделать. Неужели это действительно так?

1 Ответ

1 голос
/ 05 мая 2020

Да, это то, что обычно происходит . Чтобы быть более точным, нет гарантии, что старый порядок останется прежним .

Разделение сообщений в основном происходит через

hash(key) % number_of_partitions

Допустим, вы есть топи c с двумя перегородками. Ваши данные (ключ: значение) выглядят так:

a:1
b:1
c:1
a:2
b:2
c:2

Теперь эти сообщения будут go разделены на два раздела:

partition0: a:1, b:1, a:2, b:2
partition1: c:1, c:2

Если вы добавите один раздел и создадите новый messages a:3, b:3, c:3 в топи c вы можете закончить так:

partition0: a:1, b:1, a:2, b:2, a:3
partition1: c:1, c:2, c:3
partition2: b:3

Теперь, потребляя сообщения из этого топи c, вы можете обработать b:3 перед обработкой b:2 потому что чтение partition0 одним потребителем может занять больше времени, чем чтение partition2 другим потребителем той же группы ConsumerGroup.

...