1 000 + топиков в kafka или какую выбрать систему для разбития на маленькие очереди

У меня есть система, которая принимает запросы на обработку сообщений. Она может обрабатывать 1000+ сообщений параллельно (не сложные но монотонные операции). Она разделена на 2 части: сервис приема сообщений (FastAPI) и сервис обработки (COCS, тоже python).
Каждое сообщение имеет поле group_id. Оно не привязано к какой-то статике и практически каждый день добавляются новые group_id. За день я могу принять ~1 000 сообщений и все они разделены на ~200 групп (числа только для примера). Обработка одного сообщения занимает ~2сек и главное - сообщения из одной группы должны обрабатываться последовательно, сообщения из разных групп могут обрабатываться параллельно.
Я реализовал это логику используя dict{group_id: list()}. В dict сортируется по группе, в list складывается последовательность. После обработки удаляется. Демон следит за статусами.
Если приложение перезагрузится - все данные из памяти в обработке потеряются.
Если произойдет всплеск нагрузки, контейнер схлопнется из-за OOM.
Если надо увеличить пропускной канал, масштабировать можно только вертикально.
Поэтому я хочу вынести очереди на какую-то стороннюю систему.
введите сюда описание изображения

И вот тут возникает вопрос, какая систему для этого лучше всего подойдет? У меня может быть больше 1000 group_id за день, это выходит 1 000 топиков в kafka..
Подскажите пожалуйста, в какую сторону мне смотреть для решения этой проблемы..
P.S.
В целом старые очереди (где не было сообщений больше 24 часов) можно удалять.


Ответы (0 шт):