2016-01-07 3 views
1

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

Существует два предложенных P1 P2, три акцептора A1 A2 A3. Р1 предложит значение и, Р2 предложит значение ст.

1. Р1 (отправить идентификационный номер) завершить стадию подготовки, получают все обещание от A1 A2 A3, то в A1 A2 A3 всех п магазина, как идентификатор.

2. Р2 (отправить идентификатор п + 1), то A1 A2 A3 магазин п + 1, как идентификатор

3. P2 вниз.

4. P1 отправьте запрос на прием с (n, u) на A1 A2 A3, конечно, A1 A2 A3 отклонит запрос, к сожалению, в то же время P2 уже выключен.

Такой примерный случайный случай, что бы мы сделали дальше? еще один новый раунд Paxos?

+0

Вы можете предоставить здесь немного контекста? зачем вам P2 быть онлайн, если кворум (A1, A2, A3) уже принял значение, предложенное P2? – saljuama

+0

A1, A2, A3 просто ответьте OK на P2 на этапе подготовки и сохраните идентификатор в локальном хранилище. Перед тем, как P2 отправьте запрос accept со значением v, P2 не работает. Это означает, что значение не определено (A1, A2, A3), так как v не прибывает. Но P1 (id is n) посылает любой запрос-прием, который будет отбрасываться A1, A2, A3, потому что его идентификатор меньше, чем идентификатор P2 (n + 1). –

ответ

0

Я изучил все свои заметки и материал из класса, когда изучал это несколько лет назад. И для правильной реализации Paxos она должна быть отказоустойчивой и никогда не заканчиваться, как на стороне, так и на инициаторах и акцепторах. Поскольку вопрос касается отказоустойчивости для авторов предложения, я сосредоточусь на них:

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

В этом случае у вас могут быть 3 экземпляра P2: P2-1, P2-2, P2-3, причем P2-1 является лидером по умолчанию, если P2-1 терпит неудачу, тогда P2-2 может увеличиться.

Имейте в виду, что акцепторы могут запросить подтверждение P2 и P2-2, все еще находясь в середине подъема в качестве нового лидера, поэтому, вероятно, неплохо установить повтор после таймаута, чтобы дать P2-2 достаточно времени, чтобы быть готовым.

+0

Это способ аннулировать проблему. Чтобы сохранить жизнеспособность системы, реплика и тайм-аут всегда являются способом. –

0

«Paxos Made Simple» Лампорт

"Это легко построить сценарий, в котором два предлагающие каждый держать выпуск последовательность предложений с увеличением числа, ни один из которых никогда не выбраны. Предлагающий р завершает фазу 1 для номера предложения n1. Другой вариант q затем завершает фазу 1 для номера предложения n2> n1. Предполагаемая фаза 2 заявки участника заявки на предложение с номером n1 игнорируется, поскольку акцепторы все обещали не принимать никаких новых предложений с номером меньше, чем n2. Итак, создатель p затем начинает и завершает этап 1 для нового номера предложения n3> n2, в результате чего вторая фаза 2 принимает запросы автора предложения q и т. д. «

Из описания Шаг 4: (A1, A2, A3) ответил бы на запрос приема от P1, отправил идентификатор + 1 в P1, после чего P1 будет уведомлен и увеличит id -> id + 2. P1 отправьте (A1, A2, A3) запрос на повторную обработку с id + 2. Чтобы избежать прямой блокировки между P1 и P2, лучший способ должен быть только одним предложением (ссылка на главу 2.4 «Paxos Made Simple»).

+0

- это хороший момент, хотя эта проблема не была выражена по первому вопросу, я бы добавил это к первоначальному вопросу, чтобы обогатить его больше для тех, кто мог бы прочитать его в будущем. – saljuama

+0

, конечно, протокол парламента paxos имеет лидера согласно https://simbo1905.wordpress.com/2016/01/02/paxos-uses-leaders-multi-paxos-is-paxos/, но вам нужна логика, чтобы убедиться, что когда это он сменяется только одним новым предложением. это может быть сделано с экспоненциальными отступами, так что каждый узел, который не может выиграть раунд, ждет больше времени, прежде чем повторить попытку стать лидером, как указано на https://simbo1905.wordpress.com/2014/10/28/transaction- log-replication-with-paxos/ – simbo1905

1

Сделайте новый раунд paxos, это именно то, для чего оно предназначено.

Авторы предложения отправляют свое значение в сообщении «Подготовить», поэтому акцепторы отправят значение P2 в P1 в следующем раунде paxos.

+0

эй, Micheal, как вы сказали, «сделайте новый раунд Paxos», если не получите последовательный результат, это означает, что раунд Paxos закончен? –

+0

@TongxuanLiu Автор предложения может выйти, когда он получает Accept-Ack от простого большинства акцепторов. До этого он не знает, выполнено ли значение. –

Смежные вопросы