Клиент-серверная технология BOINC - Википедия - BOINC client–server technology

Логотип BOINC custom.png

Клиент-серверная технология BOINC относится к модели, согласно которой BOINC работает. Фреймворк BOINC состоит из двух уровней, которые работают под клиент – сервер архитектура. После установки программного обеспечения BOINC на машине сервер начинает отправлять задачи в клиент. Операции выполняются сторона клиента и результаты загружаются в на стороне сервера.

Дизайн и структура BOINC

  • BOINC разработан как бесплатная структура для всех, кто хочет начать проект распределенных вычислений.
  • BOINC состоит из серверной системы и клиентского программного обеспечения, которые взаимодействуют друг с другом для распределения, обработки и возврата рабочих единиц.

Структура сервера

Основная часть системы BOINC - это внутренний сервер. Сервер может работать на одной или нескольких машинах, что позволяет легко масштабировать BOINC для проектов любого размера. Серверы BOINC работают на компьютерах под управлением Linux и используют Apache, PHP, и MySQL для их сети и база данных системы.

Научные вычисления выполняются на компьютерах участников. После загрузки с клиента пользователя в базу данных исследователя, внутренний сервер проверяет и анализирует результаты. Процесс проверки включает выполнение всех задач на нескольких компьютерах участников и сравнение результатов.

Серверы BOINC также предоставляют следующие возможности:

  • однородная избыточность (отправка рабочих единиц только на компьютеры того же Платформа - Например: Win XP SP2 Только)
  • просачивание рабочего агрегата (отправка информации на сервер до завершения рабочего блока)
  • планирование местности (отправка рабочих модулей на компьютеры, на которых уже есть необходимые файлы, и создание работ по запросу)
  • распределение работы по параметрам хоста (например, рабочие единицы, требующие 512 МБ ОЗУ, будут отправлены только на хосты, имеющие как минимум такой объем ОЗУ.[1])

Сервер состоит из двух CGI программ и (обычно) пять демоны, написано в C ++. Расчеты, выполняемые клиентами, называются рабочие единицы. А результат описывает экземпляр рабочего блока, даже если он не был завершен. Проект не создает явных результатов; сервер создает их автоматически из рабочих единиц.

Программа CGI планировщика обрабатывает запросы от клиентов, получая завершенные результаты и отправляя новую работу для вычислений. Планировщик не получает доступных результатов непосредственно из базы данных. Вместо этого кормушка демон загружает задачи из базы данных и хранит их в Общая память блок, который читает планировщик. Устройство подачи периодически заполняет пустые «слоты» в блоке совместно используемой памяти после того, как планировщик отправил эти результаты клиенту.

Когда все результаты рабочей единицы завершены и возвращены, валидатор проверяет их. Одним из популярных методов было бы сравнение результатов друг с другом. У валидатора может быть собственный код проекта для нечеткого сравнения результатов или побитовое сравнение. Если валидатор определяет, что по крайней мере некоторые из результатов являются действительными, он отмечает рабочую единицу и действительные результаты как действительные, пользователям, вернувшим допустимые результаты, предоставляется кредит для него и выбран "канонический результат"[кем? ]. Если валидатор не может определить, какие результаты действительны, или объявляет все результаты недействительными, могут быть сгенерированы новые результаты, и цикл повторяется до тех пор, пока валидатор не сможет определить, какие результаты действительны.

Далее ассимилятор демон обрабатывает канонический результат, используя код конкретного проекта. Например, некоторые проекты могут анализировать файл и сохранять информацию в базе данных, другие могут просто копировать файл в другое место. Ассимилятор также может сгенерировать больше рабочих единиц на основе возвращенных данных.

В file_deleter демон удаляет выходные файлы после того, как ассимилятор обработал их, и удаляет входные файлы, которые больше не нужны.

В переходник демон обрабатывает переходы между состояниями рабочих единиц и результатов. Он также генерирует результаты от рабочих единиц, когда они создаются впервые, и когда требуется больше (например, если результат оказывается недействительным).

Слабые стороны дизайна сервера

  • Серверы BOINC не так просто развернуть, как клиент BOINC, как[нужна цитата ] они требуют большого количества скриптов.
  • Веб-сайт проекта BOINC Server плохо справляется с хранением скомпилированной базы данных серверных скриптов для тех, кто хочет создать проект BOINC.[нужна цитата ]
  • Сервер BOINC можно развернуть на Виндоус виста (или выше) системы[нужна цитата ] (как они есть POSIX совместима и может работать с приложениями UNIX), но структура разработки Windows делает это труднее и дороже, чем просто использование «готового» Linux.

Структура клиента

BOINC на клиенте разбит на несколько отдельных приложений. Они общаются с помощью BOINC удаленный вызов процедур (RPC) механизм.

Эти компонентные приложения:

  • Программа Boinc (или же boinc.exe) является основным клиентом.
  • Основной клиент - это процесс который:
    • Заботится о связи между клиентом и сервером.
    • Основной клиент также загружает научные приложения, предоставляет унифицированный механизм ведения журнала, обеспечивает актуальность двоичных файлов научных приложений и распределяет ресурсы ЦП между научными приложениями (если установлено несколько).
    • Хотя основной клиент может загружать новые научные приложения, он не обновляется. Авторы BOINC чувствовали, что это представляет собой неприемлемую угрозу безопасности.[нужна цитата ], а также все риски, связанные с процедурами автоматического обновления в вычислениях.
    • На Unix, основной клиент обычно запускается как демон (или иногда как cron работа).
    • В Windows BOINC изначально был не службой Windows, а обычным приложением. BOINC Client для Windows версии 5.2.13 и выше добавляет во время установки опцию «Установка службы».
    • В зависимости от того, как было установлено клиентское программное обеспечение BOINC, оно может либо работать в фоновом режиме, как демон, либо запускаться, когда отдельный пользователь входит в систему (и останавливается, когда пользователь выходит из системы). Управление версиями программного обеспечения и обработка рабочих единиц, предоставляемые основным клиентом, значительно упрощают кодирование научных приложений.
  • Одно или несколько научных приложений. Научные приложения выполняют основные научные вычисления. Для каждого проекта распределенных вычислений, использующего платформу BOINC, существует свое конкретное научное приложение. Научные приложения используют демон BOINC для загрузки и выгрузки рабочих единиц, а также для обмена статистикой с сервером.
  • boincmgr (или же boincmgr.exe), а GUI который взаимодействует с основным приложением, используя вызовы удаленных процедур. По умолчанию основной клиент разрешает подключения только с того же компьютера, но его можно настроить для разрешения подключений с других компьютеров (при необходимости с использованием аутентификации по паролю); этот механизм позволяет одному человеку управлять фермой установок BOINC с одной рабочей станции. Недостатком использования механизмов RPC является то, что они часто воспринимаются как угроза безопасности, потому что они могут быть маршрутом, по которому хакеры могут вторгнуться на целевые компьютеры (даже если он настроен для подключений с одного и того же компьютера).
  • Графический интерфейс написан с использованием кросс-платформенной WxWidgets инструментарий, обеспечивающий одинаковый пользовательский интерфейс на разных платформах. Пользователи могут подключаться к основным клиентам BOINC, могут инструктировать этих клиентов об установке новых научных приложений, могут отслеживать ход текущих вычислений и могут просматривать журналы сообщений системы BOINC.
  • BOINC хранитель экрана. Это обеспечивает рамки посредством чего научные приложения могут отображать графику в окне заставки пользователя. Заставки BOINC кодируются с использованием графического API BOINC, OpenGL, а GLUT Инструментарий. Как правило, заставки BOINC показывают анимированную графику, подробно описывающую выполняемую работу, возможно, показывая графики или диаграммы или другую графику визуализации данных.
  • Некоторые научные приложения не поддерживают функцию заставки (или перестают предоставлять изображения заставки, когда они неактивны). В этом случае на заставке отображается небольшой логотип BOINC, который прыгает по экрану.

Поскольку BOINC имеет функции, которые могут сделать его невидимым для обычного пользователя, существует риск несанкционированной и трудно обнаруживаемой установки. Это поможет накоплению баллов BOINC-кредитов любителями, которые соревнуются с другими за статус в субкультуре BOINC-кредитов.

Клиентские платформы

Операционная системаАппаратное обеспечениеПримерыПоложение дел
LinuxIA-32 и AMD64ПК и серверыДля большинства проектов Linux требуется 64-разрядная версия Linux. 32-битные проекты Linux могут потребовать установки 32-битных библиотек, если они работают в 64-битном Linux.
macOSX86-64, ARMv8Для PowerPC, IA-32 и AMD64 доступны разные клиенты BOINC. Клиент AMD64 мог запускать приложения IA-32, если сервер BOINC поддерживает это. BOINC Manager 7.16.13 предназначен как для X-86-64, так и для ARMv8.
WindowsIA-32 и AMD64Для IA-32 и AMD64 доступны разные клиенты BOINC. 64-разрядный клиент будет запускать 32-разрядные приложения, если сервер BOINC поддерживает это.
Распбиан (Linux )РУКАRaspberry PiДоступно очень мало клиентских приложений
Android (Linux )РУКА, MIPS, или же IA-32Смартфоны и планшетыДоступно несколько клиентских приложений. Для некоторых проектов могут потребоваться неофициальные клиенты (NativeBOINC)

Смотрите также

Рекомендации