2017-01-04 4 views
0

Могу ли я создавать темы под названием update_i для различных видов обновлений и разбивать их на user_id в Kafka MQ? Я прошел через этот пост confluent.io: https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/. Кроме того, я знаю, что я не могу создать тему с динамическим количеством разделов. Эти два факта (пост и статическое число разделов Кафки). Каков механизм доставки?Kafka используется как механизм доставки в ленте новостей

+0

Почему вы хотите разделить на идентификатор пользователя? Вы хотите «подписаться» или обрабатывать только сообщения от определенных пользователей, а не других? Или вы думаете о том, что user_id является идентификатором конечного пользователя? –

ответ

0

В качестве возможного решения я бы предложил создать ряд разделов, а затем производитель настройки для выбора раздела с помощью следующего правила

user_id mod <number_of_partitions> 

Это позволит вам поддерживать порядок сообщений для конкретного user_id.

Затем, если у вас есть потребитель, который обрабатывает только сообщения для определенного user_id, вы можете написать (низкоуровневый) потребитель, который будет читать определенный раздел и обрабатывать только сообщения, которые отправляются для конкретного клиента, и игнорировать все другие сообщения.

1

Могу ли я создавать темы под названием update_i для различных видов обновлений и разделять их с помощью user_id в Kafka MQ?

Если вы меня правильно поняли, ответ Да.

Что вам нужно будет сделать в двух словах:

  • конфигурации Тема: Определить необходимое количество разделов для вашей темы (ы). Как правило, количество разделов определяется на основе (1) ожидаемого масштаба/объема входящих данных, то есть стороны записи масштабирования и/или (2) требуемого параллелизма при потреблении сообщений для обработки, то есть Read- стороне масштабирования. См. https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/.

  • Написание сообщений по этим темам Kafka (иначе говоря, «производитель Kafka»): В Kafka сообщения представляют собой пары с ключом. В вашем случае вы должны установить ключ сообщения user_id. Затем, при использовании «разделителя» по умолчанию Kafka, сообщения для одного и того же ключа сообщения (здесь: user_id) будут автоматически отправляться на тот же раздел - это то, чего вы хотите достичь.

Смежные вопросы