смещение раздела 0 очень близко к сумме смещения от остальных разделов - PullRequest
0 голосов
/ 17 мая 2019

У меня есть тема, состоящая из 5 разделов:

p[0] offset: 492453047
p[1] offset: 122642552
p[2] offset: 122641146
p[3] offset: 122636144
p[4] offset: 122638175

Похоже, что смещение от раздела очень близко к сумме смещения от остальных разделов. Я не могу понять, как и почему.

Ответы [ 2 ]

2 голосов
/ 17 мая 2019

С Kafka производитель отвечает за присвоение раздела каждой записи.

Это настраивается с использованием параметра partitioner.class.Если вы не изменили это, тогда секционер по умолчанию работает следующим образом:

  • Если в записи указан раздел, используйте его
  • Если нетраздел указан, но ключ присутствует, выберите раздел на основе хэша ключа
  • Если раздел или ключ отсутствуют, выберите раздел в циклическом режиме

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

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

1 голос
/ 17 мая 2019

Производитель

Производитель отправляет данные непосредственно посреднику, который является лидером для раздела, без какого-либо промежуточного уровня маршрутизации. Чтобы помочь производителю сделать это, все узлы Kafka могут ответить на запрос метаданных о том, какие серверы активны и где лидеры разделов темы в любой момент времени позволяют производителю соответствующим образом направлять свои запросы.

Клиент контролирует, в какой раздел он публикует сообщения. Это может быть сделано случайным образом, реализуя своего рода случайную балансировку нагрузки, или это может быть сделано с помощью некоторой семантической функции разделения. Мы раскрываем интерфейс для семантического разделения, позволяя пользователю указать ключ для разделения и используя его для хеширования раздела (есть также возможность переопределить функцию разделения, если это необходимо). Например, если выбранный ключ был идентификатором пользователя, тогда все данные для данного пользователя будут отправлены в один и тот же раздел. Это, в свою очередь, позволит потребителям делать предположения о своем потреблении. Этот стиль разделения явно разработан, чтобы разрешить локальную обработку в потребителях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...