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