Один или несколько серверов объединенных одной целью
Глобальная задача на которую кластер выделяет свои ресурсы
- Нет цели
- Еще не выполняется
- Выполняется
- Остановлена
- Завершена
Один из элементов вычислительного кластера
Часть глобальной задачи над которой работает Сервер. Сервера входящие в кластер делят Цель не несколько пуллов задач и распределяют между собой. Количество пуллов может быть больше числа серверов. Т.е. сервер может получить несколько пуллов задач за время своей работы
- Еще не получен
- Еще не выполняется
- Выполняется
- Остановлен
- Завершен
- Еще не синхронизирован
- Синхронизирован
- Больше нет времени на вычисление
- Еще не получена сервер простаивает
- Еще не синхронизирован сервер вычислил пулл, но не синхронизировал с остальнымис ерверами
- Больше нет времени на вычисление сервер привысил максимально допустимое время на вычисление пулла
Клиент вычислительного кластера, производящий вычисления
Элементы пулла задач, атомарные вычислительные процессы
- Еще не получена
- Еще не выполняется
- Выполняется
- Остановлен
- Завершен
- Еще не синхронизирован
- Синхронизирован
- Больше нет времени на вычисление
- Еще не получена клиент простаивает или ждет ответа сервера
- Еще не синхронизирован клиент вычислил, но не отправил на сервер
- Больше нет времени на вычисление клиент привысил максимально допустимое время на вычисление задач. Такая задача считается "протухшей" и отдается другому клиенту
Скрипты, алгоритмы, данные. Ресурсы могут поступать как единовременно (загрузка библиотеки и алгоритма) так и приходить вместе с задачами.
[Сервер:Пуллы задач] <----> [Клиент:Ресурсы,Задачи]
/ ^ [Worker: Молотилка цифр]
виртуальный / | синхронизация /
объект / v <-задачи-> / задачи, ресурсы
[Кластер:Цель] ----- [Сервер:Пуллы задач] <----> [Клиент:Ресурсы,Задачи]
\ ^ --ресурсы-> \ задачи
\ | синхронизация \
\ v [Storage: Временное хранилище задач]
[Сервер:Пуллы задач] <----> [Клиент:Ресурсы,Задачи]
\
\
[БД: Состояние пулла]
Михаил, неужели нагрузки на сервер ожидаются НАСТОЛЬКО большими, что есть смысл собирать их в кластер и тем более синхронизировать? Тем более, если сервера будут в исполнении Node.js.