Распределенные системы: протоколы когерентности

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

Что такое протокол когерентности

Протокол Согласованность описывает фактическую реализацию конкретной модели последовательности. Консистенция модель , как интерфейс и протокол непротиворечивость как конкретная реализация интерфейса. Модель согласованности согласованности ограничения обеспечивает репликацию данных распределенной систему, в целях достижения согласованности модели ограничений, в связи с необходимостью обеспечения протокола когерентности.

Разрешать ли протокол когерентности данных в соответствии с различиями можно разделить на два типа:

  • Одно мастер - соглашение (данные не позволяют различия) : Вся распределенная система как единая система, все операции записи от обработки мастер - узла и синхронизации с другими копиями. Например , в режиме ожидания синхронизации, 2PC, Паксос принадлежит таким соглашениям.
  • Multi-Master соглашение (разрешить расхождение данных) : все операции записи могут быть инициированы различными узлами, и синхронизированы с другими копиями. Например , Сплетни, военнопленный.

Его можно найти, их основная разница заключается в том , чтобы позволить нескольким узлам , чтобы инициировать операции записи, позволяя только один мастер - согласие главного узла инициирует операцию записи, так что он может обеспечить упорядоченную работу, последовательность сильнее. Мульти-мастер протокол позволяет несколько узлов , чтобы инициировать операции записи, так что он не может обеспечить упорядоченное функционирование может достичь только слабой консистенции.

Стоит отметить, что существует много классификации протокола когерентности, в основном, чтобы увидеть, из которого угла категоризировать, классифицировать еще один общий путь разделяются в соответствии с синхронной / асинхронной репликацией, здесь не обсуждается. Следующий сингл и мульти-мастер протокол генерального соглашения сделать некоторый общий анализ, ограниченным пространство, а не вдаваться в деталь соглашения.

Мастер Единое соглашение

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

Копирование в режиме ожидания

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

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

Двухфазное принятие

Двухфазное принятие (2PC) является реляционной базой данных используются для поддержания согласованности распределенного протокола транзакций, который также принадлежит к синхронной репликации протоколу, только возвращается клиенту после того, что является результат синхронизации данных завершен. 2PC убедитесь, что все узлы могут быть найдены только возвращается клиенту после того, как те же данные для достижения последовательной согласованности.

Данные 2PC копирования делится на два этапа:

  1. Голосуя фаза : главный узел посылает данные на все копии, каждая копия должна отвечать или откат, если подав копию голосования, то это поставит промежуточную область данных, ожидая окончательного представления.
  2. Фиксация фазы : главный узел получает ответ другие копии, если копии , как полагают, будет представлен, то он посылает подтверждение представить их предоставить копии всех обновленных данных будут перемещены из зоны постоянного плацдарма. До тех пор , пока существует копия возвращения на весь Откат.

2PC можно найти типичную систему CA для того, чтобы обеспечить согласованность и доступность сети разделов происходит один или 2PC узел не операция записи отвергается, в систему с только для чтения. Поскольку ситуация привела к блокированию узлов в кластере 2PC склонных, так что сцена не часто используется в репликации данных, как правило, используются для распределенных транзакций (Примечания: Фактический процесс приложения будет много оптимизации).

Протокол когерентности толерантности Partition

Протокол Согласованность толерантности раздел, как и все одного генерального соглашения, это только один главный узел отвечает за запись (обеспечивать последовательную согласованность), но отличается от 2PC является то, что она нужна только для того, чтобы большинство узлов (обычно более половины) согласовать результат может быть возвращен клиенту, который может улучшить производительность, но и может выдержать сетевой раздел (раздел несколько узлов не вызывает вся система не может работать). Толерантные Перегородки алгоритм консенсуса для обеспечения целостности данных большинство узлов перед возвращением клиента, также достигается последовательной согласованности.

Вот простой пример, чтобы проиллюстрировать основную идею такого алгоритма. Предположим теперь, что есть распределенная файловая система, его файлы копируются на трех серверах, условимся: Чтобы обновить файл, клиент должен иметь доступ, по крайней мере, двух серверов (большинство), обновляется после того как они согласились выполнить и каждый файл будет иметь номер версии для идентификации, чтобы прочитать файл, клиент должен также получить доступ, по крайней мере два сервера получить номер версии файла, если все же номером версии, то версия должна быть последняя версия потому что, если предыдущие требования к эксплуатации обновления должны иметь согласие большинства сервера для обновления файлов.

Таковы основные идеи , которые мы знаем , Paxos, ZAB, Плот когерентных протоколов , такие как толерантность раздела: консистенция не обязательно гарантирует , что все узлы соответствуют, до тех пор , как большинство узлов обновляются для всей распределенной системы данных также последовательность. Выше лишь краткое объяснение, реальный алгоритм является более сложным, там не будет.

Толерантности разделов протокола когерентности Paxos типичной системы CP, чтобы обеспечить согласованность и толерантность разделов, в случае разделения сети, большинство разрешения записи узла, последовательность по консистенции всей системы большинство узлов , будет также сделать несколько узлов не остановить службу (не умеет читать и писать), чтобы отказаться от доступности всей системы, что доступ клиента к нескольким узлам.

Следует отметить , что, согласно теории CAP, предположим , что у нас есть три узла A, B, C, C , когда сеть разделена, пришел запрос запрос, на этот раз C и потому , что они не могут обмениваться данными с другими узлами, он не может ответить на запрос C , а не наличие. Но в реализации проекта, эта проблема может быть обойдена , когда Client Access C не может получить ответ, он имел доступ к A, B, или на самом деле часть доступности для всей системы, а не говорить , что КП система должна иметь потерянную доступность. Ссылка подробный анализ распределенных систем: прошлое и настоящее теория CAP

Multi-Master соглашение

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

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

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

Multi-мастер протокол позволяет нескольким узлам запускать одновременную запись, безусловно , будет случай одновременной записи данных приводят к конфликту данных, поэтому этот тип соглашения необходимо будет решать проблему одновременных операций записи. Одно генеральное соглашение написано управлением главного узла , чтобы обеспечить ситуацию не появляется одновременно пишет, так как все записи в конечном итоге будут отсортированы по главному узлу, в некотором смысле, использовать систему для одного генерального соглашения фактически написанной строки OK, поэтому его производительность является узким местом. Многоузловой мульти-мастер протокол позволяет одновременную запись, положить из производительности записи, но это на самом деле данные слияний операции будет отложена, А поступления протокола с одним мастером при записи данных в сочетании , таким образом считывать данные Если время , когда возникают конфликты данных, это необходимость консолидации данных, для обеспечения глобальной согласованности.

Мы упоминали Bitcoin с использованием протокола Сплетни для репликации данных, то проблема возникла, если не сказать, что мульти-мастер производительность протокола будет еще выше, почему Bitcoin производительности так плохо? На самом деле здесь отдельно, потому что Bitcoin является децентрализованным, но его оплата функция должна обеспечить глобальную согласованность данных, поэтому он принял очень умный алгоритм консенсуса POW: Все узлы сделать математическую задачу , то первое, чтобы вычислить ответ о том, кто имеет право писать цепочку транзакций, а затем использовать протокол сплетни и распространить его ответы на транзакцию, другие узлы, чтобы убедиться, что это правильные данные ответа будут сохранены.

Это может быть вопрос здесь: POW как производительность протокола мульти-мастер Почему так низко? Любое соглашение имеет свои применимые сценарии. В этом случае битовых кредитов, для которых согласованность данных является высоким спросом, в теории, один мастер - протокол является лучшим выбором. Но Bitcoin в качестве децентрализованной цифровой валюты не собирается использовать один генеральное соглашение, в противном случае они становятся центром системы. Так Bitcoin может выбрать только несколько генерального соглашение, будет вся цепочка Bitcoin управляется POW соглашения приближения сериализованного , с тем, чтобы уменьшить вероятность двойных появляются цветы (одновременно запись , когда Bitcoin потребляются в несколько раз), рыба и не может иметь и другое, так как более сильной консистенции, вы можете принести в жертву только производительность в обмен.

Поскольку мульти-мастер протокол позволяет различие данных, то мы должны иметь стратегию для разрешения конфликта, чтобы обеспечить окончательную целостность данных. Если вы хотите строго различать между словами, Bitcoin на самом деле применяется два протокола когерентности:

  • POW : Решение записать правильный узел, функционирует аналогично одной мастер соглашения секвенсор. Отметим также Военнопленный мульти-мастер протокол, несмотря на низкую вероятность, но могут быть и несколько узлов одновременно вычислить ответ, вместе с блоком (одновременно записи) ситуация, то мы назвали Биткойн появились бифуркацию, что было противоречивые данные ,
  • Сплетни : блок - для транзакции будет синхронизирован для всех узлов по всему миру. Так как ситуация ПР будет осложнена письменной формой, когда узел принимает несколько узлов одновременно запросов на запись, необходимо решить проблему столкновения данных. Bitcoin разрешение конфликты данных варианта является то , что при появлении раздвоения, выберите самый длинный кусок цепи в качестве основной цепи, на других раздвоенную справедливой цепи откатывается, ожидая повторную упаковку блока.

резюме

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

Стоит отметить, что один мастер упоминается в тексте, мульти-мастер протокол только мой личный путь к классификации распределенного протокола когерентности, чтобы помочь нам лучше понять. Читатели могут посмотреть на ссылки, посмотрите на различных авторов распределенных протоколов, как классифицировать его, так что будет более глубокое понимание распределенного протокола когерентности.

справочный материал

рекомендация

отyq.aliyun.com/articles/703728