170 похожих чатов

Есть очередь на RabbitMQ но проблема в том что таски

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

9 ответов

12 просмотров

Запустить больше инстансов воркера

Artem-Vasilenko Автор вопроса

Это не решение с таким подходом можно использовать только одну очередь для всего.

Больше воркеров — быстрее разгребается очередь. Это решение.

Artem-Vasilenko Автор вопроса

Ну вот от одного пользователя поступило 1 000 000 тасок а от второго тоже 1 000 000 итд, и хоть сколько воркеров ты поднял а техничеки скорость не может быть обработки тасок по одному пользователю быстрей 10 в секунду и тогда консюмера будут гулять, хоть сколько их не подымай.

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

Artem-Vasilenko Автор вопроса

Так не прокатит на реббите, я думаю он нагнеться если будет 1 000 000 очередей под каждого юзера

Я говорил про 100 очередей. И нет, не нагнется. У него есть ограничение на количество сообщений в одной очереди, но не на количество очередей. Плюс можно сделать очередь expires. Но как я сказал, лучше юзать бд. Это тупо надёжнее, раз у тебя такие объемы.

Поправка: все зависит от тачки. Если тачка позволяет, кролик будет ее насиловать, пока все не съест.

Приоритет

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта