Вопрос знатокам: Есть 1000+ консьюмеров и есть 1 продюсер и есть

кафка.
Нужно отправлять каждому консьюемеру один тип сообщения. Это сообщение нужно только одному косьюемеру из 1000, остальным оно бесполезно.
Как это лучше сделать?
1000+ топиков на каждый консьюмер
1 топик но 1000+ партиций
Или добиться того чтобы консьюмер вынимал из топика только нужное сообщение
Или вообще вместо кафки использовать что-то еще, например самописную шину

14 ответов

19 просмотров

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

Anton Oleynikov
а что за прокладка?

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

прям 1000 консьюмеров? вы на это не влияете? мне кажется тут архитектура чет не очень, в первую очередь

Anton-Oleynikov Автор вопроса
Pavel Poison
прям 1000 консьюмеров? вы на это не влияете? мне к...

ну на данном этапе это отдельные серваки/компы и им нужны события с главного сервака

Pavel Poison
прям 1000 консьюмеров? вы на это не влияете? мне к...

нормальная, ситуация, имхо. пихать все 1000 политик в одну прилогу не обязательно. это уже не микросервисы

George Bolshakov
нормальная, ситуация, имхо. пихать все 1000 полити...

Про ресурсы мб надо подумать. Если написать одну консюмер группу, которая рассылает по рпс и ретраит через 30 сек в случае ошибок, то может даже проще получиться. А главное - дешевле.

George Bolshakov
нормальная, ситуация, имхо. пихать все 1000 полити...

я к тому, что тут вроде лучше push делать по потребителям, если это возможно

Pavel Poison
именно по pull они должны забирать инфу?

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

Anton-Oleynikov Автор вопроса
George Bolshakov
необработка сообщений для одного магазина не должн...

а если делим топик на партиции, один магазин одна пратиция

Anton Oleynikov
а если делим топик на партиции, один магазин одна ...

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

Yegor
и тут магазинов стало не 1000, а 100_000)

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

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта