В распределенной вычислительной системе детектор отказов — это компьютерное приложение или подсистема , которая отвечает за обнаружение отказов или сбоев узлов . [1] Детекторы отказов были впервые представлены в 1996 году Чандрой и Тоуэгом в их книге «Ненадежные детекторы отказов для надежных распределенных систем» . В книге детектор отказов описывается как инструмент для улучшения консенсуса (достижения надежности) и атомарной трансляции (той же последовательности сообщений) в распределенной системе. Другими словами, детекторы отказов ищут ошибки в процессе , и система будет поддерживать уровень надежности . На практике, после того как детекторы отказов обнаруживают сбои, система запрещает процессы, которые совершают ошибки, чтобы предотвратить дальнейшие серьезные сбои или ошибки. [2] [3]
В 21 веке детекторы отказов широко используются в распределенных вычислительных системах для обнаружения ошибок приложений , таких как прекращение корректной работы программного обеспечения . Поскольку распределенные вычислительные проекты (см. Список распределенных вычислительных проектов ) становятся все более популярными, использование детекторов отказов также становится важным и критически важным. [4] [5]
Чандра и Туег, соавторы книги «Ненадежные детекторы отказов для надежных распределенных систем » (1996), подошли к концепции обнаружения узлов отказов, введя детектор ненадежных отказов. [6] Они описывают поведение детектора ненадежных отказов в распределенной вычислительной системе следующим образом: после того, как каждый процесс в системе вошел в компонент локального детектора отказов, каждый локальный компонент будет проверять часть всех процессов в системе. [5] Кроме того, каждый процесс должен также содержать программы , которые в настоящее время подозреваются детекторами отказов. [5]
Чандра и Туэг утверждали, что ненадежный детектор отказов все еще может быть надежным в обнаружении ошибок, допущенных системой. [6] Они обобщают ненадежные детекторы отказов на все формы детекторов отказов, поскольку ненадежные детекторы отказов и детекторы отказов имеют одни и те же свойства. Кроме того, Чандра и Туэг указывают на важный факт, что детектор отказов не предотвращает никаких сбоев в системе, даже если ранее подозревали аварийную программу. Построение детектора отказов является существенной, но очень сложной проблемой, которая возникла при разработке отказоустойчивого компонента в распределенной компьютерной системе. В результате детектор отказов был изобретен из-за необходимости обнаружения ошибок в массивной информационной транзакции в распределенных вычислительных системах. [1] [3] [5]
Классы детекторов отказов различаются по двум важным свойствам: полноте и точности . Полнота означает, что детекторы отказов найдут программы, которые в конечном итоге дали сбой в процессе, тогда как точность означает, что правильные решения, которые детекторы отказов приняли в процессе. [5]
Степень полноты зависит от количества аварийных процессов, обнаруженных детектором сбоев за определенный период. [5]
Степень точности зависит от количества ошибок, которые детектор неисправностей допустил за определенный период. [5]
Детекторы неисправностей можно разделить на следующие восемь типов: [1] [7]
Свойства этих детекторов неисправностей описаны ниже: [1]
В двух словах, свойства детекторов отказов зависят от того, насколько быстро детектор отказов обнаруживает реальные отказы и насколько хорошо он избегает ложных срабатываний. Идеальный детектор отказов обнаружит все ошибки без ошибок, тогда как слабый детектор отказов не обнаружит никаких ошибок и совершит множество ошибок. [3] [8]
Различные типы детекторов отказов могут быть получены путем изменения свойств детекторов отказов. [3] [6] Первые примеры показывают, как повысить полноту детектора отказов, а второй пример показывает, как изменить один тип детектора отказов на другой.
Ниже приведен пример, взятый из Департамента компьютерных наук Йельского университета. Он функционирует, повышая полноту детектора отказов. [6]
изначально подозреваемые = ∅делать вечно: для каждого процесса p: если мой слабый детектор подозревает p, то отправить p всем процессампри получении p от некоторого процесса q: подозреваемые := подозреваемые + p - q
Из приведенного выше примера, если p падает, то слабый детектор в конечном итоге заподозрит это. Все детекторы отказов в системе в конечном итоге заподозрят p из-за бесконечного цикла, созданного детекторами отказов. Этот пример также показывает, что слабый детектор отказов полноты также может в конечном итоге заподозрить все сбои. [6] Проверка аварийных программ не зависит от полноты. [5]
Ниже приведены аргументы корректности для удовлетворения алгоритма замены детектора отказов W на детектор отказов S. [1] Детектор отказов W слаб по полноте, а детектор отказов S силен по полноте. Они оба слабы по точности. [6]
Если все приведенные выше аргументы удовлетворены, то сведение слабого детектора отказов W к сильному детектору отказов S будет согласовываться с алгоритмом в распределенной вычислительной системе. [1]
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )