
- •Л.С. Глоба
- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Комп'ютерні мережі, як частковий випадок розподілених систем
- •Модель клієнт-сервер.
- •Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Питання для самоконтролю
- •Поняття розподіленого середовища
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи із спільною пам'яттю
- •Системи з роздільною пам'яттю
- •Представники систем з роздільною пам'яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Таблиця 2.1. Короткий опис розподілених і мережних операційних систем, а також засобів проміжного рівня
- •Операційні системи й розподіленість
- •Проміжне середовище
- •Поняття розподіленого середовища
- •Розподіл прикладних програм по рівнях
- •Варіанти архітектури клієнт-сервер
- •Де ік – інтерфейс користувача, лп – логіка прикладних програм, дд – доступ до даних, бд – база даних
- •Де ік – інтерфейс користувача, лп – логіка прикладних програм, дд – доступ до даних, бд – база даних
- •Програмні компоненти розподілених систем
- •Основи мережної взаємодії
- •Де ік – інтерфейс користувача, лп – логіка прикладних програм, дд – доступ до даних, бд – база даних
- •Взаємодія компонент розподіленої системи
- •Концепції взаємодії компонент розподіленої системи
- •Обмін повідомленнями
- •Віддалений виклик процедур
- •Використання віддалених об'єктів
- •Розподілені події
- •Розподілені транзакції
- •Безпека в розподілених системах
- •Опис інтерфейсу програмної компоненти
- •Мова xml і схеми xml
- •Soap: мова повідомлень розподіленої системи
- •Wsdl: опис інтерфейсу програмної компоненти
- •Серіалізація об'єктів
- •Базові технології представлення інформації в розподілених системах
- •Вимоги до прикладних програм серверної сторони
- •Огляд базових технологій
- •Таблиця 2.1 Основні оціночні характеристики платформ
- •Технологія ria
- •Таблиця 2.2 Порівняння даних профілізації традиційної веб-прикладної програма і ria
- •Таблиця 2.4 Порівняння технологій створення ria -прикладних програм
- •Дескриптор розгортання web-прикладних програм та компонент
- •Висновки
- •Питання для самоконтролю
- •Зв'язок
- •Рівні протоколів
- •Низькорівневі протоколи
- •Транспортні протоколи
- •Протоколи верхнього рівня
- •Віддалений виклик процедур
- •Звертання до віддалених об'єктів
- •Розподілені об'єкти
- •Прив'язка клієнта до об'єкта
- •Статичне й динамічне віддалене звернення до методів
- •Invoke(fobject, id(append). Int).
- •Передача параметрів
- •Зв’язок на основі потоків даних
- •Підтримка безперервних середовищ
- •Потоки даних й якість обслуговування
- •Таблиця 3.1 Характеристики технологій якості обслуговування
- •Синхронізація потоків даних
- •Протоколи проміжного рівня
- •Протокол soap
- •Родина протоколів xmpp
- •Протокол umsp
- •Висновки
- •Питання для самоконтролю
- •Процеси
- •Поняття процесу. Визначення та структура
- •Потоки виконання. Визначення та структура
- •Стан процесів та потоків виконання
- •Реалізація потоків виконання
- •Потоки виконання в нерозподілених системах
- •Потоки виконання в розподілених системах
- •Багатопотокові клієнти
- •Багатопотокові сервери
- •Таблиця 4.1 Три способи побудови сервера
- •Клієнти
- •Інтерфейси користувача
- •Клієнтське програмне забезпечення, яке забезпечує прозорість розподілу
- •Сервери
- •Загальні питання розробки серверів прикладного програмного забезпечення
- •Сервери об'єктів
- •Перенесення коду
- •Підходи до перенесення коду
- •Моделі перенесення коду
- •Перенесення і локальні ресурси
- •Перенесення коду в гетерогенних системах
- •Огляд перенесення коду в d'Agent
- •Питання реалізації
- •Програмні агенти
- •Програмні агенти в розподілених системах
- •Таблиця 4.2 Деякі важливі властивості агентів
- •Технологія агентів
- •Мови взаємодії агентів
- •Висновки
- •Питання для самоконтролю
- •Іменування
- •Іменовані сутності
- •Імена, ідентифікатори й адреси
- •Простір імен
- •Реалізація просторів імен
- •Покращене керування даними.
- •Допомагає організувати потоковий процес роботи.
- •Єдиний репозиторій і пошукової механізм для прикладного програмного забезпезпечення і сервісів.
- •Розміщення мобільних сутностей
- •Іменування й локалізація сутностей
- •Прості рішення
- •Підходи на основі базової точки
- •Ієрархічні підходи
- •Видалення сутностей, на які немає посилань
- •Проблема об'єктів, на які немає посилань
- •Підрахунок посилань
- •Організація списку посилань
- •Ідентифікація сутностей, на які немає посилань
- •Висновки
- •Фізичні годинники
- •Алгоритми синхронізації часу
- •Використання синхронізованих годин
- •Логічні годинники
- •Оцінка часу Лампорта (відмітки часу)
- •Векторна оцінка часу
- •Глобальний стан
- •Між записом свого стану й одержанням маркера процесQне приймав повідомлень по жодному зі своїх вхідних каналів.
- •Алгоритми голосування
- •Алгоритм «забіяки»
- •Кільцевий алгоритм
- •Взаємне виключення
- •Централізований алгоритм
- •Розподілений алгоритм
- •Алгоритм маркерного кільця
- •Порівняння трьох алгоритмів
- •Розподілені транзакції
- •Модель транзакцій
- •Таблиця 6.1 Деякі примітиви, використовувані в транзакціях
- •Класифікація транзакцій
- •Рівні ізольованості транзакцій
- •Таблиця 6.2 Рівні ізольованості та проблеми, які вони допускають
- •Реалізація розподілених транзакцій
- •Керування паралельним виконанням транзакцій
- •Компоненти розподілених транзакцій
- •Висновки
- •Список літератури
Розподілені події
При розробці програмного забезпечення досить часто виникає потреба одержувати повідомлення про які-небудь події, що виникають асинхронно, тобто в деякі довільні моменти часу. У розподілених системах також виникає необхідність використання таких повідомлень, що одержуються від віддаленої системи. Можна виділити два підходи до обробки подій: тіснозв'язні й слабкозв’язні події. При тіснозв'язній події відбувається пряме повідомлення однієї сторони іншою стороною. Хоча цей метод можна використовувати, наприклад, разом з односпрямованим асинхронним викликом, йому властивий ряд недоліків, що обмежують його застосування в розподілених системах:
обидві компоненти системи повинні виконуватися одночасно;
для повідомлення декількох компонент про одну подію стороною, що повідомляє, повинні використовуватися механізми для ведення списку одержувачів подій;
утруднена фільтрація або протоколювання подій.
Тому в розподілених системах також застосовуються слабкозв’язні події, коли джерела події (видавці) не взаємодіють прямо з одержувачами подій (передплатниками). Проміжне середовище в цьому випадку повинне надати сервіс, що дозволяє передплатникові підписатися на будь-яку подію або відмовитися від підписки, а видавцеві – ініціювати подію для розсилання передплатникам (рис. 2.46).
Рис. 2.46 Передплатники й видавці слабкозв’язних подій
При використанні слабкозв’язних подій передплатники, видавці й менеджер подій можуть розташовуватися на різних комп'ютерах. Сама подія може бути реалізована як, наприклад, виклик менеджером подій деякого зареєстрованого методу віддаленого об'єкта.
Розподілені транзакції
Транзакція– послідовність операцій з якими-небудь даними, що або успішно виконується повністю, або не виконується взагалі. У випадку неможливості успішно виконати всі дії відбувається повернення до первісних значень всіх змінених протягом транзакції даних (відкіт транзакції). Транзакція повинна мати наступні якості:
атомарність. Транзакція виконується за принципом "все або нічого";
погодженість. Після успішного завершення або відкоту транзакції всі дані перебувають у погодженому стані, їхня логічна цілісність не порушена;
ізоляція. Для об'єктів поза транзакцією не видні проміжні стани, які можуть приймати дані, що змінюються в транзакції. З погляду "зовнішніх " об'єктів, до успішного завершення транзакції вони повинні мати той же стан, у якому перебували до її початку;
сталість. У випадку успішності транзакції зроблені зміни повинні мати постійний характер (тобто збережені в енергонезалежній пам'яті).
Рис. 2.47 Розподілена транзакція
Транзакції є основою прикладних програм, що працюють із базами даних, однак у розподіленій системі може бути недостатньо використання тільки транзакцій систем управління базами даних. Наприклад, у розподіленій системі в транзакції може брати участь кілька розподілених компонент, що працюють із декількома незалежними базами даних (рис. 2.47).
Розподіленоюназивається транзакція, що охоплює операції декількох взаємодіючих компонент розподіленої системи. Кожна із цих компонент може працювати з якими-небудь СУБД або іншими службами, наприклад, використовувати черги повідомлень, або навіть працювати з файлами. При відкоті транзакції всі ці операції повинні бути скасовані. Для цього необхідно виконання двох умов:
проміжне середовище повинне підтримувати управління розподіленими між декількома компонентами транзакціями;
компоненти розподіленої системи не повинні працювати з якими-небудь службами або ресурсами, які не можуть брати участь у транзакції.
Розподілені транзакції є найважливішим елементом підтримки цілісності даних у розподіленій системі. Тому для їх ширшого застосування проміжне середовище може містити механізми, які при необхідності (і певних витратах часу на написання коду) дозволять використовувати в розподілених транзакціях зовнішні служби, що не підтримують транзакції. Такий механізм називається менеджером, що компенсує ресурс(compensating resource manager). Компенсація в цьому випадку означає повернення ресурсу до первісного стану при відкоті транзакції.
У цей час відбувається формування й стандартизація ще одного поняття, пов'язаного з підтримкою цілісності даних – господарської діяльності (business activity) стосовно до розподілених систем. Діяльність звичайно є відображенням деякого реального процесу, наприклад, покупки в магазині: від оформлення замовлення до підтвердження доставки кур'єром. Діяльність може містити в собі транзакції (оформлення замовлення покупця, замовлення товару у постачальника, і так далі – до підтвердження покупцем доставки). На відміну від транзакції, час життя якої передбачається коротким, діяльність може тривати довго (наприклад, місяць). Діяльність може підтримувати скасування зроблених змін (наприклад, оформлення повернення товару постачальнику при відмові покупця) шляхом використання завдань, що компенсують.