Реализация алгоритма Паксоса

Я прочитал газету под названием "Paxos made simple", но все еще находился в замешательстве:

  1. К чему относится "экземпляр алгоритма Паксоса"? каждый экземпляр указывает на наличие ввода / команды от внешних клиентов? и алгоритм Paxos для каждого экземпляра будет выполняться параллельно???

  2. Если существует только один "выдающийся" заявитель, способный выдать предложение, то чем отличается алгоритм Паксоса от алгоритма двухфазного принятия???

  3. Где мы могли бы применить алгоритм Paxos в реальном мире / проекте?

Спасибо!

Кажется, что статья здесь дает более четкое описание: http://research.microsoft.com/pubs/64634/web-dsn-submission.pdf

есть еще идеи?

1 ответ

К чему относится "экземпляр алгоритма Паксоса"? каждый экземпляр указывает на наличие ввода / команды от внешних клиентов? и алгоритм Paxos для каждого экземпляра будет выполняться параллельно???

Я ответил на "экземплярный" вопрос в другом вопросе, поэтому я просто подведу итоги здесь.

По сути, это все равно, что сказать "экземпляр быстрой сортировки" для ссылки на один прогон алгоритма. В случае с Paxos вместо сортировки списка выбирается значение для нескольких хостов. Несколько экземпляров paxos могут / работают параллельно. Участники должны знать об этом, поэтому хорошо, что об этом прямо говорится.

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

Distinguished Proposer является оптимизацией и не является обязательным требованием для алгоритма. Distinguished Proposer снижает вероятность того, что два автора предложения перепрыгивают сообщения подготовки / принятия, что важно, если вы хотите, чтобы экземпляр завершился. В этой модели узел пересылает запрос Уважаемому предложителю вместо предложения для себя. Если он думает, что Уважаемый Proposer мертв, то он просто предлагает для себя. (Это не должно быть / никогда не может быть на 100% уверенным в том, что Уважаемый Proposer мертв).

Где мы могли бы применить алгоритм Paxos в реальном мире / проекте?

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

Вторичным вариантом использования является строго согласованная база данных. Проблема в том, что он может быть медленным из-за количества сообщений, требуемых в Paxos, поэтому я не использую его для вещей, которые лучше обслуживаются другой базой данных. То есть я использую его в основном для конфигурации. Возьмем, к примеру, выборы лидера базы данных, упомянутые выше. Я сохраняю результат, чтобы узлы могли запрашивать такие вещи, как "кто является текущим хозяином базы данных?" Paxos также публикует свои результаты, поэтому в обычном режиме я просто слушаю этот поток, а не запрашиваю.

Другие вопросы по тегам