iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется

Как правильно распределить задачи в зависимости от нагрузки?

Здравствуйте. В двух словах есть массив (пусть 1000 элементов) и в нем группы и их статистика по нагрузке в % соотношении:
group_id1 - 0.2%
group_id2 - 5%
group_id3 - 61%
...
group_id1000 - 3%

т.е. в общем сумма % всех 1000 элементов будет 100

Задача распределять по нагрузке эти 1000 групп на 30 серверов. Т.е. по сути задача распределить эти 1000 групп в массив из 30 элементов.
Пока даже идей нет как подойти к задаче. Есть идеи?)

UPD: есть группы нагрузка которых порой равна 60% от общей. значит их обработку нужно в этот момент вынести на отдельный сервер. соответственно тупо раскидать - не получится.
UPD 2: так же есть группы, которые вообще ничего не потребляют по сути, а значит можно огромную кучу вынести на 1 сервер. и пусть они там отдыхают
  • Вопрос задан
  • 157 просмотров
Решения вопроса 2
longclaps
@longclaps
Ты не поверишь.
Если задачи просто случайно раскидывать по серверам - в среднем максимальная нагрузка на сервер не превысит 5% от общей.
Вот пруф.
from random import random, randint

N, M = 1000, 30
tasks = [random() for _ in range(N)]
w = sum(tasks)
for i in range(N):
    tasks[i] /= w
servers = [0.] * M
for t in tasks:
    servers[randint(0, M - 1)] += t
print(min(servers), max(servers))
Ответ написан
angrySCV
@angrySCV
machine learning, programming, startuping
если нет никаких особых свойств и закономерностей, а вся нагрузка распределена случайно по группам то уверен можно по порядку распределять, раздавая по порядку каждому серверу свою задачу. Все равно в среднем будет средняя нагрузка.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
продвинутый чайник
Я предполагаю, что это задача об очередях сообщений (MQ). В смысле, что имея множество задач, их можно ставить в очередь(и). Так, множество обработчиков очереди (worker) будут брать задачи из очереди и обрабатывать их. Обработав задачу, берут следующую. И так со множества серверов. При этом общая нагрузка между серверами должна быть равномерной. Как я понимаю, ⚡ Kotobotov ⚡ имел в виду этот сценарий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SMART TECHNOLOGIES Костанай
от 35 000 до 55 000 руб.
Яндекс Москва
от 100 000 до 300 000 руб.
Xored Software Inc. Новосибирск
от 80 000 до 140 000 руб.