Распределенная система - есть набор взаимодействующих программных компонент, выполняющихся на одном или нескольких связанных компьютерах и выглядящих с точки зрения пользователя системы как единое целое.
Программная компонента – это единица ПО, исполняемая на одном компьютере в пределах одного процесса, и предоставляющая некоторый набор сервисов, которые используются через ее внешний интерфейс другими компонентами, как выполняющимися на этом же компьютере, так и на удаленных компьютерах. Промежуточное программное обеспечение — это класс ПО, предназначенного для объединения компонентов распределенного клиент-серверного приложения или целых сетевых приложений в единую информационную систему.
2 концепции взаимодействия программных компонент: обмен сообщениями между компонентами и вызов процедур или методов объекта удаленной компоненты по аналогии с локальным вызовом процедуры.
Удаленный вызов процедур(RPC):
Синхронный вызов клиент ожидает завершения процедуры сервером и при необходимости получает от него рез-т выполнения удаленной функции; Асинхронный вызов клиент продолжает свое выполнение, при завершении сервером выполнения процедуры он получает уведомление и результат ее выполнения, например через callback-функцию, вызываемую промежуточной средой при получении результата от сервера.
Распределенные события. 2 подхода :1) при тесно связанном событии происходит прямое уведомление одной стороны другой стороной. 2) слабо связанные события, когда источники события (издатели) не взаимодействуют напрямую с получателями событий (подписчиками).
Транзакция – последовательность операций с какими-либо данными, которая либо успешно выполняется полностью, либо не выполняется вообще. Cв-ва: Атомарность. Согласованность, Изоляция, Постоянство.
Распределенной называется транзакция, охватывающая операции нескольких взаимодействующих компонент распределенной системы. Условия: промежуточная среда должна поддерживать управление распределенными между несколькими компонентами транзакциями; компоненты распределенной системы не должны работать с какими-либо службами или ресурсами, которые не могут участвовать в транзакции.