Розподілені системи

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

Розподілені системи

У літературі можна знайти різні визначення розподілених систем, причому жодне з них не є задовільним і не узгоджується з іншими. Для викладення даної статті вистачить доволі простої характеристики.

Розподілена система — це набір незалежних комп'ютерів, що представляється їх користувачам єдиною об'єднаною системою.

У цьому визначенні обмовляються два моменти. Перший відноситься до апаратури: всі машини автономні. Другий стосується програмного забезпечення: користувачі думають, що мають справу з єдиною системою. Важливо обидва моменти.
Можливо, замість того щоб розглядати визначення, розумніше буде зосередитися на важливих характеристиках розподілених систем. Перша з таких характеристик полягає в тому, що від користувачів приховані відмінності між комп'ютерами і способи зв'язку між ними. Те ж саме відноситься і до зовнішньої організації розподілених систем. Іншою важливою характеристикою розподілених систем є спосіб, за допомогою якого користувачі і додатки одноманітно працюють в розподілених системах, незалежно від того, де і коли відбувається їх взаємодія.
Розподілені системи повинні також відносно легко піддаватися розширенню, або масштабуванню. Ця характеристика є прямим наслідком наявності незалежних комп'ютерів, але в той же час не указує, яким чином ці комп'ютери насправді об'єднуються в єдину систему. Розподілені системи зазвичай існують постійно, проте деякі їх частини можуть тимчасово виходити з ладу. Користувачі і додатки не повинні повідомлятися про те, що ці частини замінені або полагоджені або що додані нові частини для підтримки додаткових користувачів або додатків.
Для того, щоб підтримати представлення різних комп'ютерів і мереж у вигляді єдиної системи, організація розподілених систем часто включає додатковий рівень програмного забезпечення, що знаходиться між верхнім рівнем, на якому знаходяться користувачі і додатки, і нижнім рівнем, що складається з операційних систем, як показано на рис. 1. Відповідно, така розподілена система зазвичай називається системою проміжного рівня (middleware).
Al RS112.jpg
Рис.1. Розподілена системо організована у вигляді служби проміжного рівня

Наведемо деякі приклади розподілених систем.

  • Як перший приклад розглянемо мережу робочих станцій в університеті або відділі компанії. Додатково до персональної робочої станції кожного з користувачів є пул процесорів машинного залу, не призначених наперед жодному з користувачів, але що динамічно виділяються їм при необхідності. Ця розподілена система може володіти єдиною файловою системою, в якій всі файли однаково доступні зі всіх машин з використанням постійного шляху доступу. Крім того, коли користувач набирає команду, система може знайти якнайкраще місце для виконання запрошуваної дії, можливо, на власній робочій станції користувача, можливо, на простоюючій робочій станції, що належить комусь іншому, а може бути, і на одному з вільних процесорів машинного залу. Якщо система в цілому виглядає і поводиться як класична однопроцесорна система з розділенням часу (тобто розрахована на багато користувачів), вона вважається розподіленою системою.
  • Як другий приклад розглянемо роботу інформаційної системи, яка підтримує автоматичну обробку замовлень. Зазвичай подібні системи використовуються співробітниками декількох відділів, можливо в різних місцях. Так, співробітники відділу продажів можуть бути розкидані по обширному регіону або навіть по всій країні. Замовлення передаються з переносних комп'ютерів, що сполучаються з системою за допомогою телефонної мережі, а можливо, і за допомогою стільникових телефонів. Замовлення, що приходять, автоматично передаються у відділ планування, перетворюючись там на внутрішні замовлення на постачання, які поступають у відділ доставки, і в заявки на оплату, що поступають в бухгалтерію. Система автоматично пересилає ці документи співробітникам, що є на місці, відповідають за їх обробку. Користувачі залишаються в повному невіданні про те, як замовлення насправді курсують усередині системи, для них все це представляється так, ніби вся робота відбувається в централізованій базі даних.
  • Як останній приклад розглянемо World Wide Web. Web надає просту, цілісну і одноманітну модель розподілених документів. Щоб побачити документ, користувачеві досить активізувати посилання. Після цього документ з'являється на екрані. У теорії (але безумовно не в поточній практиці) немає необхідності знати, з якого сервера доставляється документ, достатньо лише інформації про те, де він розташований. Публікація документа дуже проста: ви повинні тільки задати йому унікальне ім'я у формі уніфікованого покажчика ресурсу (Uniform Resource Locator, URL), яке посилається на локальний файл з вмістом документа. Якби Усесвітня павутина представлялася своїм користувачам гігантською централізованою системою документообігу, вона також могла б вважатися розподіленою системою. На жаль, цей момент ще не наступив. Так, користувачі усвідомлюють, що документи знаходяться в різних місцях і розподілені по різних серверах.

Концепції побудови розподілених систем


Комп'ютерні мережі, як частковий випадок розподілених систем

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