Является ли Paxos строго последовательным? - PullRequest
0 голосов
/ 08 июня 2019

Рассмотрим распределенную систему с 3 узлами - n1, n2, n3.Есть общие данные, х, среди узлов.Паксос работает на узлах.В начале x равно 4.

Клиент отправляет запрос на обновление n1, чтобы изменить значение x на 5. n1 и n2 достигают консенсуса по новому значению, запуская Paxos, но возникают некоторые сбои соединениядля n3, поэтому n3 не имеет новейшего значения x.

Мы знаем, что Paxos обеспечивают строгую согласованность.С другой стороны, если клиент отправляет запрос на чтение на n1, а также другой запрос на чтение на n3, возвращаемые значения не совпадают (одно из них равно 5, а другое - 4).Поэтому после запуска Paxos система не является строго согласованной.

Мой вопрос: как мы можем разрешить это противоречие?Я что-то не так понял?

1 Ответ

3 голосов
/ 09 июня 2019

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

...