
- •Л.С. Глоба
- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Комп'ютерні мережі, як частковий випадок розподілених систем
- •Модель клієнт-сервер.
- •Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Питання для самоконтролю
- •Поняття розподіленого середовища
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи із спільною пам'яттю
- •Системи з роздільною пам'яттю
- •Представники систем з роздільною пам'яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Таблиця 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 Рівні ізольованості та проблеми, які вони допускають
- •Реалізація розподілених транзакцій
- •Керування паралельним виконанням транзакцій
- •Компоненти розподілених транзакцій
- •Висновки
- •Список літератури
Розміщення мобільних сутностей
Служби імен, які обговорювалися, використовуються в першу чергу для іменованих сутностей, які мають постійне місце розташування. По своїй природі традиційні системи іменування погано підходять для підтримки відображення імені на адресу, якщо той регулярно змінюється, як це відбувається у випадку мобільних сутностей.
Іменування й локалізація сутностей
Сутності йменуються для того, щоб мати можливість їх знайти й одержати до нихдоступ.Виділяють три типи імен:імена, зручні для сприйняття,ідентифікаторийадреси. Оскільки розподілені системи будуються для людей і для доступу до сутності, необхідно знатиадресу сутності, фактично всі системи іменування підтримують відображення зручних для сприйняттяімен в адреси.
Для ефективної реалізації повномасштабного простору імен, такого як в DNS, зручно розбити простір імен на три рівні: глобальний, адміністративний та управлінський.Глобальний і адміністративний рівні характеризуються тим, щоімена змінюються нечасто. Точніше, вміст вузлів цих частин простору іменвідносно постійний. Внаслідок цього реплікація йкешируванняздатніпідвищити ефективність реалізації.
Вміст вузлів управлінськогорівнячасто змінюється. Томупродуктивність операцій пошуку й відновленняна цьому рівні стає особливо важливою. На практиці вимоги попродуктивностіможна задовольнити шляхомреалізації вузлів на локальних високопродуктивних серверах імен.
Приклад.
Розглянемо тепер ближче, яке допущення варто зробити насправді і як подібний підхід можна використовувати для реалізації великомасштабної системи іменування. Насамперед розглянемо пошук адреси віддаленого хоста ftp.cs.vu.nl. Якщо вважати вміст вузлів глобального й адміністративного рівнів стабільним, клієнт, імовірно, зможе знайти адресу сервера імен домена cs.vu.nl у локальному кеші. Відповідно, йому знадобиться всього один запит до сервера імен, щоб знайти адресу ftp.cs.vu.nl.
Розглянемо далі зміну адреси ftp.cs.vu.nl, наприклад, через перенос FTP-сервера на іншу машину. Доти доки сервер буде залишатися на машині, що входить у домен cs.vu.nl, відновлення можна виконати швидко. У цьому випадку зміні піддасться тільки база даних DNS сервера імен cs.vu.nl. Пошук буде настільки ж ефективний, як і раніше.
Відповідно, у тому випадку, якщо вузли глобального й адміністративного рівнів змінюються рідко, а зміни звичайно обмежуються одним сервером імен, системи іменування, такі як DNS, досить ефективні.
Приклад.
Подивимося тепер, що відбудеться, якщо сервер ftp.cs.vu.nl перенести на машину з іменем ftp.cs.umsa.edu.au, яка знаходиться в абсолютно іншому домені. Перше, на що варто звернути увагу, – ім'я ftp.cs.vu.nl краще було б не міняти, оскільки багато прикладних програм і користувачів могли мати на нього лише символічне посилання. Інакше кажучи, це ім'я приблизно використовується як ідентифікатор. Його зміна зробить всі посилання на нього невірними.
Існує два основних рішення:
Перше рішення – записати адресу нової машини в базі даних DNS для cs.vu.nl.
Друге рішення – записати ім'я нової машини, а не її адресу, включивши fip.cs.vu.nl у символічне посилання. Обидва рішення мають серйозні недоліки.
Спочатку розглянемо запис адреси нової машини (перший підхід). Ясно, що на операцію пошуку подібний підхід не вплине. Однак якщо сервер ftp.cs.vu.nl доведеться ще раз переносити на нову машину, доведеться обновляти і його елемент бази даних DNS в cs.vu.nl. Важливо відзначити, що саме по собі обновлення виконується не довше локальної операції, однак у реальності може потребувати сотень міллісекунд. Недолік, подібний підхід порушує припущення про те, що операції у вузлах управлінського рівня ефективні.
Основний недолік використання символічних посилань (другий підхід) полягає в тому, що губиться ефективність операцій пошуку. Кожна операція пошуку виконується за два кроки:
пошук імені нової машини;
пошук адреси, що відповідає цьому імені.
Якщо сервер ftp.cs.vu.nl знову переміститься, скажемо, на адресу ftp.cs.berke-ley.edu, можна здійснити операцію локального відновлення, помістивши ім'я ftp.cs.unisa.edu.au у символічне посилання на ftp.cs.berkeley.edu і зберігши для cs.vu.nl елемент у базі даних DNS таким, як він є. Недолік – додавання ще одного кроку до операції пошуку.
Для сутностей з високою мобільністю ситуація може бути тільки гірше. Щораз при переносі сутності або доводиться виконувати нелокальну операцію внесення змін, або додається ще один крок до операції пошуку.
Інша серйозна проблема розглянутих підходів полягає в тому, що ім'ятаке як, наприклад,ftp.cs.vu.nlне повинне змінюватися. Таким чином, стає надзвичайно важливим вибирати імена, які (приблизно) не доведеться міняти протягом усього часу існування тієї сутності, яку вони ідентифікують. Більше того, таке ім'я не можна використовувати для яких-небудь інших сутностей. На практиці підбор подібних імен, особливо для довгоживучих сутностей утруднений, що демонструє система іменування в World Wide Web. Багато сайтів відомі під різними іменами і всі ці імена залишаються правильними, тобто завжди посилаються на ту саму сутність, навіть у випадку мобільності.
Із цих причин традиційні служби імен, такі як DNS, не справляються з мобільними сутностями. Тут необхідне інше рішення. По суті, проблеми пов'язані з тим, що традиційні служби іменування підтримують пряме відображеннязручних для сприйняття людиною імен в адреси сутностей. Щоразу, колиім'я або адреса змінюються, доводитьсязмінювати й відображення, як показано на рис. 5.6а.
Рис. 5.6 Пряме однорівневе відображення імен в адреси (а). Дворівневе відображення з використанням ідентифікаторів (б)
Найкраще рішення полягає в тому, щоб відокремити іменування сутностей від їхнього розміщення, увівши ідентифікатори, як показано на рис. 5.6б. Нагадаємо, що ідентифікатори ніколи не змінюються,кожна сутність має тільки один ідентифікатор, іідентифікатор не може бути призначений іншій сутності.У загальному випадку ідентифікатор не призначений для сприйняття людиною. Інакше кажучи, він оптимізований винятково для машинної обробки.
При пошуку сутності засобами служби іменування вона повертає ідентифікатор. Ідентифікатор може бути збережений на локальній машині на будь-який необхідний термін, оскільки він не може а ні почати вказувати на іншу сутність, а ні змінитися. Під яким іменем він збережений, не важливо. Відповідно, коли цей ідентифікатор буде потрібен знову, його можна буде просто взяти з локальної машини, не звертаючись до пошуку засобами служби іменування.
Розміщення сутностівизначається за допомогою окремоїслужби локалізації (location service).Служба локалізаціївикористовує в якості вихідних данихідентифікаторі повертаєпоточну адресувідповідної йому сутності. Якщо є кілька копій сутності, буде повернуто кілька адрес. Зосередимося винятково на проблемі реалізації ефективної служби локалізації.