Введение
Концепция в информатике Основная проблема распределенных вычислений и многоагентных систем заключается в достижении общей надежности системы в присутствии ряда неисправных процессов. Это часто требует координации процессов для достижения консенсуса или согласования некоторого значения данных, которое необходимо во время вычислений. Примеры применения консенсуса включают согласование того, какие транзакции должны быть переданы в базу данных в каком порядке, репликацию станций и атомные трансляции. Приложения в реальном мире, часто требующие консенсуса, включают облачные вычисления, синхронизацию часов, PageRank, формирование мнений, интеллектуальные энергосети, оценку состояния, управление БПЛА (и нескольких роботов / агентов в целом), балансировку нагрузки, блокчейн и другие.
A fundamental problem in distributed computing and multi agent systems is to achieve overall system reliability in the presence of a number of faulty processes. This often requires coordinating processes to reach consensus, or agree on some data value that is needed during computation. Example applications of consensus include agreeing on what transactions to commit to a database in which order, state machine replication, and atomic broadcasts. Real world applications often requiring consensus include cloud computing, clock synchronization, PageRank, opinion formation, smart power grids, state estimation, control of UAVs (and multiple robots/agents in general), load balancing, blockchain, and others.
Описание проблемы
Проблема консенсуса требует согласия между рядом процессов (или агентов) по одному значению данных. Некоторые из процессов (агентов) могут потерпеть неудачу или быть ненадежными в других отношениях, поэтому протоколы консенсуса должны быть устойчивы к ошибкам или устойчивы к импульсу. Процессы должны выдвигать свои ценности-кандидаты, общаться друг с другом и согласовывать единую ценность консенсуса. Проблема консенсуса является основополагающей проблемой в управлении многоагентными системами. Один из подходов к формированию консенсуса заключается в том, чтобы все процессы (агенты) согласовали большинство. В этом контексте большинство требует, по крайней мере, более половины имеющихся голосов (где каждый процесс дается один голос). Однако один или несколько неисправных процессов могут исказить полученный результат таким образом, что консенсус может быть не достигнут или может быть достигнут неправильно. Протоколы, которые решают проблемы консенсуса, предназначены для решения ограниченного числа неисправных процессов. Эти протоколы должны удовлетворять нескольким требованиям, чтобы быть полезными. Например, тривиальный протокол может иметь все процессы вывода бинарного значения 1. Это не полезно, поэтому требование изменяется таким образом, что производство должно зависеть от входных ресурсов. То есть, выходное значение консенсусного протокола должно быть входным значением какого-либо процесса. Еще одно требование заключается в том, что процесс может принять решение о выходном значении только один раз, и это решение является необратимым. Метод является правильным в исполнении, если он не испытывает сбоев. Консенсусный протокол, допускающий сбои в остановке, должен удовлетворять следующим свойствам[1]. В конце концов, каждый правильный процесс решает некоторую ценность. Целостность Если все правильные процессы предлагают одно и то же значение, то любой правильный процесс должен решить Согласие Каждый правильный процесс должен согласиться на одно и то же значение. В зависимости от применения могут быть целесообразны изменения в определении целостности. Например, более слабый тип целостности будет для значения решения равен значению, которое предложен некоторым правильным процессом, но не обязательно всем из них. Две различные модели аутентификации часто называют моделями устной и письменной коммуникации. В модели устной коммуникации непосредственный источник информации известен, тогда как в более сильных, письменных моделях коммуникации, каждый шаг на пути получателя узнает не только непосредственный источник сообщения, но и историю сообщения.
Вход и выход консенсуса
В наиболее традиционных протоколах консенсуса с одним значением, таких как Paxos, сотрудничающие узлы соглашаются на одно значение, такое как целое число, которое может быть переменного размера, чтобы кодировать полезные метаданные, такие как транзакция, связанная с базой данных. Специальный случай проблемы консенсуса с одним значением, называемый бинарным консенсусом, ограничивает входную, а следовательно, и выходной область, одной бинарной цифрой {0,1}. Хотя сами по себе они не очень полезны, бинарные протоколы консенсуса часто полезны в качестве строительных блоков в более общих протоколах консенсуса, особенно для асинхронного консенсуса. В многозначных консенсусных протоколах, таких как Multi Paxos и Raft, цель состоит в том, чтобы договориться не только о едином значении, но и о ряде значений с течением времени, формируя постепенно растущую историю. Хотя многозначный консенсус может быть достигнут наивно, запуская несколько итераций одного протокола консенсуса с определенной ценностью последовательно, многие оптимизации и другие соображения, такие как поддержка реконфигурации, могут сделать многозначные консенсусные протоколы более эффективными на практике.
Асинхронные и синхронные системы
Проблема консенсуса может рассматриваться в случае асинхронных или синхронных систем. В то время как реальные коммуникации часто по своей сути асинхронны, более практично и часто проще моделировать синхронные системы, учитывая, что асинхронные системы, естественно, включают в себя больше проблем, чем синхронные. В синхронных системах предполагается, что все коммуникации проходят по кругу. В одном раунде процесс может отправлять все требуемые ему сообщения, получая все сообщения от других процессов. Таким образом, ни одно сообщение из одного раунда не может влиять на любые сообщения, отправленные в течение того же раунда.
Результат невозможности FLP для асинхронного детерминированного консенсуса
В полностью асинхронной системе передачи распределенных сообщений, в которой, по крайней мере, один процесс может иметь сбой, было доказано в знаменитом результате невозможности FLP 1985 года Фишером, Линчем и Паттерсоном, что детерминированный алгоритм достижения консенсуса невозможен. Этот результат невозможности обусловлен сценариями наихудшего сценария планирования, которые вряд ли произойдут на практике, за исключением конфликтных ситуаций, таких как интеллектуальный атакующий отказ в обслуживании в сети. В большинстве нормальных ситуаций планирование процессов имеет степень естественной случайности.
Разрешенный консенсус против консенсуса без разрешения
Консенсусные алгоритмы традиционно предполагают, что набор участвующих узлов фиксирован и дан в самом начале: то есть, что какой-то предыдущий (ручной или автоматический) процесс конфигурации разрешил определенную известную группу участников, которые могут аутентифицировать друг друга как членов группы. В отсутствие такой хорошо определенной, закрытой группы с аутентифицированными членами, атака Сибилла против открытой консенсусной группы может победить даже византийский алгоритм консенсуса, просто создав достаточно виртуальных участников, чтобы преодолеть порог терпимости к ошибкам. Протокол консенсуса без разрешения, напротив, позволяет любому в сети динамически присоединяться и участвовать без предварительного разрешения, но вместо этого накладывает другую форму искусственной стоимости или барьера для входа, чтобы смягчить угрозу атаки Sybil. Биткойн ввел первый протокол консенсуса без разрешения с использованием доказательства работы и функции корректировки сложности, в которой участники конкурируют за решение криптографических хэш-головоломок и вероятностно зарабатывают право на создание блоков и получают связанные с ними вознаграждения пропорционально их инвестированным вычислительным усилиям. Частично мотивированные высокой энергетической стоимостью этого подхода, последующие протоколы консенсуса без разрешения предложили или приняли другие альтернативные правила участия для защиты от атак Sybil, такие как доказательство доли, доказательство пространства и доказательство полномочий.
Проблемы эквивалентности соглашений
Три проблемы соглашения, представляющие интерес, следующие.
Результаты по платежеспособности по некоторым проблемам соглашения
Существует t устойчивый анонимный синхронный протокол, который решает проблему византийских генералов, если и случай слабых византийских генералов Доказательство построено, сначала показав невозможность для случая с тремя узлами и используя этот результат, чтобы спорить о разделах процессоров. В модели письменных сообщений есть протоколы, которые могут терпеть Однако, FLP не утверждает, что консенсус никогда не может быть достигнут: просто, что в соответствии с предположениями модели, ни один алгоритм не может всегда достичь консенсуса в ограниченное время. На практике это маловероятно.
Некоторые протоколы консенсуса
Алгоритм консенсуса Paxos Лесли Лэмпорт и его варианты, такие как Raft, широко используются в широко распространенных распределенных и облачных вычислительных системах. Эти алгоритмы, как правило, синхронны, зависят от избранного лидера, чтобы добиться прогресса, и терпят только сбои, а не византийские неудачи. Примером протокола двоичного консенсуса в полиномиальном времени, который терпит византийские сбои, является алгоритм Phase King Гарея и Бермана. Алгоритм решает консенсус в модели синхронного передачи сообщений с n процессами и до f неудач при условии, что n > 4f. В алгоритме фазового короля существуют фазы f + 1, с 2 раундами на фазу. Каждый процесс отслеживает свой предпочтительный выход (первоначально равен собственному входному значению процесса). В первом раунде каждой фазы каждый процесс передает свои предпочтительные значения всем другим процессам. Затем он получает значения от всех процессов и определяет, какое значение является большинством и его количество. Во втором раунде фазы процесс, идентификатор которого соответствует текущему номеру фазы, обозначается королем фазы. Король передает значение большинства, которое он наблюдал в первом раунде, и служит решающим фактором. Каждый процесс затем обновляет свое предпочтительное значение следующим образом. Если число большинства, наблюдаемое в первом раунде, больше n/2 + f, процесс меняет свое предпочтение на это значение большинства; в противном случае он использует значение короля фазы. В конце фазы f + 1 процессы выводят свои предпочтительные значения. Google внедрил распределенную библиотеку служб блокировки под названием Chubby. Chubby сохраняет информацию о замке в небольших файлах, которые хранятся в реплицированной базе данных для обеспечения высокой доступности в случае сбоев. База данных реализована на вершине лог-слоя, терпимого к ошибкам, который основан на алгоритме консенсуса Paxos. В этой схеме клиенты Chubby общаются с мастером Paxos для доступа к реплицированному журналу; то есть, читают/записывают в файлы. Многие онлайн-игры стратегии в режиме реального времени с одноранговым взаимодействием используют модифицированный протокол lockstep в качестве консенсусного протокола для управления игровым состоянием между игроками в игре. Каждое игровое действие приводит к передаче дельты состояния игры всем другим игрокам в игре вместе с хэшем общего состояния игры. Каждый игрок проверяет изменение, применяя дельту к своему собственному состоянию игры и сравнивая хэши состояния игры. Если хэши не согласны, то голосование проводится, и те игроки, чье игровое состояние находится в меньшинстве, отключаются и удаляются из игры (известный как десинхронность). Другой хорошо известный подход называется алгоритмы типа MSR, которые широко используются в компьютерной науке для теории управления. Источник Синхронный порог аутентификации Округи Примечания Pease Shostak Lamport Асинхронный Оральный (ожидаемый) Ожидаемые раунды, когда Dolev et al. Синхронная устная общая коммуникация Долев Сильная синхронная устная (ожидается) Кац Ку Синхронная письменная (ожидается) Требует инфраструктуры общедоступного ключа (PKI) PBFT Асинхронная (безопасность) Синхронная (жизненность) устная Медовый Беджер Асинхронная устная (ожидается) по tx коммуникация требует шифрования с общедоступным ключом Abraham et al. Синхронное письменное византийское соглашение сделано тривиальным Синхронные подписи (ожидается) Требует цифровых подписей
Номер консенсуса
Для решения проблемы консенсуса в системе общей памяти должны быть введены одновременные объекты. Одновременный объект, или общий объект, представляет собой структуру данных, которая помогает одновременным процессам общаться, чтобы достичь соглашения. Традиционные реализации, использующие критические секции, рискуют потерпеть крах, если какой-то процесс умирает внутри критической секции или спит на неодобрительно длительное время. Исследователи определили свободу ожидания как гарантию того, что алгоритм завершит в конечном числе шагов. Консенсусный номер одновременного объекта определяется как максимальное количество процессов в системе, которые могут достичь консенсуса данным объектом в реализации без ожидания. Объекты с консенсусом числа могут реализовать любой объект с консенсусом числа или ниже, но не может реализовать любые объекты с более высоким консенсусом числа. Консенсусные числа образуют так называемую иерархию объектов синхронизации Герлихи. Объекты консенсусного числа атомные регистры чтения/записи, тест и набор мутекс, обмен, извлечение и добавление, ожидание свободной очереди или стека n присвоение регистра сравнение и обмен, загрузка ссылки/хранилища условно, перемещение памяти в память и обмен, очередь с операцией peek, fetch&cons, липкий байт Согласно иерархии, регистры чтения/записи не могут решить консенсус даже в системе 2 процесса. Структуры данных, такие как стеки и очереди, могут решать только консенсус между двумя процессами. Однако некоторые одновременные объекты являются универсальными (отмечены в таблице с), что означает, что они могут разрешать консенсус среди любого количества процессов и имитировать любые другие объекты через последовательность операций.
According to the hierarchy, read/write registers cannot solve consensus even in a 2 process system. Data structures like stacks and queues can only solve consensus between two processes. However, some concurrent objects are universal (notated in the table with ), which means they can solve consensus among any number of processes and they can simulate any other objects through an operation sequence.