Поделиться через


Модель для распределенных систем

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

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

клиенты получают доступ к службам в системе серверов rpc, которые отображаются как непрозрачное облако для внешних клиентов

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

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

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

Распределенная система может не иметь выделенных клиентов и серверов для каждого конкретного обмена пакетами, но важно помнить, что есть вызывающий объект (или инициатор, который часто называется клиентом). Также есть получатель вызова (часто называют сервером). Не требуется двустороннего обмена пакетами в формате ответа на запрос распределенной системы; часто сообщения отправляются только одним способом.