Могу ли я создавать темы под названием 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 используется как механизм доставки в ленте новостей
ответ
В качестве возможного решения я бы предложил создать ряд разделов, а затем производитель настройки для выбора раздела с помощью следующего правила
user_id mod <number_of_partitions>
Это позволит вам поддерживать порядок сообщений для конкретного user_id.
Затем, если у вас есть потребитель, который обрабатывает только сообщения для определенного user_id, вы можете написать (низкоуровневый) потребитель, который будет читать определенный раздел и обрабатывать только сообщения, которые отправляются для конкретного клиента, и игнорировать все другие сообщения.
Могу ли я создавать темы под названием 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
) будут автоматически отправляться на тот же раздел - это то, чего вы хотите достичь.
Почему вы хотите разделить на идентификатор пользователя? Вы хотите «подписаться» или обрабатывать только сообщения от определенных пользователей, а не других? Или вы думаете о том, что user_id является идентификатором конечного пользователя? –