- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Телекомунікаційні мережі як елемент розподілених систем
- •Модель клієнт–сервер
- •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 основних етапів:
- •Комерційні системи обміну повідомленнями
-
Основи мережної взаємодії
З точки зору одного з комп’ютерів розподіленої системи, всі інші маши- ни, які належать до неї, є віддаленими обчислювальними системами. Теоре- тичною основою мережної взаємодії віддалених систем є загальновідома ета- лонна модель взаємодії відкритих систем (Open Systems Interconnection Reference Model, OSI), яку розроблено Міжнародною організацією стандар- тизації (International Standards Organization, ISO) та названо OSI/ISO (Open Systems Interface, OSI), що поділяє процес взаємодії двох сторін на сім рівнів:
фізичний, канальний, мережний, транспортний, сеансовий, подання, прикла- дний (рис. 2.37).
У мережах найпоширенішого стека протоколів TCP/IP протокол TCP є протоколом транспортного рівня, а протокол IP – протоколом мережного рівня. Нині забезпечує інтерфейс до транспортного рівня мережна компонента опе- раційної системи, надаючи інтерфейс для верхніх рівнів, який використовує сокети, які, у свою чергу, забезпечують примітиви низького рівня для безпо- середнього обміну потоком байтів між двома процесами. Стандартного рівня представлення або сеансового рівня у стеці протоколів TCP/IP немає, іноді до них відносять захищені протоколи SSL/TLS.
Використання протоколу TCP/IP за допомогою сокетів надає стандартний, міжплатформний, але низькорівневий сервіс для обміну даними між компонен- тами. Щоб задовольнити вимоги до розподілених систем функції сеансового рівня й рівня представлення має виконувати проміжне програмне забезпечення (рис. 2.37), яке гарантуватиме відкритість, масштабованість і стійкість розпо- ділених систем. Щоб досягнути цієї мети, проміжне середовище має надавати сервіси для взаємодії компонент розподіленої системи, зокрема такі:
-
забезпечення єдиного й незалежного від операційної системи механізму використання одними програмними компонентами сервісів інших компонент;
-
забезпечення безпеки розподіленої системи, тобто аутентифікація й ав- торизація всіх користувачів сервісів компоненти, і захист переданої між ком- понентами інформації від перекручування й читання третіми сторонами;
-
забезпечення цілісності даних або керування транзакціями, розподіленими між віддаленими компонентами системи;
-
балансування навантаження на сервери із програмними компонентами;
-
виявлення віддалених компонентів.
Рис. 2.37. Модель взаємодії обчислювальних систем
У межах однієї розподіленої системи може використовуватися кілька видів проміжних середовищ (рис. 2.38). Якщо підхід до проектування системи правильний, то кожна її розподілена компонента надає свої сервіси, які належать до єдиного проміжного середовища, а також використовує сервіси інших компонент, які також належать до певного проміжного середовища, однак ці середовища можуть бути різними.
Рис. 2.38. Гетерогенна розподілена система
Розподілену систему, компоненти якої використовують кілька проміжних середовищ, можна називати гетерогенною, на відміну від гомогеної, яка ґрун- тується на єдиному проміжному середовищі. Оскільки проміжне середовище може бути реалізовано на різних апаратних платформах і операційних систе- мах, то обидва класи розподілених систем можуть мати комп’ютери, керовані як однією, так і різними операційними системами.
Нині немає проміжного середовища універсального застосування, хоча є певний рух у цьому напрямку. Основною причиною відсутності такого сере- довища є частково суперечливі вимоги до розподілених систем, а також різний характер мережних з’єднань між компонентами системи: наприклад, взаємодія компонент усередині одного підприємства, ймовірно, може бути побудована інакше, ніж взаємодія компонент двох різних підприємств, що не повністю довіряють один одному.
Програмні компоненти у межах одного комп’ютера також взаємодіють за допомогою проміжного середовища, але у разі використання декількох проміжних середовищ така взаємодія може бути незручною і неефективною.
В ідеальному випадку розподілену компоненту слід реалізувати так, щоб перехід від одного проміжного середовища до іншого відбувався за рахунок змінювання конфігурації програмної компоненти, а не вихідного коду. На практиці таку вимогу реалізувати непросто, однак необхідно мінімізувати можливі корегування програмного коду в разі зміни проміжного середовища.