4551
правка
Irina (обсуждение | вклад) (Новая страница: «== Ключевые слова и синонимы == Частичная синхронность; тайм-ауты; информация о сбоях; распределенные оракулы == Постановка задачи == Распределенная система состоит из набора процессов. Процессы обычно стремятся решить некоторую общую задачу, взаимодейс...») |
Irina (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
== Постановка задачи == | == Постановка задачи == | ||
Распределенная система состоит из набора процессов. Процессы обычно стремятся решить некоторую общую задачу, взаимодействуя посредством передачи сообщений или разделяемой памяти. Большинство интересных задач требуют, по крайней мере, на определенных этапах вычислений, некоторой формы согласования между процессами. Абстрактной формой такого согласования является консенсус, когда процессам необходимо договориться об одном значении из множества предложенных. Решение этой, казалось бы, элементарной задачи лежит в основе надежных распределенных вычислений и, в частности, распределенных баз данных, полного упорядочения сообщений и эмуляции многих типов общих объектов. | Распределенная система состоит из набора процессов. Процессы обычно стремятся решить некоторую общую задачу, взаимодействуя посредством передачи сообщений или разделяемой памяти. Большинство интересных задач требуют, по крайней мере, на определенных этапах вычислений, некоторой формы ''согласования'' между процессами. Абстрактной формой такого согласования является ''консенсус'', когда процессам необходимо договориться об одном значении из множества предложенных. Решение этой, казалось бы, элементарной задачи лежит в основе надежных распределенных вычислений и, в частности, распределенных баз данных, полного упорядочения сообщений и эмуляции многих типов общих объектов. | ||
Фундаментальный результат Фишера, Линч и Патерсона в теории распределенных вычислений [13] гласит, что консенсус не может быть получен детерминированным образом в ''асинхронной'' распределенной системе, подверженной сбоям процессов. Эта невозможность сохраняется для всех задач распределенных вычислений, которые сами полагаются на консенсус. | |||
Сбои и асинхронность являются основополагающими компонентами невозможности достижения консенсуса. Эта невозможность сохраняется даже в том случае, когда только один процесс выходит из строя, и делает это только путем отказа, то есть прекращения своей деятельности. Терпимость к отказам – это самое малое, чего можно ожидать от распределенной системы, поскольку сама цель применения распределенного подхода, как правило, заключается в том, чтобы избежать единых точек сбоев в централизованных архитектурах. Обычно реальные распределенные приложения демонстрируют более серьезные сбои, когда процессы могут произвольно отклоняться от назначенного им протокола. | ''Сбои'' и ''асинхронность'' являются основополагающими компонентами невозможности достижения консенсуса. Эта невозможность сохраняется даже в том случае, когда только ''один'' процесс выходит из строя, и делает это только путем ''отказа'', то есть прекращения своей деятельности. Терпимость к отказам – это самое малое, чего можно ожидать от распределенной системы, поскольку сама цель применения распределенного подхода, как правило, заключается в том, чтобы избежать единых точек сбоев в централизованных архитектурах. Обычно реальные распределенные приложения демонстрируют более серьезные сбои, когда процессы могут произвольно отклоняться от назначенного им протокола. | ||
Асинхронность означает отсутствие предположений о скорости процессов и задержках связи. Такое отсутствие предположений не позволяет любому процессу отличить аварийно завершенный процесс от корректного, и именно эта неспособность приводит к невозможности консенсуса. Однако на практике распределенные системы не являются полностью асинхронными: обычно можно сделать некоторые допущения относительно времени. В лучшем случае, если принять точные нижние и верхние границы на задержки связи и скорости процессов, то легко показать, что консенсус и связанные с ним невозможности можно обойти даже в условиях аварийного завершения любого количества процессов [20]. | ''Асинхронность'' означает отсутствие предположений о скорости процессов и задержках связи. Такое отсутствие предположений не позволяет любому процессу отличить аварийно завершенный процесс от корректного, и именно эта неспособность приводит к невозможности консенсуса. Однако на практике распределенные системы не являются полностью асинхронными: обычно можно сделать некоторые допущения относительно времени. В лучшем случае, если принять точные нижние и верхние границы на задержки связи и скорости процессов, то легко показать, что консенсус и связанные с ним невозможности можно обойти даже в условиях аварийного завершения любого количества процессов [20]. | ||
Интуитивно понятно, что способ, которым такие допущения относительно времени обходят асинхронные невозможности, заключается в предоставлении процессам информации о сбоях, обычно через механизмы тайм-аута (или пульса), часто лежащие в основе реальных распределенных приложений. Хотя определенную информацию о сбоях можно получить и в распределенных системах, точность такой информации может варьироваться от системы к системе в зависимости от базовой сети, нагрузки приложения и механизмов обнаружения сбоев. Важнейшей проблемой в этом контексте является определение характеристик такой информации максимально абстрактным и точным способом. | Интуитивно понятно, что способ, которым такие допущения относительно времени обходят асинхронные невозможности, заключается в предоставлении процессам ''информации о сбоях'', обычно через механизмы ''тайм-аута'' (или ''пульса''), часто лежащие в основе реальных распределенных приложений. Хотя определенную информацию о сбоях можно получить и в распределенных системах, точность такой информации может варьироваться от системы к системе в зависимости от базовой сети, нагрузки приложения и механизмов обнаружения сбоев. Важнейшей проблемой в этом контексте является определение характеристик такой информации максимально абстрактным и точным способом. | ||
== Основные результаты == | == Основные результаты == |
правка