Аноним

Детекторы сбоев: различия между версиями

Материал из WEGA
м
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
== Ключевые слова и синонимы ==
== Ключевые слова и синонимы ==
Частичная синхронность; тайм-ауты; информация о сбоях; распределенные оракулы
Частичная синхронность (''Partial synchrony''); тайм-ауты (''Time-outs''); информация о сбоях (''Failure information''); распределенные оракулы (''Distributed oracles'')


== Постановка задачи ==
== Постановка задачи ==
Распределенная система состоит из набора процессов. Процессы обычно стремятся решить некоторую общую задачу, взаимодействуя посредством передачи сообщений или разделяемой памяти. Большинство интересных задач требуют, по крайней мере, на определенных этапах вычислений, некоторой формы ''согласования'' между процессами. Абстрактной формой такого согласования является ''консенсус'', когда процессам необходимо договориться об одном значении из множества предложенных. Решение этой, казалось бы, элементарной задачи лежит в основе надежных распределенных вычислений и, в частности, распределенных баз данных, полного упорядочения сообщений и эмуляции многих типов общих объектов.
Распределенная система состоит из набора процессов. Процессы обычно стремятся решить некоторую общую задачу, взаимодействуя посредством передачи сообщений или разделяемой памяти. Большинство интересных задач требуют, по крайней мере, на определенных этапах вычислений, некоторой формы ''согласования'' между процессами. Абстрактной формой такого согласования является ''консенсус'', когда процессам необходимо договориться об одном значении из множества предложенных. Решение этой, казалось бы, элементарной задачи лежит в основе надежных распределенных вычислений и, в частности, внесения данных в распределенные базы данных, полного упорядочения сообщений и эмуляции многих типов общих объектов.




Строка 9: Строка 9:




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




Строка 15: Строка 15:




Интуитивно понятно, что способ, которым такие допущения относительно времени обходят асинхронные невозможности, заключается в предоставлении процессам ''информации о сбоях'', обычно через механизмы ''тайм-аута'' (или ''пульса''), часто лежащие в основе реальных распределенных приложений. Хотя определенную информацию о сбоях можно получить и в распределенных системах, точность такой информации может варьироваться от системы к системе в зависимости от базовой сети, нагрузки приложения и механизмов обнаружения сбоев. Важнейшей проблемой в этом контексте является определение характеристик такой информации максимально абстрактным и точным способом.
Интуитивно понятно, что способ, которым такие допущения относительно времени обходят асинхронные невозможности, заключается в предоставлении процессам ''информации о сбоях'', обычно через механизмы ''тайм-аута'' (или ''пульса''), часто лежащие в основе реальных распределенных приложений. Однако, хотя определенную информацию о сбоях в распределенных системах действительно можно получить, точность такой информации может варьироваться от системы к системе в зависимости от ее базовой сети, нагрузки приложения и механизмов обнаружения сбоев. Важнейшей проблемой в этом контексте является определение характеристик такой информации максимально абстрактным и точным способом.


== Основные результаты ==
== Основные результаты ==
'''Абстракция детектора сбоев'''
'''Абстракция детектора сбоев'''


Чандра и Туэг [5] определяют абстракцию ''детектора сбоев'' как простой способ получения информации о сбоях, необходимой для обхода асинхронных невозможностей, в частности, невозможности консенсуса. Модель, рассмотренная в [5], представляет собой модель передачи сообщений, в которой могут возникать сбои процессов путем их ''аварийного завершения''. Такие процессы прекращают свою деятельность и не восстанавливаются. Процессы, не ведущие к аварийному завершению, считаются ''исправными''. Предполагается, что в каждом выполнении системы хотя бы один процесс должен быть ''исправным''.
Чандра и Туэг [5] определяют абстракцию ''детектора сбоев'' как простой способ получения информации о сбоях, необходимой для обхода асинхронных невозможностей, в особенности, невозможности консенсуса. Модель, рассмотренная в данной работе, представляет собой модель передачи сообщений, в которой процессы могут претерпевать сбои в виде их ''аварийного завершения''. Такие процессы прекращают свою деятельность и не восстанавливаются. Процессы, не ведущие к аварийному завершению, считаются ''исправными''. Предполагается, что в каждом выполнении системы хотя бы один процесс должен быть ''исправным''.




Строка 28: Строка 28:
Более конкретно, детектор сбоев – это функция D, которая ассоциирует с каждой ''моделью сбоев'' F множество ''историй детектора сбоев'' <math> \{ H_i \} = D(F)</math>. И модель отказа, и история детектора сбоев сами являются функциями.
Более конкретно, детектор сбоев – это функция D, которая ассоциирует с каждой ''моделью сбоев'' F множество ''историй детектора сбоев'' <math> \{ H_i \} = D(F)</math>. И модель отказа, и история детектора сбоев сами являются функциями.


• Модель сбоев F – это функция, связывающая с каждым временем t множество процессов F(t), переживших аварийное завершение к моменту t. Это понятие предполагает существование глобальных часов, не зависящих от процессов, а также конкретное понятие события ''аварийного завершения', связанное со временем. Множество моделей сбоев называется ''средой''.
• Модель сбоев F – это функция, связывающая с каждым временем t множество процессов F(t), переживших аварийное завершение к моменту t. Это понятие предполагает существование глобальных часов, не зависящих от процессов, а также конкретное понятие события ''аварийного завершения'', связанное со временем. Множество моделей сбоев называется ''средой''.


• История детектора сбоев H также является функцией, которая связывает с каждым процессом p и временем t некоторое значение v из диапазона значений детектора сбоев. (Диапазон детектора сбоев D обозначается <math>R_D</math>). Считается, что это значение v было выдано детектором сбоев D для процесса p в момент времени t.
• История детектора сбоев H также является функцией, которая связывает с каждым процессом p и временем t некоторое значение v из диапазона значений детектора сбоев. (Диапазон детектора сбоев D обозначается <math>R_D</math>). Считается, что это значение v было выдано детектором сбоев D для процесса p в момент времени t.
Строка 67: Строка 67:




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




Вторая теорема, приведенная ниже, связывает существование алгоритма консенсуса с предположением об устойчивости. Говоря более конкретно, данная теорема справедлива в ''мажоритарной'' среде, которая представляет собой множество моделей сбоев, где более половины процессов исправны.
Вторая теорема, приведенная ниже, связывает существование алгоритма консенсуса с предположением об устойчивости. Говоря более конкретно, данная теорема справедлива в ''мажоритарной'' среде, или ''среде большинства'', которая представляет собой множество моделей сбоев, где более половины процессов исправны.




Строка 84: Строка 84:
'''Редукции детекторов сбоев'''
'''Редукции детекторов сбоев'''


Детекторы сбоев можно сравнивать друг с другом. Считается, что детектор сбоев <math>D_2</math> слабее детектора сбоев <math>D_1</math>, если существует асинхронный алгоритм, называемый алгоритмом ''редукции'', который может эмулировать <math>D_2</math>, используя <math>D_1</math>. Здесь важно сделать три замечания.
Детекторы сбоев можно сравнивать друг с другом. Считается, что детектор сбоев <math>D_2</math> ''слабее'' детектора сбоев <math>D_1</math>, если существует асинхронный алгоритм, называемый алгоритмом ''редукции'', который может эмулировать <math>D_2</math>, используя <math>D_1</math>. Здесь важно сделать три замечания.


• То, что алгоритм редукции является асинхронным, означает, что он не использует никакого другого источника информации о сбоях, кроме <math>D_1</math>.
• То, что алгоритм редукции является асинхронным, означает, что он не использует никакого другого источника информации о сбоях, кроме <math>D_1</math>.
Строка 109: Строка 109:


== Применение ==
== Применение ==
'''Практические аспекты'''
'''Практические аспекты'''


Определение концепции детектора сбоев оказало положительное влияние на проектирование надежных распределенных архитектур.
Определение концепции детектора сбоев значительно повлияло на проектирование надежных распределенных архитектур.




Строка 122: Строка 123:
'''Теоретические аспекты'''
'''Теоретические аспекты'''


Второе применение концепции детекторов сбоев – это теория распределенной вычислимости. Детекторы сбоев позволяют классифицировать задачи. Задача A ''сложнее'' (или ''строго сложнее'') задачи B, если самый слабый детектор сбоев для решения B слабее (или строго слабее) самого слабого детектора сбоев для решения A. (Это понятие, конечно, параметризуется конкретгной средой).
Второе применение концепции детекторов сбоев – это теория распределенной вычислимости. Детекторы сбоев позволяют классифицировать задачи. Задача A ''сложнее'' (или ''строго сложнее'') задачи B, если самый слабый детектор сбоев для решения B слабее (или строго слабее) самого слабого детектора сбоев для решения A. (Это понятие, конечно, параметризуется конкретной средой).




Может показаться удивительным, что индуцированная редукция детекции сбоев между разными задачами не вполне соответствует классическому понятию редукции к ''«черному ящику»''. Например, хорошо известно, что не существует асинхронного распределенного алгоритма, который мог бы использовать абстракцию ''очереди'' (Queue) для реализации абстракции ''сравнения с обменом'' (Compare-Swap) в системе из n > 2 процессов, где n 1 процессов могут претерпеть сбой в виде аварийного завершения [15]. В этом смысле абстракция сравнения с обменом строго более мощная (в смысле «черного ящика»), чем абстракция очереди. Имеет место следующий результат:
Может показаться удивительным, что индуцированная редукция детекции сбоев между разными задачами не вполне соответствует классическому понятию редукции к ''«черному ящику»''. Например, хорошо известно, что не существует асинхронного распределенного алгоритма, который мог бы использовать абстракцию ''очереди'' (Queue) для реализации абстракции ''сравнения с обменом'' (Compare-Swap) в системе из n > 2 процессов, где n - 1 процессов могут претерпеть сбой в виде аварийного завершения [15]. В этом смысле абстракция сравнения с обменом строго более мощная (в смысле «черного ящика»), чем абстракция очереди. Имеет место следующий результат:




'''Теорема 4 (Дельпорт-Фоконье-Геррауи [9]). Самый слабый детектор сбоев для решения задачи очереди также является самым слабым для решения задачи сравнения с обменом в системе из n > 2 процессов, где n 1 процессов могут претерпеть сбой в виде аварийного завершения.'''
'''Теорема 4 (Дельпорт-Фоконье-Геррауи [9]). Самый слабый детектор сбоев для решения задачи очереди также является самым слабым для решения задачи сравнения с обменом в системе из n > 2 процессов, где n - 1 процессов могут претерпеть сбой в виде аварийного завершения.'''




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


== Открытые вопросы ==
== Открытые вопросы ==
Некоторые проблемы, лежащие в основе концепции детектора сбоев, все еще остаются нерешенными. Одна из таких проблем заключается в определении самого слабого детектора сбоев для решения фундаментальной задачи [[Согласование множеств|согласования множеств]] [6]: это задача на принятие решений, в которой процессы должны согласовать до k значений, а не одно значение, как в случае задачи консенсуса. Три независимые группы исследователей [3, 16, 22] доказали невозможность решения этой задачи в асинхронной системе с k сбоями, обобщив невозможность консенсуса [13]. Определение самого слабого детектора сбоев, позволяющего обойти эту невозможность, несомненно, поможет понять основы сводимости детекции сбоев.
Некоторые проблемы, лежащие в основе концепции детектора сбоев, все еще остаются нерешенными. Одна из таких проблем заключается в определении самого слабого детектора сбоев для решения фундаментальной задачи [[Согласование множеств|согласования множеств]] [6]: это задача на принятие решений, в которой процессы должны согласовать до k значений, а не одно значение, как в случае задачи консенсуса. Три независимые группы исследователей [3, 16, 22] доказали невозможность решения этой задачи в асинхронной системе с k сбоями, обобщив невозможность консенсуса [13]. Определение самого слабого детектора сбоев, позволяющего обойти эту невозможность, несомненно, помогло бы понять основы сводимости детекции сбоев.




4817

правок