- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •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 основних етапів:
- •Комерційні системи обміну повідомленнями
-
Потоки виконання в розподілених системах
Важливою властивістю потоків виконання в розподілених системах є зручна реалізація блокуючих системних викликів, які відбуваються без блоку- вання всього процесу на час виконання потоку. Ця властивість потоків вико- нання особливо важлива в розподілених системах, оскільки вона суттєво спрощує представлення взаємодії як одночасну підтримку великої кількості логічних з’єднань.
-
Багатопотокові клієнти
З метою підвищення прозорості розподілу розподілені системи, які працюють у глобальних мережах, потребують маскування значних затримок повідомлень, які курсують між процесами. Цикл затримки у глобальних мережах може досягати сотень мілісекунд або і секунд. Традиційний спосіб приховати затримки зв’язку – ініціювавши взаємодію, відразу розпочати ви- конання другого завдання.
Приклад. Типовим варіантом використання цієї методики є web- браузери. Здебільшого web-документ у файлі формату HTML містить окрім тексту набір зображень, значків тощо. Для отримання елементів web- документа браузер відкриває з’єднання TCP/IP, читає дані, що надходять, і перетворює їх у компоненти візуального представлення. Встановлення з’єднання, як і читання даних, є блокуючою операцією. У разі роботи з пові-
льними комунікаціями відчуваються незручності, пов’язані з тим, що час, потрібний для завершення кожної операції, може бути достатньо тривалим.
Web-браузер зазвичай спочатку отримує сторінку HTML-коду, а по-
тім
показує її. Для того, щоб приховати затримки зв’язку деякі браузери почи- нають показувати дані у міру їх отримання. Коли текст із механізмами про- крутки стає доступним користувачеві, браузер продовжує отримувати останні файли, необхідні для правильного відображення сторінки, зокрема картинки. Таким чином, щоб побачити сторінку, користувачу не потрібно чекати отримання всіх її компонентів (рис. 4.5), у результаті, web-браузер виконує декілька завдань одночасно. Розробка браузера у вигляді багатопо- токового клієнта суттєво спрощує роботу з ним. Як тільки отримано основ- ний файл HTML, активізуються окремі потоки виконання, які відповідають за дозавантаження інших частин сторінки. Кожен з потоків виконання ство- рює окреме з’єднання із сервером і отримує від нього дані. Встановлення з’єднання й читання даних із сервера може бути запрограмоване з викорис- танням стандартних (блокуючих) системних викликів, які у цьому разі не можуть припинити основний процес завантаження сторінки. Код кожного з потоків виконання однаковий і переважно нескладний, у результаті чого ко- ристувач, хоч і помічає затримку в показі картинок, може переглядати доку- мент.
Рис. 4.5. Поетапне завантаження елементів сторінки Web-браузером
Використання багатопотокових web-браузерів, які відкривають декілька з’єднань, дає також іншу перевагу. В попередньому прикладі були створені декілька з’єднань з одним і тим самим сервером. Якщо цей сервер сильно завантажений або просто повільний, то неможливо суттєво підвищити про- дуктивність порівняно з послідовним завантаженням файлів.
Проте здебільшого web-сервери можуть бути реплікованими на декілька машин, а кожен сервер міститиме однаковий набір web-документів. Репліко- вані сервери перебувають в одному місці й мають одне ім’я. Під час активації запиту на web-сторінці цей запит передається одному із серверів, зазвичай з використанням алгоритму циклічного обслуговування або іншого алгоритму вирівнювання навантаження.
За наявності багатопотокового клієнта з’єднання можуть бути встано- вленими з різними репліками, що потребує паралельної передачі даних, а це сприятиме тому, що web-документ буде показаний повністю значно швидше, ніж у разі нереплікованого сервера. Цей підхід спрацьовує, лише якщо клієнт має змогу обробити реально паралельні потоки вхідних даних, у цьому разі потоки виконання ідеально підходять для обробки потоків даних.