
- •Указатели
- •2 Сервера, 2 клиента (один из них – средний и сервер (для клиента запрашиваемого данные) и клиент (для сервера, у которого он эти данные потом запрашивает).
- •2.4.1. Сохранность и синхронность
- •Во взаимодействиях
- •2.4. Связь посредством сообщений 127
- •128 Глава 2. Связь
- •2.4. Связь посредством сообщений 129
- •2.4. Связь посредством сообщений 131
- •Синхронизация
- •Алгоритм Беркли
- •Логические часы. Временные отметки Лэмпорта:
- •Отказоустойчивость
Отказоустойчивость
Доступность – доля времени, которое система находится в рабочем состоянии.
Надежность – вероятность безоптказной работы в течение единицы времени
Надёжность = 1 – вероятность отказа в единицу времени
Клиент серверная архитектура
Надёжность системы = надёржность сервера
Вероятность отказа системы = количество уровней * вероятность отказа сервера + о (в этих суучаях надо обеспечивать отказоустойчивость)
Классификация отказов по характеру возникновения
- Проходные (разовые, не повторяющиеся)
- Перемежающиеся отказы (повторяются, например: плохой контакт)
- Постоянные отказы (надо устранить, чтобы система заработала дальше)
Классификация отказов по характеру поведения
Поломка (вышедший из сроя вычисл узел перестаёт отправлять и принимать какие то сообщения)
- Пропуск данных
- Пропуск приёма
- Пропуск передач
- Ошибка синхронизации
- Ошибка отклика (возникает, когда вычислительный узел посылает ответ, но не правильный)
-Ошибка отклика
-Ошибка передачи состояния
- Произвольная (Византийская) ошибка
Взаимосвязь различных типов отказов
(круги, не успел)
Основной подход к обеспечению отказоустойчивости – избыточность
- Информационная избыточность (код хэмминга – при утрате данных можно восстановить их)
-Временная избыточность (некоторые задачи решаются не один раз а несколько, в разные промежутки времени, если один раз при решении произошла какая то ошибка, то в другие разы эта ошибка могла не произойти, на основе нескольких выполнених можно получить правильный ответ, даже если при одном из выполнений происходила ошибка)
-Физическая избыточность (вычисления производить не на одном, а на нескольких компьютерах)
Действия в случае отказа:
- Маскировка отказа отказавший компонент просто игнорируется, а правильный ответ получается за счёт других работающих компонентов)
- Восстановление
-Обратное исправление (состояние системы возвращается в предыдущее корректное состояние)
- Прямое исправление
Механизмы обеспечения отказоустойчивости
Использование конкретного механизма зависит от:
- Имеющизся ресурсов
- Тип отказа, борьбу с которым необходимо обеспечить
- Синхронность/асинхронности распределённой системы
- Изменяется или нет состояние вычислительного узла после обработки запроса (есть ниобходимость хранить промежуточное состояние)
Аппаратное обеспечение отказоустойчивости:
- Raid 1
- Источник бесперебойного питания
- GCC
Следующих механизм, позволяющий бороться с отказами – функциональное программирование:
нету глобальных состояний, переменных. Посылать задачи на несколько вычислительных узлов, получать с них результат, проводить голосование. Такой подход позволяет бороться с византийскими отказами. Именно такой механизм используется в платформе боинг. Но узким местом является сервер, его отказоустойчивость обеспечиватьется например с помощью аппаратной отказоустойчивости.
Создание контрольных точек
созраниются состояния вычилительных узлов в моменты работы. Если происходит отказ какого то вычисылительного узла, тогда ищутся две такие контрольные точки, которые (точка, такая, что нету таких сообщений, которые были отправлены до контрольной точки, а получины других ВУ после контрольной йточки) – такая точка называется глобальной (или не совсем такая). Но! С контрольными точками может возникнуть эффект домино (таким образом глобально контрольные точки не буду тполучены, откат будет до начала. Решением этой проблемы является координированное создание контрольных точек:
- Каждое отправляемое сообщение содержит
- Порядковый номер сообщения
- номер самой новой контрольной точки
- Координатор рассылает сообщение запрашивающее создание контрольной точки с номером вновь создаваемой КТ (предыдущий + 1). Каждый получивший это сообщение пересылает его всем отсальным.
- При получении сообщения?
- Если сообщение содежит номер новой контрольной точки, то оно ставится в очередь
- Если сообщение содержит номер предыдущей контрольной точки, то обрабатывается
- Когда все сообщения , относящиеся к предыдущей КТ, обработаны, создаётся новая КТ.
Протоколирование сообщений:
Идея в том, что все отправленные сообщения сохраняются и если некоторый вычислительный узел выходит из строя, то ему после восстановления повторно высылаются все сообщения. Как правило протоколирование используется совместно с созданием контрольных точек
Активная репликация
- Оновременно выполняется N копий одной и той же программы
- Необходимо обеспечить, что все реплики обрабатывают одни и те же сообщения в одном и том же порядке ((N-1)/3)