Skip to content

Instantly share code, notes, and snippets.

@azproduction
Created September 24, 2012 16:42
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save azproduction/3776921 to your computer and use it in GitHub Desktop.
Save azproduction/3776921 to your computer and use it in GitHub Desktop.
Распределенные вычисления на JavaScript - протокол

Базовые понятия

Кластер распределенных вычислений

Один или несколько серверов объединенных одной целью

Цель: Цель кластера распределенных вычислений

Глобальная задача на которую кластер выделяет свои ресурсы

Состояния цели

  1. Нет цели
  2. Еще не выполняется
  3. Выполняется
  4. Остановлена
  5. Завершена

Сервер распределенных вычислений

Один из элементов вычислительного кластера

Пулл задач

Часть глобальной задачи над которой работает Сервер. Сервера входящие в кластер делят Цель не несколько пуллов задач и распределяют между собой. Количество пуллов может быть больше числа серверов. Т.е. сервер может получить несколько пуллов задач за время своей работы

Состояния пулла задач

  1. Еще не получен
  2. Еще не выполняется
  3. Выполняется
  4. Остановлен
  5. Завершен
  6. Еще не синхронизирован
  7. Синхронизирован
  8. Больше нет времени на вычисление
  • Еще не получена сервер простаивает
  • Еще не синхронизирован сервер вычислил пулл, но не синхронизировал с остальнымис ерверами
  • Больше нет времени на вычисление сервер привысил максимально допустимое время на вычисление пулла

Клиент распрделенных вычислений

Клиент вычислительного кластера, производящий вычисления

Задачи: Задачи узла распределенных вычислений

Элементы пулла задач, атомарные вычислительные процессы

Состояния задачи

  1. Еще не получена
  2. Еще не выполняется
  3. Выполняется
  4. Остановлен
  5. Завершен
  6. Еще не синхронизирован
  7. Синхронизирован
  8. Больше нет времени на вычисление
  • Еще не получена клиент простаивает или ждет ответа сервера
  • Еще не синхронизирован клиент вычислил, но не отправил на сервер
  • Больше нет времени на вычисление клиент привысил максимально допустимое время на вычисление задач. Такая задача считается "протухшей" и отдается другому клиенту

Ресурсы: Ресурсы необходимые для вычисления задачи

Скрипты, алгоритмы, данные. Ресурсы могут поступать как единовременно (загрузка библиотеки и алгоритма) так и приходить вместе с задачами.

Схема сети

                       [Сервер:Пуллы задач]  <---->  [Клиент:Ресурсы,Задачи]
                      /      ^                                                 [Worker: Молотилка цифр]
    виртуальный     /        | синхронизация                                  /
      объект      /          v             <-задачи->                       / задачи, ресурсы
  [Кластер:Цель] ----- [Сервер:Пуллы задач]  <---->  [Клиент:Ресурсы,Задачи]
                  \          ^             --ресурсы->                      \ задачи
                    \        | синхронизация                                  \
                      \      v                                                 [Storage: Временное хранилище задач]
                       [Сервер:Пуллы задач]  <---->  [Клиент:Ресурсы,Задачи]
                                           \
                                             \
                                              [БД: Состояние пулла]
@BasicWolf
Copy link

Михаил, неужели нагрузки на сервер ожидаются НАСТОЛЬКО большими, что есть смысл собирать их в кластер и тем более синхронизировать? Тем более, если сервера будут в исполнении Node.js.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment