Я использую Paxos в приложении для моделирования кластеров, используя документацию, доступную в Wikipedia. К сожалению, он оставляет несколько открытых дверей для интерпретации и не дает большой информации по ключевым вопросам реализации. Это неясно и неполно.
- Предположим, что кластер разделен на 3 области, каждый из которых содержит 3 узла (всего = 9 узлов). Что произойдет, если связь между регионами будет нарушена? Ни один лидер не может достичь кворума (это 5).
Разве Паксо не войдет в бесконечный цикл? Я предполагаю, что нельзя инициировать Paxos, если не удается связаться хотя бы с кворумом узлов.
- В Фазе 1b: "Если номер заявки N больше любого предыдущего предложения, то каждый Акцептор promises не принимает предложения, меньшие, чем N, и отправляет значение, которое оно приняло последним для этот экземпляр для предложения.
Что такое "последнее значение, которое он принял"? Это какой-либо предыдущий номер предложения от автора? Что означает "экземпляр" именно в этом случае?
-
В Фазе 1a: Включает ли это значение, которое нужно согласовать с сообщением Prepare, или это отложено на Accept! сообщение? Или это имеет значение?
-
В Фазе 2a: "Если какой-либо из Акцепторов уже принял значение, лидер должен Выбрать значение с максимальным номером предложения N '.
Что здесь ценность? Это номер предложения? Я не верю, но эта фраза неясна.
-
В Фазе 2a: "В противном случае, Proposer может выбрать любое значение". Что это значит? Значение для чего? Номер предложения?
-
Paxos, похоже, полагается на увеличение стоимости N (номер предложения) для работы? Правильно ли это?
-
В записи wikipedia не обсуждаются начальные значения, которые должен быть установлен node, прежде чем приступать к участию в Paxos. Что это?
P.S.: У меня недостаточно репутации, чтобы создать тег "Paxos" (любой волонтер?)