
- •Л.С. Глоба
- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Комп'ютерні мережі, як частковий випадок розподілених систем
- •Модель клієнт-сервер.
- •Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Питання для самоконтролю
- •Поняття розподіленого середовища
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи із спільною пам'яттю
- •Системи з роздільною пам'яттю
- •Представники систем з роздільною пам'яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Таблиця 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 Рівні ізольованості та проблеми, які вони допускають
- •Реалізація розподілених транзакцій
- •Керування паралельним виконанням транзакцій
- •Компоненти розподілених транзакцій
- •Висновки
- •Список літератури
Розподілені транзакції
Концепція транзакцій тісно пов'язана з концепцією взаємних виключень. Алгоритми взаємного виключення забезпечують одночасний доступ не більш ніж одного процесу до спільно використовуваних ресурсів, таким як файл, принтер і т.п. Транзакції також захищають загальні ресурси від одночасного доступу декількох паралельних процесів. Транзакції можуть виконувати і багато інших функцій. Зокрема, вони перетворюють процеси доступу й модифікації безлічі елементів даних в одну атомарну операцію. Якщо процес під час транзакції вирішує зупинитися на півшляху й повернути назад, всі дані відновлюються з тими значеннями і у тому стані, у якому вони були до початку транзакції.
Модель транзакцій
Комп'ютерна модель виглядає наступним чином. Один процес повідомляє, що хоче почати транзакцію з одним або декількома іншими процесами. Після цього вони можуть погоджувати різні умови, створювати й видаляти сутності, виконувати операції. Потім ініціатор повідомляє, що він пропонує всім іншим підтвердити, що робота зроблена. Якщо все це підтверджують, результати затверджуються й стають постійними. Якщо один або кілька процесів відмовляються (або до угоди в них виникають збої), ситуація повертається до того стану, що мало місце до початку транзакції, з усіма наслідками, що випливають звідси, для файлів, баз даних і т.д. Така властивість, «всі або нічого»,сильно спрощує роботу програмістам.
Використання транзакцій у комп'ютерних системах бере початок у шістдесятих роках. До цього дисків і мережних баз даних не існувало, всі дані зберігалися на магнітних стрічках. Уявіть собі супермаркет з автоматизованою системою інвентаризації. Щодня після закриття, комп'ютер починав роботу із двома магнітними стрічками. Перша з них містила повні відомості про товари на момент відкриття ранком поточного дня, а друга – список.
Основна перевага цієї схеми (незважаючи на те, що люди, змушені цим займатися, тоді часто не могли цього оцінити) полягало в тому, що при будь-яких збоях всі стрічки можна було перемотати на початок і почати роботу знову без яких-небудь проблем. Такі примітивні старі магнітні стрічки мали властивість, характерним для транзакції, – «все або нічого».
Приклад
Розглянемо сучасну банківську прикладну програму, що вносить зміни в мережеву базу даних. Клієнт дзвонить у банк, використовуючи комп'ютер з модемом, маючи намір зняти гроші з одного рахунку й покласти їх на іншій. Операція здійснюється у два прийоми.
Зняти суму а з рахунку 1.
Покласти суму а на рахунок 2.
Рис. 6.13 Внесення змін в основну стрічку захищено від збоїв
Проблему вирішує об'єднання цих операцій в одну транзакцію. Або обидві вони будуть виконані, або не буде виконана жодна. Ключовий, отже, є можливість відкату до вихідного стану при неможливості завершити транзакцію. Що дійсно потрібно – так це спосіб «відмотати до початку» базу даних. Цю можливість дає транзакція.
Програмування з використанням транзакцій вимагає спеціальних примітивів, які можуть підтримуватися як базовою розподіленою системою, так і виконуючою системою мови програмування. Типові приклади приводяться в табл. 6.1. Повний список примітивів залежить від того, які об'єкти використаються в транзакції. У поштовій системі примітивами можуть бути відправлення, прийом і пересилання пошти. У банківських системах примітиви можуть бути зовсім іншими. Як правило, там присутні команди READ й WRITE. Звичайні інструкції, виклики процедур й ін. також можуть включатися усередину транзакцій.