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

Есть 1 очередь(aws simple) для всех клиентов, есть пул воркеров

каждый на своем инстансе.
1 клиент может в какой то момент времени накидать тяжелых задач в очередь,
воркеры будут заняты задачами 1 го клиента например 30 мин, в это же время 2й, 3й клиент закинут свои маленькие задачи в очередь, но им придется ждать завершения обработки 1го клиента.
Заставлять ждать других клиентов нельзя.
Как бы вы решили такую задачу? Как вообще принято их решать?
Пока решил ручным решением, что задачи клиентов закидываются в очередь порционно, а не все сразу, что позволит другим клиентам втиснуться в промежутки. Размер порции лимитировано зависит от количества всех задач в обработке и максимум зависит от количества воркеров.

8 ответов

22 просмотра

Мне кажется, это такая же задача, как например, на балансере выбор сервера

Vlad-Petrov Автор вопроса
John Doe
Мне кажется, это такая же задача, как например, на...

У меня воркер может взять только 1 задачу из очереди, когда закончит - возьмет другую. Баланса по ресурсам не нужно пока.

Сделать приоритетные очереди по размеру задач.

Мб это можно как-то асинхронить? Бить задачи на примерно одинаковые по времени выполнения части и асинхронно обрабатывать

Vlad-Petrov Автор вопроса
Alexander
Мб это можно как-то асинхронить? Бить задачи на пр...

Так это все в паралель на разных инстансах.

не вникая - плюс-минус приемлимое решение. Возможно я бы имел некий механизм посредине, что считал бы "бюджет" задач на единицу времени для тенанта и решал пушить ли задачу непосредственно в работу, или придержать ещё немного. Также при сильном росте можно пробовать считать объемы задач по большим клиентам и расселять их равномерно с маленькими по разным очередям. Ключевые слова, что могут помочь найти в интернетах опыт других: - multi tenancy - queue - task balancer Одна из ссылок (не вчитывался): https://medium.com/thron-tech/multi-tenancy-and-fairness-in-the-context-of-microservices-sharded-queues-e32ee89723fc UPD: вот сам амазон ещё написал что-то релевантное https://aws.amazon.com/ru/blogs/apn/using-amazon-sqs-in-a-multi-tenant-saas-solution/

Vlad-Petrov Автор вопроса
Andrii Dembitskyi
не вникая - плюс-минус приемлимое решение. Возмож...

Очень полезно. Нужно бы раньше ознакомиться. Понял, что моя проблема называется “noisy neighbor”

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта