Я поддерживаю несколько производственных систем Paxos.Я подробно опишу то, что я видел в моей и других практических / производственных системах.
Во всех объяснениях Paxos говорится, что некоторые процессы - это Предложения, некоторые - Избиратели, а некоторые - Приемники.Нужно ли назначать эти роли моим процессам при их запуске?
В практической системе предлагающие и принимающие стороны - это один и тот же набор узлов.То есть proposer и акцептор - это две роли, выполняемые одним и тем же процессом.
Что если все мои авторы умрут?
Многие системы Paxos (например, используемые в качестве хранилищ kv) работают с последовательностью экземпляров paxos (например, с журналом транзакций).Невозможно предположить, что один и тот же набор процессов будет существовать вечно, поэтому должны существовать механизмы для изменения набора узлов в кворуме.
В некоторых системах, которые я поддерживаю, есть две части предложенного/ выбранное значение: полезная нагрузка от клиента и членство в paxos.Раунд паксосов выполняется кворумом, выбранным в значении до .Выполнение этого таким образом ограничивает способность вашей системы передавать выбранные значения;вместо этого вам придется пакетировать их, если вы хотите выбрать несколько значений одновременно - или . Вы можете посмотреть, как Raft выбирает членство.
В Raft выбор членов кворума является двухфазнымпроцесс.Во-первых, новый кворум предлагается и совершается; оба кворума используются некоторое время;и тогда новый кворум вступает во владение.В частности, тем временем большинство как старого, так и нового кворумов должно совершать что-либо, в том числе захват нового кворума.