
- •Л.С. Глоба
- •Розподілені системи
- •Історична довідка
- •Базові терміни та визначення
- •Комп'ютерні мережі, як частковий випадок розподілених систем
- •Модель клієнт-сервер.
- •Особливості розподілених систем
- •Переваги розподілених систем
- •Недоліки розподілених систем
- •Класифікація розподілених систем
- •Характеристики розподілених систем
- •Висновки
- •Питання для самоконтролю
- •Поняття розподіленого середовища
- •Концепції апаратних рішень
- •Архітектура багатопроцесорних систем
- •Системи із спільною пам'яттю
- •Системи з роздільною пам'яттю
- •Представники систем з роздільною пам'яттю
- •Топології багатопроцесорних систем
- •Концепції програмних рішень
- •Таблиця 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 Рівні ізольованості та проблеми, які вони допускають
- •Реалізація розподілених транзакцій
- •Керування паралельним виконанням транзакцій
- •Компоненти розподілених транзакцій
- •Висновки
- •Список літератури
Алгоритми синхронізації часу
Якщо одна машина має приймач WWV, то завданням є підтримка синхронізації з нею всіх інших машин. Якщо приймачів WWV немає на жодній з машин, то кожна з них відраховує свій власний час, і нашим завданням буде по можливості синхронізувати їх між собою. Для проведення синхронізації було запропонована багато алгоритмів.
Всі
алгоритми мають одну базову модель
системи. Вважається, що кожна машина
має таймер, що ініціює переривання Нраз у секунду. Коли цей таймер спрацьовує,
оброблювач переривань додає одиницю
до програмних годинників, які зберігають
число тиків (переривань), починаючи з
якого-небудь моменту в минулому, про
яке була попередня домовленість. Будемо
вважати, що можемо викликати значення
цих годинС. Конкретніше, коли час
UTC дорівнюєt, значення годин машинир – Cp(t). В ідеальному світі можемо
вважати, що для всіх рі всіх.
Інакше кажучи,
–точно одиниця.
Реальні таймери не генерують переривання точно Нраз у секунду. Теоретично таймер зН=60повинен генерувати 216 000 тиків у годину. На практиці відносна помилка, припустима в сучасних мікросхемах таймерів, становить порядку 10-5. Це означає, що конкретна машина може видати значення в діапазоні від 215998 до 216002 тиків у годину.
У цих межах таймер може вважатися працездатним. Константа рвизначається виробником і відома за назвою максимальної швидкості дрейфу (maximum drift rate). Відстаючі, правильні й годинники, що поспішають, ілюструє рис. 6.4.
Якщо
два годинника ідуть від UTC у різні сторони
за час після синхронізації, різниця між їхніми
показаннями може бути не більш ніж2р
–
.
Якщо розроблювачі операційної системи
хочуть гарантувати, що ніяка пара годин
не зможе розійтися більш ніж на 5,
синхронізація годин повинна вироблятися
не рідше, ніж кожні5/2рс. Різні
алгоритми відрізняються точністю
визначення моменту проведення повторної
синхронізації.
Рис. 6.4 Співвідношення між часом по годинниках і часом UTC
Використання синхронізованих годин
За минулі кілька років стали легкодоступними необхідне обладнання й програмне забезпечення, призначене для синхронізації годин у глобальному масштабі (тобто у всьому Інтернеті). Завдяки цим новим технологіям можна синхронізувати мільйони годинників з точністю до декількох мілісекунд по UTC. Стали з'являтися нові алгоритми, що використовують ці синхронізовані годинники. Один із прикладів стосується того, як домогтися доставки серверу не більше одного повідомлення, навіть у випадку збоїв. Традиційний підхід полягає в тому, що кожному повідомленню приписується унікальний номер повідомлення, а кожен сервер зберігає всі номери повідомлень, які він прийняв, щоб можна було відрізнити нове повідомлення від повторної посилки. Проблема цього алгоритму полягає в тому, що при збої і перезавантаженні сервера він губить цю таблицю номерів повідомлень. Неясно також, скільки часу зберігати ці номери повідомлень.
З використанням часу традиційний алгоритм модифікується в такий спосіб. Отже, кожне повідомлення має ідентифікатор зв'язку (обраний відправником) і мітку часу. Для кожного з'єднання сервер заносить у таблицю останню отриману мітку часу. Якщо яке-небудь вхідне повідомлення має оцінку часу меншу, чим оцінка, збережена в таблиці для цього з'єднання, повідомлення вважається дублікатом і не розглядається.
Щоб можна було видалити стару мітку часу, кожен сервер постійно підтримує глобальну змінну G, обумовлену в такий спосіб:
,
де
– максимальний час життя повідомлення,
a
вказує на те, як далеко від часу UTC можуть
відрізнятися годинники.
Будь-яка мітка часу старше Gможе бути легко вилучена з таблиці, оскільки всіх повідомлень старшеGуже пройшли. Якщо вхідне повідомлення має невідомий ідентифікатор зв'язку, воно буде прийнято, якщо його мітка часу більш рання, чимG, і відкинуто, якщо вона більш пізня, чимG, оскільки всяке більш пізніше повідомлення – це, безсумнівно, дублікат. У дійсностіG– це сума номерів всіх старих повідомлень.
У випадку збою й наступного перезавантаження сервера він завантажує значення Gз файлу, збереженого на диску, і збільшує його в ході періоду відновлення. Будь-яке вхідне повідомлення з оцінкою часу старшеG– це дублікат. У результаті кожне повідомлення, що могло бути прийняте до збою, тепер відкидається. Деякі нові повідомлення можуть бути відкинуті помилково, але при дотриманні всіх умов алгоритм підтримує семантику «не більше одного повідомлення».