Обновление 2018: Mysql High Availability использует paxos: https://mysqlhighavailability.com/the-king-is-dead-long-live-the-king-our-homegrown-paxos-based-consensus/
Пример из реального мира:
Cassandra использует Paxos , чтобы гарантировать, что клиентыподключенные к различным узлам кластера могут безопасно выполнять операции записи, добавляя «ЕСЛИ НЕ СУЩЕСТВУЕТ» операции записи.Кассандра не имеет главного узла, поэтому две конфликтующие операции могут выполняться одновременно на нескольких узлах.При использовании синтаксиса «если не существует» в алгоритме paxos используются операции порядка между машинами, чтобы обеспечить успешное выполнение только одного.Это может затем использоваться клиентами для хранения достоверных данных с истечением срока аренды .Пока большинство узлов Cassandra работает, оно будет работать.Таким образом, если вы определите коэффициент репликации вашего пространства ключей равным 3, тогда 1 узел может выйти из строя, из 5, а затем 2 может выйти из строя и т. Д.
Для нормальных записей Caassandra допускает принятие нескольких конфликтующих записей различными узлами, что можетбыть временно неспособным общаться.В этом случае не используйте Paxos, поэтому может потерять данные , когда две записи происходят одновременно для одного и того же ключа.В Cassandra встроены специальные структуры данных, которые не будут терять данные, предназначенные только для вставки.
Покер и Паксос:
Как отмечают другие ответы, покер основан на пошаговых правилах и имеет правила.Если вы разрешите один мастер и несколько реплик, то мастер решит следующее действие.Допустим, пользователь сначала нажимает кнопку «проверить», затем меняет свое мнение и нажимает «свернуть».Это противоречивые команды, только первая должна быть принята.Браузер не должен позволять им нажимать вторую кнопку, он отключает его, когда они нажимают первую кнопку.Поскольку деньги задействованы, главный сервер также должен применять правила и разрешать только одно действие на игрока за ход.Проблема возникает, когда мастер вылетает во время игры.Какая реплика может стать мастер-копией, и как обеспечить, чтобы только одна реплика стала мастер-копией?
Один из способов справиться с выбором нового мастера - это использовать внешний сильный последовательный сервис.Мы можем использовать Cassandra для создания аренды для главного узла.Реплики могут установить тайм-аут на главном сервере и попытаться взять аренду.Поскольку Кассандра использует Paxos, она отказоустойчива;вы все равно можете прочитать или обновить аренду, даже если узлы Cassandra аварийно завершают работу.
В приведенном выше примере мастер покера и его реплики в конечном итоге становятся согласованными.Мастер может отправлять тактовые импульсы, чтобы реплики знали, что они все еще подключены к мастеру.Это быстро, поскольку сообщения текут в одном направлении.Когда мастер падает, могут быть условия гонки в репликах, пытающихся стать мастером.Использование Paxos в этот момент дает вам твердое представление о том, какой узел теперь является главным.Это требует дополнительных сообщений между узлами, чтобы обеспечить согласованный результат одного мастера.