мой вопрос довольно конкретный, поэтому я буду согласен с общим ответом, который укажет мне правильное направление.
Описание проблемы: я хочу доставить данные конкретной задачи от нескольких производителей конкретному потребителю, работающему над задачей (оба являются контейнерами докеров, запущенными в k8s). Связь много ко многим - любой производитель может создать пакет данных для любого потребителя. Каждый потребитель обрабатывает ~ 10 потоков данных в любой момент, в то время как каждый поток данных состоит из 100 из 160 байт сообщений в секунду (от разных производителей).
Текущее решение: в нашем текущем решении каждый производитель имеет кэш значений пары задача: (IP: PORT) для потребителей и использует пакеты данных UDP для прямой отправки данных. Он хорошо масштабируется, но довольно запутан в развертывании.
Вопрос: Можно ли это реализовать в виде своего рода очереди сообщений (Kafka, Redis, rabbitMQ ...)? Например, наличие канала для каждой задачи, по которому производители отправляют данные, а потребитель - хорошо их потребляет? Сколько потоков можно было бы обработать для MQ (я знаю, что это будет отличаться - предложите лучшее).
Изменить: возможно ли создание 1000 потоков, равных 100 000 сообщений в секунду? (пропускная способность на 1000 потоков - 16 Мбит / с)
Редактировать 2: фиксированный размер упаковки - 160 байт (опечатка)