
- •Л.С. Глоба
- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Комп'ютерні мережі, як частковий випадок розподілених систем
- •Модель клієнт-сервер.
- •Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Питання для самоконтролю
- •Поняття розподіленого середовища
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи із спільною пам'яттю
- •Системи з роздільною пам'яттю
- •Представники систем з роздільною пам'яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Таблиця 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. Розподіленою системоюназивається ряд з’єднаних центральних процесорів (ЦПУ – CPU), що працюють разом.
Визначення 2. Розподіленою системоюназивається ряд машин з нерозділеною пам'яттю.
Надалі розподілені системи повинні розглядатися в найбільш загальній формі. Сюди відносяться всі різновиди клієнт-серверних систем, а також мультипроцесорні системи, тобто системи, які складаються з вузлів та можуть бути однопроцесорними або мультипроцесорними.
Використовуються також наступні визначення:
Визначення 3. Розподілена системає системою із просторово розподіленими компонентами, які не використовують ніякої спільної пам'яті й не підлягають децентралізованій адміністрації. Для реалізації спільних цілей можлива кооперація компонентів. Якщо цими компонентами пропонуються послуги або використовуються запропоновані послуги, то виникає клієнт-серверна система, у випадку додаткового центрального службового посередництва - “торгівельна” система ( Trading-Система).
Часто при визначенні розподіленої системи на перше місце ставлять поділ її функцій між декількома комп'ютерами. При такому підході розподіленою є будь-яка обчислювальна система, де обробка даних розділена між двома й більше комп'ютерами.
Розподілена система– це набір незалежних комп'ютерів, що уявляється користувачами єдиною об'єднаною системою.
У цьому визначенні є два однаково важливі моменти:
стосовно апаратури: всі машини автономні;
стосовно програмного забезпечення: користувачам надається у користування єдина система.
Основними завданнями розподіленої системи є організація ефективного доступу користувачів до інформаційних і програмних ресурсів, а також ефективна взаємодія як користувачів з ресурсами, так і різних видів ресурсів між собою.
Комп'ютерні мережі, як частковий випадок розподілених систем
Комп'ютерні мережі належать до розподілених (або децентралізованих) обчислювальним систем. У обчислювальних мережах програмні й апаратні зв'язки є ще слабшими, а автономність розрахункових блоків простежується найбільшою мірою – основними елементами мережі є стандартні комп'ютери, що не мають ні спільних блоків пам'яті, ні спільних периферійних пристроїв. Зв'язок між комп'ютерами здійснюється за допомогою спеціальних периферійних пристроїв – мережевих адаптерів, сполучених каналами зв'язку, які мають відносно велику протяжність. Кожний комп'ютер працює під керуванням власної операційної системи, а деяка «спільна» операційна система, що розподіляє роботу між комп'ютерами мережі, відсутня. Взаємодія між комп'ютерами мережі відбувається за рахунок передачі повідомлень через мережеві адаптери і канали зв'язку. За допомогою цих повідомлень один комп'ютер запитує дозвіл на доступ до локальних ресурсів іншого комп'ютера. Такими ресурсами можуть бути як дані, що зберігаються на диску, так і різноманітні периферійні пристрої – принтери, модеми, факси-апарати і т.д. Поділ локальних ресурсів кожного комп'ютера між усіма користувачами мережі – основна мета створення обчислювальної мережі.
На тих комп'ютерах, ресурси яких повинні бути доступні всім користувачам мережі, необхідно встановити модулі, що постійно будуть знаходитися в режимі очікування запитів, які надходять мережею від інших комп'ютерів. Зазвичай такі модулі називаються програмними серверами (server), тому що їхнє головне завдання – обслуговувати (to serve) запити на доступ до ресурсів свого комп'ютера. На комп'ютерах, користувачі яких хочуть одержувати доступ до ресурсів інших комп'ютерів, також потрібно додати до операційної системи деякі спеціальні програмні модулі, що повинні виробляти запити на доступ до віддалених ресурсів і передавати їх мережею на потрібний комп'ютер. Такі модулі звичайно називають програмними клієнтами (client). Власне ж мережеві адаптери і канали зв'язку вирішують у мережі достатньо просте завдання – вони передають повідомлення з запитами і відповідями від одного комп'ютера до іншого, а основну роботу з організації спільного використання ресурсів виконують клієнтські і серверні частини операційних систем. Пара модулів «клієнт – сервер» забезпечує спільний доступ користувачів до визначеного типу ресурсів, наприклад до файлів. У цьому випадку говорять, що користувач має справу з файловою службою. Звичайно мережева операційна система підтримує декілька видів мережевих служб для своїх користувачів – файлову службу, службу друку, службу електронної пошти, службу віддаленого доступу і т.п.
У технічній літературі англомовний термін «service» звичайно перекладається як «служба», «сервіс». Часто ці терміни використовуються як синоніми. Водночас, деякі спеціалісти розрізняють термін «служба», з одного боку, і терміни «сервіс» і «послуга», з іншого. Під «службою» розуміється мережевий компонент, що реалізує деякий набір послуг, а «сервісом» називають опис набору послуг, який надається даною службою. Таким чином, сервіс – це інтерфейс між споживачем послуг і постачальником послуг (службою).
Терміни «клієнт» і «сервер» використовуються не тільки для позначення програмних модулів, але і комп'ютерів, підключених до мережі. Якщо комп'ютер надає свої ресурси іншим комп'ютерам мережі, то він називається сервером, а якщо він їх споживає – клієнтом. Іноді один комп'ютер може одночасно виступати і в ролі сервера, і в ролі клієнта. Мережеві служби завжди є розподіленими програмами. Розподілена програма – це програма, що складається з декількох частин, які взаємодіють, причому кожна частина, як правило, реалізується на окремому комп'ютері мережі. В мережі можуть виконуватися і розподілені програми користувачів. Розподілена прикладна програма також складається з декількох частин, кожна з яких виконує якусь визначену закінчену роботу з розв’язання прикладного завдання. Наприклад, одна частина прикладної програми, що виконується на комп'ютері користувача, може підтримувати спеціалізований графічний інтерфейс, друга – працювати на потужному виділеному комп'ютері і займатися статистичною обробкою введених користувачем даних, а третя – заносити отримані результати в базу даних на комп'ютер із встановленою стандартною СУБД. Розподілені прикладні програми повною мірою використовують потенційні можливості розподіленої обробки, надані обчислювальною мережею, і тому часто називаються мережевими прикладними програмами.
Варто підкреслити, що не кожна прикладна програма, що виконується у мережі, є мережевною. Існує велика кількість популярних прикладних програм, що не є розподіленими і повністю виконуються на одному комп'ютері в мережі. Проте і такі прикладні програми можуть використовувати переваги мережі за рахунок вмонтованих в операційну систему мережевих служб.
Більшість прикладних програм, які виконувалися у локальних мережах у середині 80-х років, були звичайними, нерозподіленими прикладними програмами, бо вони були написані для автономних комп'ютерів, а потім – просто перенесені в мережеве середовище. Створення ж розподілених прикладних програм, хоч і мало багато переваг (зменшення мережевого трафіка, спеціалізація комп'ютерів) виявилося справою зовсім не простою. Потрібно було розв'язувати безліч додаткових проблем – на скільки частин розбити прикладну програму, які функції покласти на кожну частину, як організувати взаємодію цих частин, щоб у випадку збоїв і відмов частини, які залишилися, коректно завершували роботу і т п. Тому дотепер тільки невелика частина прикладних програм є розподіленими, хоча очевидно, що саме за цим класом прикладних програм майбутнє, тому що вони повною мірою можуть використовувати потенційні можливості мереж з розпаралеленням обчислень.