- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •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.28).
Рис. 2.28. Дволанкова архітектура
Архітектуру прикладного програмного забезпечення, побудовану за та- ким принципом, називають клієнт–серверною або дволанковою. На практиці подібні системи не завжди відносять до класу розподілених, але формально їх можна вважати найпростішою реалізацією розподілених систем.
Наступним етапом розвитку архітектури клієнт–сервер є триланкова архітектура, у якій інтерфейс користувача, логіка прикладної програми й доступ до даних відокремлено в самостійні складові системи, які можуть працювати на незалежних комп’ютерах (рис. 2.29).
Рис. 2.29. Триланкова архітектура
Запит користувача в таких системах послідовно обробляється клієнтсь- кою частиною системи, сервером логіки прикладної програми й сервером баз даних. Однак зазвичай під розподіленою системою розуміють системи з більш складною архітектурою, ніж триланкова.
Розподіленим прикладним програмним забезпеченням, що автоматизує діяльність підприємства або організації, називають системи, логіка приклад- них програм яких розподілена між декількома компонентами системи, кожен з яких можна виконувати на окремому комп’ютері.
Приклад. Реалізація логіки прикладної програми системи роздрібної торгівлі має виконувати запити до логіки прикладної програми третіх фірм, зокрема постачальників товарів, систем електронних платежів або банків, що надають споживчі кредити (рис. 2.30).
Таким чином, на практиці під розподіленою системою часто розуміють розширення багатоланкової архітектури, коли запити користувача не прохо- дять послідовно від інтерфейсу користувача до єдиного сервера баз даних.
Приклад. Мережі прямого обміну даними між клієнтами (peer-to-peer networks).
Якщо попередній приклад мав «деревоподібну» архітектуру програмного за-
безпечення,
то мережі прямого обміну організовані складніше (рис. 2.31). Подібні системи нині є одними з найбільших серед поширених розподілених систем, що поєд- нують мільйони
комп’ютерів.
ІК |
ЛП |
ДД |
Рис. 2.30. Розподілена система роздрібних продажів
Рис. 2.31. Система прямого обміну даними між клієнтами
Багатоланкові архітектури. Один з підходів до організації взаємодії клієнтів і серверів – це розподіл програм, що перебувають на рівні приклад- ного програмного забезпечення, який полягає у тому, щоб помістити на кліє- нтську сторону лише термінальну частину інтерфейсу користувача, як показа-
но на рис. 2.32, а, дозволивши прикладній програмі віддалено контролювати подання даних. Альтернативою цьому підходу буде передача клієнтові всієї роботи з інтерфейсом користувача (рис. 2.32, б). В обох випадках відокрем- люється від прикладної програми графічний зовнішній інтерфейс, який є пов’язаним з іншою частиною прикладної програми, що перебуває на сервері, за допомогою специфічного для цієї прикладної програми протоколу. В такій моделі зовнішній інтерфейс виконує лише те, що необхідно для надання інтерфейсу прикладній програмі.
|
|
Інтерфейс кори- стувача |
|
Прикладна про- грама |
Серверна машина
База даних
База даних
База даних
а б в г
Рис. 2.32. Альтернативні форми організації архітектури клієнт–сервер
У багатьох системах клієнт–сервер поширені типи організації, зображені на рис. 2.32, в і рис. 2.32, г, які застосовують у разі, коли клієнтська машина (персональний комп’ютер або робоча станція) з’єднана мережею з розподіле- ною файловою системою або базою даних. Більша частина прикладних про- грам працює на клієнтській машині, а всі операції з файлами або базою даних передаються на сервер. Рис. 2.32, г зображає ситуацію, коли частина даних утримується на локальному диску клієнта. Наприклад, у процесі роботи в Internet клієнт може поступово створити на локальному диску величезний кеш найвідвідуваніших Web-сторінок.
Розглядаючи розподілення програмного забезпечення на клієнтське і серверне, слід ураховувати те, що у сервера іноді виникає потреба працювати як клієнт. У такій ситуації (рис. 2.33) маємо фізично триланкову архітектуру (physically three-tiered architecture), у котрій програми, що становлять частину рівня обробки, виносяться на окремий сервер, але прикладні програми можуть частково перебувати й на машинах клієнтів і серверів. Типовим прикладом триланкової архітектури є обробка транзакцій, за якою окремий процес, монітор транзакцій, координує роботу всіх транзакцій.
Рис. 2.33. Приклад сервера, що діє як клієнт
Сучасні варіанти архітектури. Багатоланкові архітектури клієнт– сервер є продовженням розподілу прикладних програм на рівні інтерфейсу користувача, компонентів обробки й даних. Різні ланки взаємодіють відпові- дно до логічної організації прикладних програм. У прикладному програмно- му забезпеченні розподілена обробка еквівалентна організації багатоланкової архітектури прикладної програми клієнт–сервер. Такий тип розподілу нази- вають вертикальним (vertical distribution). Його особливістю є те, що він досягається розміщенням логічно різних компонентів на різних машинах. Це поняття пов’язане з концепцією вертикальної фрагментації (vertical fragmentation), яку використовують у розподілених реляційних базах даних, де під цим терміном розуміють розбиття на стовпці таблиць для їх зберігання на різних машинах.
Вертикальний розподіл – це лише один з можливих способів організації клієнт – серверного прикладного програмного забезпечення. У сучасних архітектурах розподіл на клієнти й сервери відбувається способом, відомим як горизонтальний розподіл (horizontal distribution), за якого клієнт або сер- вер може містити фізично розподілені частини логічно однорідного модуля, причому робота з кожною із частин може виконуватися незалежно для вирів- нювання завантаження.
Як найбільш поширений приклад горизонтального розподілу розглянемо Web-сервер, реплікований на кілька машин локальної мережі, як показано на рис. 2.34. На кожному із серверів утримується однаковий набір Web-сторінок, і щоразу, коли одна з Web-сторінок оновлюється, її копії негайно розсила- ються на всі сервери. Сервер, якому буде переданий вхідний запит, вибира- ється за правилом «каруселі» (round-robin). Такий варіант горизонтального розподілу досить успішно використовується для вирівнювання навантаження на сервери популярних Web-сайтів.
Прийом та обробка вхідних запитів
Репліковані web-сервери, кожний з яких містить однакові web-сторінки
Рис. 2.34. Приклад горизонтального розподілу Web-служби
У такий самий спосіб, хоч і менш очевидно, можуть бути розподілені й клієнти. Для нескладного прикладного програмного забезпечення, призначе- ного для колективної роботи, можна не мати сервера взагалі – це одноранго- вий розподіл (peer-to-peer distribution), що відбувається, наприклад, якщо користувач хоче зв’язатися з іншим користувачем і обидва повинні запустити одну прикладну програму, щоб розпочати сеанс. Третій клієнт може також
спілкуватися з одним з них або обома, для чого йому потрібно запустити ту саму прикладну програму.