abramyan.md 8.0 KB

Методы, способы и средства обеспечения отказоустойчивости автоматизированных систем:

Отказоустойчивость - это процесс правильной работы системы, несмотря на возникновение сбоев в системе. Даже после выполнения стольких процессов тестирования существует вероятность сбоя в системе. Практически система не может быть полностью безошибочной. следовательно, системы спроектированы таким образом, что в случае наличия ошибок и сбоев система выполняет работу должным образом и выдает правильный результат.

Любая система состоит из двух основных компонентов – аппаратного и программного обеспечения. Ошибка может возникнуть в любом из них. Таким образом, существуют отдельные методы обеспечения отказоустойчивости как в аппаратном, так и в программном обеспечении.

Картинка 1

В основном для обеспечения отказоустойчивости оборудования используются два метода:

BIST –расшифровывается как Build in Self Test. Система снова и снова проверяет себя через определенный промежуток времени, что является методом BIST для обеспечения отказоустойчивости оборудования. Когда система обнаруживает неисправность, она отключает неисправный компонент и включает его резервную часть. Система в основном перенастраивает себя в случае возникновения сбоя.

TMR - это тройное модульное резервирование. Создаются три резервные копии критически важных компонентов, и все эти три копии выполняются одновременно. Проводится голосование по результатам всех избыточных копий, и выбирается результат большинства. Он может допускать возникновение одной ошибки за раз.

Для обеспечения отказоустойчивости программного обеспечения используются три метода. Первые два метода являются общими и в основном являются адаптацией аппаратных методов обеспечения отказоустойчивости:

Программирование в N-версии – При программировании с N версиями N версий программного обеспечения разрабатываются N отдельными лицами или группами разработчиков. Программирование в N-версии похоже на TMR в технике аппаратной отказоустойчивости. В N-версии программирования все избыточные копии выполняются одновременно, и полученный результат отличается от каждой обработки. Идея программирования n-версии в основном заключается в том, чтобы получать все ошибки только во время разработки.

Картинка 2

Блоки восстановления – Метод блоков восстановления также похож на программирование n-версии, но в методе блоков восстановления избыточные копии генерируются только с использованием разных алгоритмов. В блоке восстановления все резервные копии не запускаются одновременно, и эти копии запускаются одна за другой. Метод блока восстановления может использоваться только в тех случаях, когда сроки выполнения задачи превышают время вычисления задачи.

Картинка 3

Восстановление с помощью флажков и отката – Этот метод отличается от двух методов обеспечения отказоустойчивости программного обеспечения. В этом методе система проверяется каждый раз, когда мы выполняем некоторые вычисления. Эти методы в основном полезны при сбое процессора или повреждении данных.

Картинка 4

Способы реализации:

Есть два принципиально разных подхода, хотя они вполне могут независимо или полузависимо сочетаться для вашей системы. Один подход — это DR (disaster recovery), когда полная копия всей вашей системы может быть поднята в другом датацентре. Данный метод выручает практически в любой ситуации, однако, он может имеет очень длительный промежуток простоя. Я знаю одну систему, в которой это занимает в районе часа. Но тут тоже надо быть очень аккуратным, не только конфигурация системы, но и железо в DR должны совпадать с продакшеном. Например, когда мы тестировали DR, в одной из систем с которыми я работал, то у нас при сильной нагрузке оказалось, что один из компонентов заточен на работу в однопоточной среде и его пропускная способность пропорциональна частоте процессора, а на DR у нас была мега железка с огромным количеством ядер, но с небольшой тактовой частотой, так что этот компонент стал затыкаться. Вобщем, тест был весьма неудачен и «более клевое» железо на текущей конфигурации нашей системы нам явно не подходило.

Второй способ — это программно реализовывать отказоустойчивость для каждого из компонент и их взаимодействия. Различных техник сделать вашу систему более устойчивой очень много.

Источники:
1.translated.turbopages.org 2.top-technologies.ru
3.habr.com