Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Consensus.Paxos

 Consensus.Paxos

Consensus.Paxos
Nikolay Antonov, Lead Developer, Exactpro
Dev Meetup: Kostroma
23/07/2019

Youtube Channel https://www.youtube.com/c/exactprosystems
Linkedin https://www.linkedin.com/company/exactpro-systems-llc
Instagram https://www.instagram.com/qakostroma/
Twitter https://twitter.com/exactpro

5206c19df417b8876825b5561344c1a0?s=128

Exactpro
PRO

July 23, 2019
Tweet

Transcript

  1. Build Software to Test Software exactpro.com Consensus. Paxos. Date: July

    23, 2019 Author: Nikolay Antonov
  2. 2 Build Software to Test Software Tel: +7 495 640

    24 60 , +1 415 830 38 49 exactpro.com Я Leslie Lamport
  3. 3 Build Software to Test Software exactpro.com Leader Election несколько

    узлов должны выбрать одного лидера Consensus несколько узлов должны договориться о чём-то Total order broadcast несколько узлов получают сообщения в одинаковом порядке Задача
  4. 4 Build Software to Test Software exactpro.com 1. Safety -

    ничего плохого не произойдёт • Agreement - никакие два исправных узла не получают разные согласованные значения • Validity - согласованное значение было кем-то предложено • Integrity - однажды выбранное согласованное значение никогда не изменится 2. Liveness - хорошее когда-нибудь наступит • Termination - все исправные узлы в конечном счёте согласуют значение Consensus
  5. 5 Build Software to Test Software exactpro.com Replicated State Machine

    Конечный Автомат Консенсус Лог Конечный Автомат Консенсус Лог Конечный Автомат Консенсус Лог add del upd add del upd add del upd Сеть
  6. 6 Build Software to Test Software exactpro.com Невозможно существование детерминированного

    протокола, который решает задачу консенсуса в асинхронной системе передачи сообщений, в которой может произойти сбой одного процесса. Невозможность существования 1-аварийно-устойчивого алгоритма консенсуса (1985) Michael M.J. Fischer Nancy A. Lynch Mike Paterson
  7. 7 Build Software to Test Software exactpro.com Невозможно существование детерминированного

    протокола, который решает задачу консенсуса в асинхронной системе передачи сообщений, в которой может произойти сбой одного процесса. • Доставка сообщений гарантирована • Возможные значения: 0 и 1 • Невозможно отличить умерший процесс от работающего очень медленно • Процессы не имеют доступ к синхронизированным часам и не могут использовать алгоритмы с тайм-аутами Невозможность существования 1-аварийно-устойчивого алгоритма консенсуса (1985)
  8. 8 Build Software to Test Software exactpro.com Message Passing vs

    Shared Memory
  9. 9 Build Software to Test Software exactpro.com Synchronous • Время

    доставки сообщения ограничено • Разница в производительности процессов известна • Редко встречаются на практике Asynchronous • Произвольное время доставки сообщения • Повсеместно распространены Partial Synchrony • Асинхронная система станет синхронной через некоторое неизвестное время T Synchronous vs Asynchronous
  10. 10 Build Software to Test Software exactpro.com Package loss client

    network service time node unresponsive ??? ??? ???
  11. 11 Build Software to Test Software exactpro.com Crash • power

    off / segfault Omission • network congestion Byzantine • злонамеренное поведение Failures
  12. 12 Build Software to Test Software exactpro.com Byzantine Fault Tolerance

    http://scholar.harvard.edu/files/mickens/files/thesaddestmoment.pdf
  13. 13 Build Software to Test Software exactpro.com Proposer (Предлагающий) Продвигает

    своё предложение среди Избирателей Acceptor (Избиратель) Могут принимать предложения Предлагающего Learner (Ученик) Узнаёт о согласованном значении, основываясь на сообщениях от Избирателей Каждый узел Paxos может выполнять несколько ролей Каждый узел Paxos знает количество acceptors (избирателей) Каждый узел Paxos должен восстановить своё состояние после crash Роли процессов в Paxos
  14. 14 Build Software to Test Software exactpro.com Basic Paxos Proposers

    1) Выбрать уникальный номер предложения n Acceptors Round number Server ID
  15. 15 Build Software to Test Software exactpro.com Basic Paxos Proposers

    1) Выбрать уникальный номер предложения n 2) Разослать Prepare(n) кворуму 4) Когда получены ответы от кворума S: выбрать значение v с наибольшим номером предложения из кворума S, ИЛИ предложить своё значение (если ни одно значение не было выбрано (accepted)) 5) Разослать Accept(n, value) кворуму 6) Когда получены ответы от кворума S: • Если были reject-ы (result > n), тогда goto 1 • Согласованное значение выбрано Acceptors 3) Пообещать не принимать предложений (proposals) с номером предложения меньше n Ответить на Prepare(n): if (n > minProposal ) { minProposal = n } Promise(acceptedProposal, acceptedValue) 6) Ответить на Accept(n, value) if ( n >= minProposal ) { acceptedProposal = minPorposal = n acceptedValue = value } Return(minProposal) Learners
  16. 16 Build Software to Test Software exactpro.com Примеры time Pr1

    Pr2 A1 A2 A3 A4 A5
  17. 17 Build Software to Test Software exactpro.com Пример #1 time

    Pr1 Pr2 A1 A2 A3 A4 A5 A 1.1 X X A 1.1 X A 1.1 X P 1.1 Promise Consensus! P 1.1 P 1.1
  18. 18 Build Software to Test Software exactpro.com Пример #2 time

    Pr1 Pr2 A1 A2 A3 A4 A5 A 1.1 X A 1.1 X A 1.1 X P 1.1 P 1.1 P 1.1 Y P 1.2 P 1.2 P 1.2 A 1.2 X A 1.2 X A 1.2 X Все Accept от Pr2 содержат значение X, а не Y Узел 3 уведомил, что уже выбрал значение X Promise X [1.2] - означает: Номер предложения ‘1’ Номер узла ‘2’
  19. 19 Build Software to Test Software exactpro.com Пример #3 time

    Pr1 Pr2 A1 A2 A3 A4 A5 A 1.1 X A 1.1 X A 1.1 X P 1.1 P 1.1 P 1.1 Y P 1.2 P 1.2 P 1.2 A 1.2 X A 1.2 X A 1.2 X Значение уже выбрано одним из Избирателей (Acceptors) X
  20. 20 Build Software to Test Software exactpro.com Пример #4 time

    Pr1 Pr2 A1 A2 A3 A4 A5 A 1.1 X A 1.1 X A 1.1 X P 1.1 P 1.1 P 1.1 Y P 1.2 P 1.2 P 1.2 A 1.2 Y A 1.2 Y A 1.2 Y X
  21. 21 Build Software to Test Software exactpro.com Пример #5 -

    LiveLock time Pr1 Pr2 A1 A2 A3 A4 A5 A 1.1 X A 1.1 X A 1.1 X P 1.1 P 1.1 P 1.1 Y P 1.2 P 1.2 P 1.2 A 1.2 Y A 1.2 Y A 1.2 Y P 2.1 P 2.1 P 2.1 P 3.2 P3.2 P 3.2 A 2.1 X A 2.1 X A 2.1 X P 4.1 P 4.1 P 4.1 X
  22. 22 Build Software to Test Software exactpro.com Basic Paxos: Один

    или несколько узлов предлагают значение Узлы выбирают одно выходное значение из всех предложенных Только одно выходное значение могло быть когда-либо выбрано Multi-Paxos: Несколько экземпляров Basic Paxos формируют общую последовательность значений Paxos
  23. 23 Build Software to Test Software exactpro.com Paxos Made Simple

    : https://lamport.azurewebsites.net/pubs/paxos-simple.pdf The Paxos Algorithm: https://www.youtube.com/watch?v=d7nAGI_NZPk Paxos Made Live: https://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/paper2-1.pdf References
  24. 24 Build Software to Test Software Tel: +7 495 640

    24 60 , +1 415 830 38 49 exactpro.com Спасибо!