- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •1.3. Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Запитання для самоконтролю
- •Розподілене середовище
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи зі спільною пам’яттю
- •Системи з роздільною пам’яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Та засобів проміжного рівня
- •Операційні системи й розподіленість
- •Проміжне середовище
- •2.5. Поняття розподіленого середовища
- •Розподіл прикладних програм за рівнями
- •Варіанти архітектури клієнт–сервер
- •Програмні компоненти розподілених систем
- •Основи мережної взаємодії
- •2.6. Взаємодія компонент розподіленої системи
- •Концепції взаємодії компонент розподіленої системи
- •Обмін повідомленнями
- •Віддалений виклик процедур
- •Використання віддалених об’єктів
- •Розподілені події
- •Розподілені транзакції
- •Безпека в розподілених системах
- •Опис інтерфейсу програмної компоненти
- •Мова і схеми Extensible Markup Language
- •Soap: мова повідомлень розподіленої системи
- •Wsdl: опис інтерфейсу програмної компоненти
- •Базові технології подання інформації в розподілених системах
- •Вимоги до прикладних програм серверної сторони
- •Висновки
- •Запитання для самоконтролю
- •Рівні протоколів
- •Низькорівневі протоколи
- •Транспортні протоколи
- •Протоколи верхнього рівня
- •Віддалений виклик процедур
- •Виклик локальної процедури та повернення результату
- •Звертання до віддалених об’єктів
- •Розподілені об’єкти
- •Прив’язка клієнта до об’єкта
- •Статичне й динамічне віддалене звертання до методів
- •Передача параметрів
- •1.4 Зв’язок на основі потоків даних
- •Підтримка безперервних середовищ
- •Потік даних
- •Синхронізація потоків даних
- •1.5 Протоколи проміжного рівня
- •Протокол soap
- •Сімейство протоколів xmpp
- •Протокол umsp
- •Висновки
- •Запитання для самоконтролю
- •2. Процеси
- •Потоки виконання. Визначення і структура
- •Стан процесів та потоків виконання
- •Реалізація потоків виконання
- •Потоки виконання в нерозподілених системах
- •Потоки виконання в розподілених системах
- •Багатопотокові клієнти
- •Багатопотокові сервери
- •Інтерфейси користувача
- •Клієнтське програмне забезпечення і прозорість розподілу
- •4.6 Сервери
- •Підходи до побудови серверів прикладного програмного забезпечення
- •Сервери об’єктів
- •Частина 2
- •Представлення додатка розподіленної системи
- •Рівнева організація додатку
- •Рівнева організація, застосування, виділення рівнів
- •Використання рівня Сервісів(Services Layer)
- •Дизайн рівневої структури
- •Вибір стратегії розбиття на рівні
- •Визначення наскрізної функціональності
- •Визначення інтерфейсу між рівнями
- •Вибір стратегії реалізації і впровадження
- •Вибір протоколів взаємодії
- •3. Дизайн Рівню Представлення
- •Дизайн рівня представлення включає наступні кроки:
- •Специфічні проблеми дизайну рівня представлення
- •Кешування
- •Комунікації
- •Композиція
- •Управління виключеннями
- •User Experience(Зручність Використання)
- •Інтерфейс користувача
- •Перевірка даних вводу користувача (Validation)
- •Batching(Пакетування)
- •З'єднання
- •Формат даних
- •Управління виключеннями
- •Реляційне відображення об'єктів(Object Relational Mapping)
- •Процедури, що зберігаються
- •Транзакції
- •Перевірка вводу
- •Типи бізнес-процесів
- •Загальні правила складання сміття:
- •Вибір стратегії визначення виключень
- •Стратегія протоколювання виключень
- •Стратегія повідомлення про виключення
- •Ухвалення рішення про необхідність обробки необроблених виключень
- •Спеціальні питання проектування
- •Аутентифікація
- •Авторизація
- •Кешування
- •Мережева взаємодія
- •Управління конфігурацією
- •Управління виключеннями
- •Протоколювання
- •Управління станом
- •Проблеми, які виникають при проектуванні взаємодії
- •Загальні завдання проектування стратегії зв'язку
- •Обмін файлами
- •Розподілена база даних
- •Виклик видалених процедур
- •Обмін повідомленнями
- •Процедура передачі повідомлення включає 5 основних етапів:
- •Комерційні системи обміну повідомленнями
2.6. Взаємодія компонент розподіленої системи
-
Концепції взаємодії компонент розподіленої системи
Нині розрізняють дві концепції взаємодії програмних компонент: обмін повідомленнями між компонентами й виклик процедур або методів об’єкта віддаленої компоненти за аналогією до локального виклику процедури. Оскільки будь-яка взаємодія між віддаленими компонентами ґрунтується на сокетах TCP/IP, базовим з погляду проміжного середовища є низькорівневий обмін повідомленнями на основі мережних сокетів, сервіс яких ніяк не визна- чає формату переданого повідомлення. На основі протоколів TCP або HTTP потім можна побудувати прикладні протоколи обміну повідомленнями більш високого рівня абстрагування, щоб реалізувати складніший обмін повідо- мленнями або віддалений виклик процедур.
Віддалений виклик є моделлю, що походить від мов програмування високого рівня, а не від реалізації інтерфейсу транспортного рівня мереж- них протоколів, тому протоколи віддаленого виклику мають обов’язково ґрунтуватися на будь-якій системі передачі повідомлень, включаючи як безпосереднє використання сокетів TCP/IP, так й інші проміжні середовища для обміну повідомленнями. Під час реалізації високорівневих служб обміну повідомленнями, у свою чергу, можуть використовуватися віддале- ний виклик процедур, в основі якого лежить більш низькорівнева передача повідомлень, що використовує, наприклад, безпосередньо мережні сокети. Таким чином, одне проміжне середовище може використовувати для свого функціонування ервіси іншого, аналогічно до того, як один протокол тран- спортного або мережного рівня може працювати поверх іншого у разі ту- нелювання протоколів.
-
Обмін повідомленнями
Розрізнюють два методи передачі повідомлень від однієї віддаленої сис- теми до другої: безпосередній обмін повідомленнями й використання черг повідомлень. У разі безпосереднього обміну передача відбувається прямо, і можлива лише за умови, що сторона, яка приймає, готова одержати повідом- лення в цей самий момент, інакше використовується посередник – мене- джер черг повідомлень, тобто компонента надсилає повідомлення в одну із черг менеджера, після чого вона може продовжити свою роботу. Надалі сто- рона, яка отримує повідомлення, вилучить його із черги менеджера й розпоч- не обробку.
Найпростішим видом реалізації безпосереднього обміну повідомленнями є використання транспортного рівня мережі через інтерфейс сокетів, минаючи будь-яке проміжне програмне забезпечення. Однак такий спосіб взаємодії зазвичай не застосовують у розподілених системах, оскільки в цьому разі реалізують усі функції проміжного середовища розробники прикладних про- грам. За такого підходу складно отримати розширювану й надійну розподі- лену систему, тому для розробки прикладних розподілених систем здебіль- шого використовують системи черг повідомлень.
Наявні кілька розробок у сфері проміжного програмного забезпечення, що реалізують високорівневі сервіси для обміну повідомленнями між про- грамними компонентами, зокрема Microsoft Message Queuing, IBM MQSeries і Sun Java System Message Queue. Ці системи дають можливість прикладним програмам використовувати такі базові примітиви обробки черг:
-
додати повідомлення в чергу;
-
взяти перше повідомлення із черги, процес блокується до появи в черзі хоча б одного повідомлення;
-
перевірити чергу на наявність повідомлень;
-
установити обробник, який викликається з появою повідомлень у черзі.
Менеджер черги повідомлень у таких системах може перебувати на комп’ютері, розміщеному окремо від комп’ютерів з компонентами, що
беруть участь в обміні. У цьому разі повідомлення спочатку поміщується у вихідну чергу на комп’ютері з компонентою, що надсилає повідомлення, а по- тім пересилається менеджерові необхідної компоненти. Для створення вели- ких систем обміну повідомленнями може використовуватися маршрутизація повідомлень, за якої повідомлення не передаються прямо менеджерові, що підтримує чергу, а проходять через низку проміжних менеджерів черг пові- домлень (рис. 2.39).
Рис. 2.39. Системи черг повідомлень
Використання черг повідомлень орієнтовано на асинхронний обмін даними. Основні переваги таких систем:
-
час функціонування сервера може не залежати від часу роботи клієнтів;
-
незалежність проміжного середовища від засобу розробки компонент і мови програмування;
-
зчитувати й обробляти заявки із черги можуть кілька незалежних ком- понент, що дає можливість досить просто створювати стійкі й масштабовані системи.
Недоліки систем черг повідомлень такі:
-
необхідність явного використання черг розподіленою прикладною програмою;
-
складність реалізації синхронного обміну;
-
певні витрати на використання менеджерів черг;
-
складність отримання відповіді, оскільки передача відповіді може ви- магати окремої черги на кожний компонент, що надсилає заявки.