Короткий ответ: не делайте этого.
При обнаружении Паксос Лампорт сделал предположение, что сообщения могут быть удалены или дублированы. Поэтому в любой момент вы можете отправить одно и то же сообщение, и алгоритм справится с этим. Поэтому технически вы можете отправить повторное использование того же номера бюллетеня, пока полезная нагрузка точно такая же. Вот несколько причин, почему вы не должны.
Во-первых, алгоритм говорит, что использует более высокий номер избирательного бюллетеня. Вы должны действительно знать, что вы делаете, если собираетесь изменить распределенный алгоритм следующим образом. Рассуждение о распределенных системах может быть очень и очень сложным. И даже если вы действительно знаете, что делаете, у вас есть способ узнать, будут ли сопровождающие, которые приходят после вас знать, что делают , они делают.
Во-вторых, базовый алгоритм фактически не имеет ничего об отказе/nacks; это просто оптимизация. (Помните, что их можно было отбросить в любое время.) Таким образом, не Получение подготовки должно рассматриваться как отказ.
В-третьих, там может быть другой разработчик. Если вы решите повторно использовать один и тот же номер бюллетеня, вы по сути отказываетесь и позволяете другому побеждать. Но если другой разработчик использует одно и то же алгоритмическое украшение, он также отказывается. Вы эффективно выбираете лидера заранее.
В-четвертых, отсутствие кворума ответов означает, что ваша система находится в неисправности: сетевой раздел; половина большинства хостов не реагирует достаточно быстро. Это важные вещи, о которых стоит подумать. Как послать то же самое сообщение поможет проблема?
В конце концов, повторное использование номера бюллетеня не купит вам ничего, но это усложняет ситуацию.
Что делать, если два собеседника предлагают одно и то же предложение одновременно? Как Paxos справляется с этим, узнает ли он, что они из двух разных авторов или Paxos считают, что одно и то же сообщение предложения дублируется сетью? – user
Нельзя, чтобы два автора предложили использовать тот же номер предложения. На практике это не очень сложно. Например: возьмите всех создателей, сортируйте сортировку по имени хоста, и каждый хост использует только 'indexOf (имя хоста) + k * numHosts' –
Да, я знаю, что два предложения не допускаются. Но как алгоритм Paxos обрабатывает это? Распознает ли он два предложения как дублирующиеся сообщения, передаваемые по сети? – user