Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Задача розподіленої координаціїСодержание книги
Поиск на нашем сайте
Цю задачу формулюють так: чи можливо надійно скоординувати дії на двох різних комп'ютерах (наприклад, виконання деякого коду в один і той самий час, виконання дії тільки один раз, атомарну зміну стану на двох різних машинах тощо)? До дій, що вимагають такої синхронізації, належать, наприклад: ♦ атомарне переміщення файла із сервера S{ на сервер S<i, ♦ атомарне переміщення суми грошей із рахунку в одному банку на рахунок в іншому. Головна проблема, що виникає при цьому, пов'язана з тим, що мережа, яка зв'язує ці комп'ютери, є ненадійною: ♦ повідомлення можуть бути втрачені; ♦ комп'ютери можуть бути вимкнені або вийти з ладу. З урахуванням ненадійності мережі можна уточнити формулювання цієї задачі. Чи можна використати обмін повідомленнями через ненадійну мережу для надійної синхронізації двох комп'ютерів (щоб вони гарантовано могли виконувати ту саму операцію одночасно)? Відповідь на це запитання є однозначно негативною навіть тоді, коли всі повідомлення будуть доставлені й жоден комп'ютер не вийде з ладу. Цю проблему звичайно ілюструють парадоксом візантійських генералів. Припустимо, що два генерали на чолі армій перебувають на деякій відстані один від одного, тому вони можуть обмінюватися повідомленнями тільки через посильних, причому під час доставлення повідомлення посильних можуть полонити. Задачею є погодити час одночасної атаки на ворога (спільних сил достатньо для перемоги, сил кожної армії окремо - ні). Розглянемо протокол обміну повідомленнями, який можна використати в даному випадку. 1. Генерал GA відсилає повідомлення Мм із точним часом атаки. 2. Генерал GB отримує МАІ, відсилає своє повідомлення МВІ із висловленням згоди і починає очікувати підтвердження отримання МВІ. 3. Генерал GA отримує МВІ, відсилає підтвердження його отримання (МА2) і починає очікувати підтвердження отримання МА2. Подібний обмін повідомленнями може тривати нескінченно. Очевидно, що погодити час атаки генералам не вдасться (останнє повідомлення увесь час залишатиметься непідтвердженим). Доведено, що розв'язків ця задача не має. Далі в цьому пункті розглянемо протоколи розподіленої координації, що не потребують одночасного виконання операцій різними сторонами.
Протокол запиту-квітування Проаналізуємо особливості обміну повідомленнями в мережі за наявності помилок. Припустимо, що трапляються тільки помилки передавання даних (втрати повідомлень), учасники протоколу не виходять із ладу. Для обміну повідомленнями за таких умов із гарантією одноразового доставлення призначений протокол запиту-квітування (request/acknowledge protocol). 1. Відправник пересилає одержувачеві повідомлення і встановлює таймер. 2. Одержувач отримує повідомлення і відсилає підтвердження отримання. 3. Відправник отримує підтвердження і скидає значення таймера. 4. У разі вичерпання часу, заданого таймером, кроки протоколу повторюють. Цей протокол гарантує, що повідомлення буде доставлене хоча б один раз за умови, що учасники не виходять із ладу. При цьому одержувач може отримати повідомлення кілька разів (у разі втрати підтвердження). Щоб мати можливість відкидати дублікати, повідомлення можна супроводжувати унікальними номерами. Протокол запиту-квітування мало пристосований до роботи за умов виходу з ладу його учасників. Наприклад, у разі краху відправника після відновлення він не може отримати інформацію про те, отримав одержувач повідомлення чи ні (підтвердження до нього дійти не зможе). У разі краху одержувача значно ускладнюється робота із дублікатами. Для координації взаємодії ненадійних учасників потрібні більш складні протоколи. Одним із них є протокол двофазового підтвердження.
Двофазове підтвердження Оскільки одночасного виконання дій на віддалених комп'ютерах відповідно до парадоксу генералів домогтися неможливо, для розподіленої координації дій використовують методи, у яких допустиме виконання дій у різний час. Розглянемо один із них - двофазове підтвердження (two-phase commit, 2РС) [4]. У цьому разі дві сторони виконують дії, оформлені у вигляді транзакцій -атомарних операцій, які виконуються повністю (підтверджуються, commit) або не виконуються зовсім (відкочуються, rollback). Прикладом розподіленої транзакції може бути перенесення файла із сервера Si на сервер S2. Якщо виконання цієї дії переривається, за відсутності атомарності може виявитися, що файл був вилучений із сервера 5Ь але при цьому не був перенесений на сервер S2. Для виконання протоколу двофазового підтвердження необхідно на кожному комп'ютері підтримувати журнал транзакцій (transaction log), у якому відстежу-вати, відбулося підтвердження чи ні. Крім того, один із вузлів мережі має відігравати роль координатора транзакцій. Основним завданням такого координатора є збереження атомарності кожної транзакції у розподіленій системі. Першим етапом протоколу є етап запитів координатора. 1. Координатор відсилає всім учасникам запит. Він містить опис дії, яка має виконуватися, наприклад «вилучити файл a.txt із кореневого каталогу». Перед відсиланням запиту інформацію про нього зберігають у журналі транзакцій координатора. 2. Учасники отримують запит і виконують транзакцію локально (наприклад, намагаються вилучити файл). Інформацію про результат цієї дії відображають у вигляді повідомлення (Мок - успіх, МАВ0КГ - невдача), яке зберігають у журналі транзакцій кожного учасника і відсилають координаторові. Цей етап завершений, коли координатор отримає повідомлення від всіх учасників (або мине максимальний час очікування). Зазначимо, що для жодної транзакції в конкретний момент ще не було виконано ні підтвердження, ні відкату (наприклад, інформацію про вилучення файла зберігають лише у пам'яті). Другим етапом є етап ухвалення рішення координатором. 3. Спочатку координатор ухвалює рішення щодо підтвердження або відкату розподіленої транзакції. На цьому кроці можуть виникнути дві ситуації: ♦ координатор отримує повідомлення MAB0RT хоча б від одного учасника. Після цього він створює повідомлення MGL0BAL rollback зберігає його в журналі та відсилає всім учасникам; ♦ координатор отримує повідомлення Мок від кожного учасника. Після цього він створює повідомлення MGL0BALC0MMIT, зберігає його в журналі та відсилає всім учасникам. 4. Після отримання повідомлення від координатора кожен учасник зберігає його у своєму журналі та виконує відкат або підтвердження транзакції залежно від типу повідомлення. Для цього прикладу відкат може зводитися до повного скасування операції вилучення файла, підтвердження - до вилучення файла з диска. Розглянемо виконання цього протоколу за умов мережних помилок. Спочатку зупинимося на випадках виходу з ладу учасників протоколу. ♦ Якщо учасник вийде з ладу на кроці 2 (під час виконання транзакції), координатор не отримає повідомлення про завершення транзакції упродовж максимального часу очікування і відкотить транзакцію, відіславши учасникам повідомлення MGL0BAL_R0LLBACK - ♦ Якщо координатор вийде з ладу на кроці 3, після відновлення він має звернутися до свого журналу транзакцій. Коли в ньому немає жодного повідомлення Mglobal_xxx або є повідомлення MGL0BAL_ rollback, то всім учасникам відсилають повідомлення про відкат. Коли в журналі є MGL0BAL_commit, учасникам відсилають повідомлення про підтвердження. ♦ У разі виходу учасника з ладу на кроці 4 після відновлення він має звернутися до координатора за інформацією і виконати відповідно підтвердження або відкат. До недоліків протоколу 2РС належать високі вимоги до надійності координатора. Якщо він вийде з ладу на кроці 3 і не відновить свою роботу, всі учасники можуть бути заблоковані. Це, однак, відбувається не завжди. У разі отримання деякими учасниками повідомлення від координатора на кроці 4, а деякими — ні, часом є можливість завершити транзакцію, звернувшись за інформацією до інших учасників. ♦ Коли хоча б один із учасників отримав Mglobal_xxx, необхідно виконати дію, що відповідає цьому повідомленню. ♦Коли хоча б один із учасників відіслав MAB0RT, транзакцію необхідно відкотити. Якщо ж всі учасники відіслали Мок, але ніхто з них не отримав Mglobal _xxx, рішення не може бути прийнято, оскільки координатор міг зберегти в журналі (але не встиг відіслати) Mglobal_ rollback через свою внутрішню помилку. Така ситуація і спричиняє блокування всіх уч асників. Під час реалізації 2РС потрібно завжди враховувати можливість такого блокування.
Розподілені файлові системи Розподілена файлова система (РФС) дає можливість застосуванням звертатися до файлів, що перебувають на диску віддаленого комп'ютера. Загалом до таких систем можна віднести будь-які засоби доступу до віддалених файлів; наприклад, HTTP фактично можна розглядати як базовий протокол для реалізації РФС. У цьому розділі обмежимося розглядом РФС, які володіють властивістю прозорості доступу. Під час роботи із такою системою з усіма файлами (локальні вони чи віддалені) працюють однаково, особливості реалізації віддаленого доступу обробляють на рівні файлової системи. Фактично розподілена файлова система із прозорістю доступу приховує від користувача наявність мережі.
|
||||
Последнее изменение этой страницы: 2017-02-06; просмотров: 188; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.174.204 (0.007 с.) |