Отказоустойчивость или постепенная деградация, или постепенное сокращение возможностей, или постепенный выход из работы, или плавное снижение эффективности - это свойство системы (часто компьютерной), что позволяет ей продолжать правильно действовать в случае ошибки или нескольких ошибок в некоторых ее частях. Если при этом падает качество эксплуатации, то это происхо пропорционально серьезности ошибки, в отличие от наивно спроектированных систем, в которых даже маленькая ошибка приводит общую отказ. Отказоустойчивость особенно популярна в высоко доступных и жизненно критических системах.
Отказоустойчивость не является лишь особенностью отдельных машин; она также характеризует правила взаимодействия между ними. Например, TCP разработан для возможности надежного двустороннего связи в сетях с коммутацией пакетов, даже при современном рук вон и перегруженного состояния линий связи. Он делает это за требования к конечным точек коммуникаций ожидать потерю пакетов, повторения, неверный порядок и повреждения, таким образом эти условия не вредят целостности данных, а лишь уменьшают пропускную способность на пропорциональную величину.
Пример постепенной деградации в создании изображения с прозрачностью. Два изображения вверху являются результатами в обозревателе, который поддерживает прозрачность. Нижние два в таком, который не поддерживает. Так как маска прозрачности (центр низ) отменена, остается лишь фотография (орнаментальный слой); изображение слева был разработан для постепенной деградации, поэтому оно остается содержательным даже без информации о прозрачности.
Форматы данных также могут быть разработаны для постепенной деградации. Например, HTML разработан чтобы быть вперед совместимой, позволяет веб-обозревателю пропускать непонятные сущности, не вызывая негодность документа.
Восстановление после ошибок в отказоустойчивых системах можно характеризовать как прогон ( англ. roll-forward ) или откат (англ. roll-back ). Когда система определила, что произошла ошибка, восстановление прогоном исправляет текущее состояние системы до возможности продолжения работы. Откат возвращает состояние системы до некоторой предварительной, верной версии, например, с использованием контрольных точек, и продолжает выполнение оттуда. Откат требует, чтобы сделки между контрольными точками и состоянием с обнаружением ошибки могли быть сделаны идемпотентнимы. Некоторые системы используют оба подхода для различных ошибок или для риних частей одной ошибки.
В рамках отдельной системы, отказоустойчивость может быть достигнута ожиданиям исключительных условий и построением системы, которая могла бы справиться с ними, и, в общем, целью для самостабилизации есть система, которая сходится в направлении к состоянию без ошибок. Однако, если последствия сбоев системы являются катастрофическими, или цена построения достаточно надежной системы слишком высока, лучшим решением может быть некоторая форма дублирования. В любом случае, если последствия сбоя катастрофические, система должна быть способной использовать реверсию, чтобы вернуться в безопасное состояние. Это подобно откат, но может быть сделано человеком, если он присутствует в процессе.
Требования к отказоустойчивости
Отказоустойчивая система должна:
- Иметь более чем одну точку восстановления (например, перехват управления при отказе может быть выполнено одним из двух серверов)
- Локализация повреждений в поврежденном компоненте
- Ограничения распространения неисправности
- Доступность режимов реверсии
Дополнительно, отказоустойчивая система характеризуется в терминах плановых и внеплановых перерывов в работе службы. Обычно эта величина измеряется именно на застосунковому уровне, а не на уровне аппаратного обеспечения. Эта характеристика называется доступностью и выражается в процентах. Например, система пяти девяток статистически обеспечивает доступность на уровне 99.999%.
Отказоустойчивые системы обычно базируются на концепции избыточности.