Паксос: Как отбираются предлагающие, принимающие и учащиеся? - PullRequest
0 голосов
/ 31 мая 2018

Я хочу избрать лидера из ряда одинаковых процессов.Во всех объяснениях Паксос говорится, что некоторые процессы - это Предложения, некоторые - Избиратели, а некоторые - Ацепторы.Нужно ли назначать эти роли моим процессам при их запуске?

Что если все мои авторы умрут?Могу ли я переключить существующих учеников / избирателей на кандидатов?

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

Это правильный подход

1 Ответ

0 голосов
/ 31 мая 2018

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


Во всех объяснениях Paxos говорится, что некоторые процессы - это Предложения, некоторые - Избиратели, а некоторые - Приемники.Нужно ли назначать эти роли моим процессам при их запуске?

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


Что если все мои авторы умрут?

Многие системы Paxos (например, используемые в качестве хранилищ kv) работают с последовательностью экземпляров paxos (например, с журналом транзакций).Невозможно предположить, что один и тот же набор процессов будет существовать вечно, поэтому должны существовать механизмы для изменения набора узлов в кворуме.

В некоторых системах, которые я поддерживаю, есть две части предложенного/ выбранное значение: полезная нагрузка от клиента и членство в paxos.Раунд паксосов выполняется кворумом, выбранным в значении до .Выполнение этого таким образом ограничивает способность вашей системы передавать выбранные значения;вместо этого вам придется пакетировать их, если вы хотите выбрать несколько значений одновременно - или . Вы можете посмотреть, как Raft выбирает членство.

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

...