Задать вопрос

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

Есть пулл серверов из 15-20 серверов из них один выделен для фронта, остальные для тяжелой работы.

под тяжелой работой я подразумеваю долгие задачи использующие почти всю мощность процессора и оперативной памяти, задачи могут быть запущены параллельно на одном сервере т.е. может одновременно работать 4-8 задачи количество зависит от load overage сервера.

Так вот, пул задач хранится на фронт-сервере который принемает запросы от пользователей. Как лучше организовать распределение задач между серверами, я пока вижу 2 варианта и не могу определиться какой лучше: (далее мастер-сервер это фронт сервер)
  1. Каждый worker сервер, смотрить на свой load average, и до тех пока он не пиковый опрашивает мастер сервер на наличие задач, если появляется задача он ее хватает и говорит матер-серверу о том что это задача теперь его и другие серверы не должны заниматься ей впредь
  2. Мастер сервер смотрит по статистике которую ему передает каждый воркер, какой воркер сейчас наименее загруженный и дает задачу ему и сам рулит процессами распределения задач


Минус первого подхода в том что могут возникнуть коллизии и 2 сервера могу взять одновременно задачу на себя и будут выполнять двойную работу, по этому я больше склонен считать что 2 вариант подходит, но может я ошибаюсь или чего-то не учел? Или может есть 3 вариант?
  • Вопрос задан
  • 318 просмотров
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (1)