Паксос сделал простой выбор стоимости предложения - PullRequest
0 голосов
/ 20 апреля 2020

В документе говорится:

1. Заявитель выбирает новый номер предложения n и отправляет запрос каждому члену некоторого набора акцепторов, прося его ответить:

(a) Обещание никогда больше не принимать предложение с номером меньше n и

(b) Предложение с наибольшим номером меньше n, которое оно приняло, если оно есть.

Я назову такой запрос подготовительным запросом с номером n.

2. Если заявитель получает запрошенные ответы от большинства акцепторов, он может выдать> предложение с номером n и значением v, где v - это значение предложения с наибольшим номером среди ответов или любое значение, выбранное заявителем, если респонденты не сообщили о предложениях.

У меня вопрос, если заявитель выбирает v среди ответов, тогда новые раунды всегда будут использовать ранее сохраненное значение, как мы можем обновить значение?

скажем, у нас есть:

v=1

среди все узлы. затем клиент хочет обновить его с

v=2

Каждый этап подготовки будет собирать ответы с v=1, а затем предлагать с v=1, поэтому v=2 никогда не будет использоваться !

Ответ многих реализаций с v=2 на этом узле, получающем запрос клиента, так что предлагается v=2. Но такая реализация нарушает правило

(b) Предложение с наибольшим числом меньше n, которое оно приняло, если оно есть.

Потому что v=2 никогда не был принят! Я не могу ответить на предложение.

1 Ответ

1 голос
/ 22 апреля 2020

Я думаю, что вы ищете способ обновить V после того, как он был успешно установлен в 1. Вы правы, что, как только большинство пиров согласится, что v = 1, что экземпляр Paxos заблокирован с v = 1 и это никогда не изменится. Вам нужен еще один экземпляр paxos для обновления v = 2. Обычно это называется «Multi-Paxos», где существует линейная цепочка экземпляров Paxos, которые используются для обновления общего состояния между узлами. Каждый случай является сдержанным и влечет за собой новый раунд Паксос, для которого не было сделано никаких предложений В приведенном выше примере v = 1 будет выбран для экземпляра A, тогда как v = 2 может быть выбран для экземпляра B.

...