2013-04-11 5 views
1

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

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

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

ответ

3

Короткий ответ: не делайте этого.

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

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

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

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

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

В конце концов, повторное использование номера бюллетеня не купит вам ничего, но это усложняет ситуацию.

+0

Что делать, если два собеседника предлагают одно и то же предложение одновременно? Как Paxos справляется с этим, узнает ли он, что они из двух разных авторов или Paxos считают, что одно и то же сообщение предложения дублируется сетью? – user

+0

Нельзя, чтобы два автора предложили использовать тот же номер предложения. На практике это не очень сложно. Например: возьмите всех создателей, сортируйте сортировку по имени хоста, и каждый хост использует только 'indexOf (имя хоста) + k * numHosts' –

+0

Да, я знаю, что два предложения не допускаются. Но как алгоритм Paxos обрабатывает это? Распознает ли он два предложения как дублирующиеся сообщения, передаваемые по сети? – user

0

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

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