Модель для распределенных систем
Обычно наличие монолитной системы на нескольких компьютерах означало разделение системы на отдельные клиентские и серверные компоненты. В таких системах клиентский компонент обрабатывает пользовательский интерфейс, а сервер предоставляет серверную обработку, например доступ к базе данных, печать и т. д. По мере того, как компьютеры размножались, падали в стоимость и подключались все более высокими сетями пропускной способности, разделение программных систем на несколько компонентов стало более удобным, при этом каждый компонент работал на разных компьютерах и выполнял специализированную функцию. Такой подход упрощает разработку, управление, администрирование и часто повышает производительность и надежность, так как сбой на одном компьютере не обязательно отключает всю систему.
Во многих случаях система представляется клиенту как непрозрачное облако, которое выполняет необходимые операции, даже если распределенная система состоит из отдельных узлов, как показано на следующем рисунке.
Непрозрачность облака сохраняется, так как вычислительные операции вызываются от имени клиента. Таким образом, клиенты могут найти компьютер ( узел) в облаке и запросить определенную операцию; при выполнении операции этот компьютер может вызывать функциональные возможности на других компьютерах в облаке, не предоставляя клиенту дополнительные шаги или компьютер, на котором они были выполнены.
Благодаря этой парадигме механизм распределенной облачной системы можно разбить на множество отдельных обменов пакетами или диалогов между отдельными узлами.
Традиционные системы "клиент-сервер" имеют два узла с фиксированными ролями и обязанностями. Современные распределенные системы могут иметь более двух узлов, и их роли часто являются динамическими. В одном диалоге узел может быть клиентом, а в другом — сервером. Во многих случаях конечным потребителем предоставляемых функций является клиент с пользователем, сидящим за клавиатурой и наблюдающим за выходными данными. В других случаях распределенная система функционирует автоматически, выполняя фоновые операции.
Распределенная система может не иметь выделенных клиентов и серверов для каждого конкретного обмена пакетами, но важно помнить, что есть вызывающий (или инициатор, любой из которых часто называют клиентом). Также имеется получатель звонка (часто называемый сервером). Нет необходимости в двустороннем обмене пакетами в формате "запрос-ответ" распределенной системы; часто сообщения отправляются только одним способом.