ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

Π˜Ρ‚Π°ΠΊ, прСдставим. Π’ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅ Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹ 5 ΠΊΠΎΡ‚ΠΎΠ², ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΉΡ‚ΠΈ Ρ€Π°Π·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ хозяина ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ всСм вмСстС Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΠ± этом, вСдь Π΄Π²Π΅Ρ€ΡŒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ впятСром навалившись Π½Π° Π½Π΅Ρ‘. Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΠ² – ΠΊΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π°, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΡ‚Ρ‹ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎ Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: «Как ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?Β»

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я простым языком расскаТу Π²Π°ΠΌ ΠΎ тСорСтичСской ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΌΠΈΡ€Π° распрСдСлённых систСм ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹. А Ρ‚Π°ΠΊΠΆΠ΅ повСрхностно Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ Π³Π»Π°Π²Π½ΡƒΡŽ идСю, Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ Π² основС Paxos’Π°.

ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

Когда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ инфраструктурами, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² кластСрах ΠΈΠ· большого числа ΡƒΠ·Π»ΠΎΠ², ΠΎΠ½ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ цСлостными, сохранными ΠΈ всСгда доступными. Но ΠΎΡ‚ΠΊΡƒΠ΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ?

По сути, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ – это Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ поставщика. Они описаны Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Β«Π­Ρ‚ΠΎΡ‚ сСрвис достаточно Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ, Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ SLA, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ, всё Π±ΡƒΠ΄Π΅Ρ‚ распрСдСлённо Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅Β».

ΠœΡ‹ склонны Π²Π΅Ρ€ΠΈΡ‚ΡŒ Π² Π»ΡƒΡ‡ΡˆΠ΅Π΅, вСдь ΡƒΠΌΠ½Ρ‹Π΅ дяди ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΠΈΠ»ΠΈ нас, Ρ‡Ρ‚ΠΎ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠœΡ‹ Π½Π΅ задаёмся вопросом: Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ, собствСнно, это Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ? Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ обоснованиС коррСктности Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΈΡ… систСм?

НСдавно я Π΅Π·Π΄ΠΈΠ» Π½Π° ΡˆΠΊΠΎΠ»Ρƒ ΠΏΠΎ распрСдСлённым вычислСниям ΠΈ ΠΎΡ‡Π΅Π½ΡŒ вдохновился этой Ρ‚Π΅ΠΌΠΎΠΉ. Π›Π΅ΠΊΡ†ΠΈΠΈ Π² школС большС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ занятия ΠΏΠΎ матСматичСскому Π°Π½Π°Π»ΠΈΠ·Ρƒ, Π½Π΅ΠΆΠ΅Π»ΠΈ Π½Π΅Ρ‡Ρ‚ΠΎ связанноС с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ систСмами. Но ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Π² своё врСмя ΠΈ Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ваТнСйшиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь, сами Ρ‚ΠΎΠ³ΠΎ Π½Π΅ подозрСвая.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных распрСдСлённых систСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ консСнсуса Paxos ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π‘Π°ΠΌΠΎΠ΅ ΠΊΡ€ΡƒΡ‚ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, сама Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сущСствования этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Π½Π° просто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€ΡƒΡ‡ΠΊΠΈ ΠΈ Π±ΡƒΠΌΠ°Π³ΠΈ. ΠŸΡ€ΠΈ этом Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ примСняСтся Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСмах, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ числС ΡƒΠ·Π»ΠΎΠ² Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ….

Лайтовая ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‚ΠΎΠ³ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ дальшС: Π·Π°Π΄Π°Ρ‡Π° Π΄Π²ΡƒΡ… Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ²Π”Π°Π²Π°ΠΉΡ‚Π΅ для Ρ€Π°Π·ΠΌΠΈΠ½ΠΊΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ Π΄Π²ΡƒΡ… Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ².

Π£ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Π°Ρ€ΠΌΠΈΠΈ – рыТая ΠΈ бСлая. Π‘Π΅Π»Ρ‹Π΅ войска Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² осаТдённом Π³ΠΎΡ€ΠΎΠ΄Π΅. Π Ρ‹ΠΆΠΈΠ΅ войска Π²ΠΎ Π³Π»Π°Π²Π΅ с Π³Π΅Π½Π΅Ρ€Π°Π»Π°ΠΌΠΈ А1 ΠΈ А2 Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π΄Π²ΡƒΠΌ сторонам ΠΎΡ‚ Π³ΠΎΡ€ΠΎΠ΄Π°. Π—Π°Π΄Π°Ρ‡Π° Ρ€Ρ‹ΠΆΠΈΡ… – Π½Π°ΠΏΠ°ΡΡ‚ΡŒ Π½Π° Π±Π΅Π»Ρ‹ΠΉ Π³ΠΎΡ€ΠΎΠ΄ ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚ΡŒ. Однако войско ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Ρ‹ΠΆΠ΅Π³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ мСньшС войска Π±Π΅Π»Ρ‹Ρ….

ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

Условия ΠΏΠΎΠ±Π΅Π΄Ρ‹ для Ρ€Ρ‹ΠΆΠΈΡ…: ΠΎΠ±Π° Π³Π΅Π½Π΅Ρ€Π°Π»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠ°ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ числСнноС прСимущСство Π½Π°Π΄ Π±Π΅Π»Ρ‹ΠΌΠΈ. Для этого Π³Π΅Π½Π΅Ρ€Π°Π»Π°ΠΌ А1 ΠΈ А2 Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Если ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ€Ρ‹ΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°ΡŽΡ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ, Π³Π΅Π½Π΅Ρ€Π°Π»Ρ‹ А1 ΠΈ А2 ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ Π³ΠΎΠ½Ρ†ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Π±Π΅Π»ΠΎΠ³ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π°. Π“ΠΎΠ½Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ союзного Π³Π΅Π½Π΅Ρ€Π°Π»Π° ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠΎΠΌ. Вопрос: Π΅ΡΡ‚ΡŒ Π»ΠΈ такая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Ρ‹ΠΆΠΈΠΌΠΈ Π³Π΅Π½Π΅Ρ€Π°Π»Π°ΠΌΠΈ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π³ΠΎΠ½Ρ†ΠΎΠ² ΠΎΡ‚ А1 ΠΊ А2 ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚ А2 ΠΊ А1), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ договорятся ΠΎ Π½Π°ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π² час Π₯. Π—Π΄Π΅ΡΡŒ, ΠΏΠΎΠ΄ гарантиями понимаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° Π³Π΅Π½Π΅Ρ€Π°Π»Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ союзник (Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Π») Ρ‚ΠΎΡ‡Π½ΠΎ Π°Ρ‚Π°ΠΊΡƒΠ΅Ρ‚ Π² Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ врСмя X.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ А1 посылаСт Π³ΠΎΠ½Ρ†Π° ΠΊ А2 с посланиСм: Β«Π”Π°Π²Π°ΠΉ Π½Π°ΠΏΠ°Π΄Π΅ΠΌ сСгодня Π² ΠΏΠΎΠ»Π½ΠΎΡ‡ΡŒ!Β». Π“Π΅Π½Π΅Ρ€Π°Π» А1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠ°ΡΡ‚ΡŒ Π±Π΅Π· подтвСрТдСния ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€Π°Π»Π° А2. Если Π³ΠΎΠ½Π΅Ρ† ΠΎΡ‚ А1 Π΄ΠΎΡˆΡ‘Π», Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π» А2 посылаСт ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ с сообщСниСм: Β«Π”Π°, Π΄Π°Π²Π°ΠΉ сСгодня Π·Π°Π²Π°Π»ΠΈΠΌ Π±Π΅Π»Ρ‹Ρ…Β». Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π³Π΅Π½Π΅Ρ€Π°Π» А2 Π½Π΅ Π·Π½Π°Π΅Ρ‚, Π΄ΠΎΡˆΡ‘Π» Π΅Π³ΠΎ Π³ΠΎΠ½Π΅Ρ† ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π½Π°ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ Π³Π΅Π½Π΅Ρ€Π°Π»Ρƒ А2 ΠΎΠΏΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

Если Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡŽ дальшС, выяснится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: сколько Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Π½Π΅Ρ‚ способа Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… сообщСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ любой ΠΈΠ· Π³ΠΎΠ½Ρ†ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½).

Π—Π°Π΄Π°Ρ‡Π° Π΄Π²ΡƒΡ… Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ² – это отличная ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ простой распрСдСлённой систСмы, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΡƒΠ·Π»Π° с Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. Π—Π½Π°Ρ‡ΠΈΡ‚ Ρƒ нас Π½Π΅Ρ‚ 100% Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠŸΡ€ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ Π΄Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π’Π²ΠΎΠ΄ΠΈΠΌ понятиС распрСдСлённых систСм

РаспрСдСлённая систСма – это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² (Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΡƒΠ·Π»Π°ΠΌΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ сообщСниями. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ·Π΅Π» – это нСкоторая автономная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. Π£Π·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ, Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния.

Как ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ сообщСния, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ – это нас Π½Π΅ интСрСсуСт Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹ распрСдСлённой систСмы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний.

Π‘Π°ΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ выглядит Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТным, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ распрСдСлённой систСмы Π΅ΡΡ‚ΡŒ ряд Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π°ΠΆΠ½Ρ‹ для нас.

Атрибуты распрСдСлённых систСм

  1. Concurrency – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ возникновСния ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Ρ… событий Π² систСмС. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ события, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π½Π° Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ…, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρƒ нас Π½Π΅Ρ‚ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠ³ΠΎ порядка возникновСния этих событий. А, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρƒ нас Π΅Π³ΠΎ Π½Π΅Ρ‚.
  2. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… часов. Π£ нас Π½Π΅Ρ‚ Ρ‡Ρ‘Ρ‚ΠΊΠΎΠ³ΠΎ порядка событий Π² силу отсутствия Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… часов. Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅ людСй ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ часы ΠΈ врСмя Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ. Всё мСняСтся, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ распрСдСлённых систСмах. Π”Π°ΠΆΠ΅ Ρƒ свСрхточных Π°Ρ‚ΠΎΠΌΠ½Ρ‹Ρ… часов Π΅ΡΡ‚ΡŒ Π΄Ρ€ΠΈΡ„Ρ‚, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π΄Π²ΡƒΡ… событий ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° врСмя ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ.
  3. НСзависимый ΠΎΡ‚ΠΊΠ°Π· ΡƒΠ·Π»ΠΎΠ² систСмы. Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ наши ΡƒΠ·Π»Ρ‹ Π½Π΅ Π²Π΅Ρ‡Π½Ρ‹. ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· строя Тёсткий диск, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ° Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΡ€Π³Π½ΡƒΡ‚ΡŒ ΡΠ΅Ρ‚ΡŒ ΠΈ сообщСния ΠΏΠΎΡ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ситуации, ΠΊΠΎΠ³Π΄Π° ΡƒΠ·Π»Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ ΠΏΡ€ΠΈ этом Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² систСмы. ПослСдний класс ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° византийских Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ². Π‘Π°ΠΌΡ‹ΠΉ популярный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ распрСдСлённой систСмы с Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ – это Blockchain. Но сСгодня ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ этот особый класс ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· строя.
  4. МодСли ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями) ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ. ΠœΡ‹ ΡƒΠΆΠ΅ выяснили, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹ ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. Π•ΡΡ‚ΡŒ Π΄Π²Π΅ извСстныС ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями: синхронная ΠΈ асинхронная.

МодСли ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ Π² распрСдСлённых систСмах

Бинхронная модСль – ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ конСчная извСстная Π΄Π΅Π»ΡŒΡ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ сообщСниС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Если это врСмя Π²Ρ‹ΡˆΠ»ΠΎ, Π° сообщСниС Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ смСло Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π΅Π» Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· строя. Π’ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ прСдсказуСмоС врСмя оТидания.

Асинхронная модСль – Π² асинхронных модСлях ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ врСмя оТидания ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ сущСствуСт Ρ‚Π°ΠΊΠΎΠΉ Π΄Π΅Π»ΡŒΡ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π΅Π» Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· строя. Π’.Π΅. врСмя оТидания сообщСния ΠΎΡ‚ ΡƒΠ·Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΌ. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΈ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом дальшС.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ консСнсуса Π² распрСдСлённых систСмах

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ понятиС консСнсуса, рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ – State Machine Replication.

Π£ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распрСдСлённый Π»ΠΎΠ³. Нам Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» консистСнтным ΠΈ содСрТал ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° всСх ΡƒΠ·Π»Π°Ρ… распрСдСлённой систСмы. Когда ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² ΡƒΠ·Π½Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ собираСтся Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π»ΠΎΠ³, Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ становится ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΠΎΠ³ обновился Π½Π° всСх ΡƒΠ·Π»Π°Ρ…, ΠΈ систСма ΠΏΠ΅Ρ€Π΅ΡˆΠ»Π° Π² Π½ΠΎΠ²ΠΎΠ΅ консистСнтноС состояниС. ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π»Ρ‹ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой: всС ΡƒΠ·Π»Ρ‹ согласились, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, всС ΡƒΠ·Π»Ρ‹ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ приняли, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этом случаС всС ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π»ΠΎΠ³ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π˜Π½Ρ‹ΠΌΠΈ словами: Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² Π½Π΅ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΠ», Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ информация, Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅. Π”ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ ΠΈ согласиС ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΌ Π²Π΅Ρ€Π½ΠΎΠΌ принятом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΈ Π΅ΡΡ‚ΡŒ консСнсус Π² распрСдСлённой систСмС. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ распрСдСлённой систСмС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ консСнсус.
ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах
Π‘ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ достиТСния консСнсуса (ΠΈΠ»ΠΈ просто Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ консСнсуса), ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ систСму ΠΈΠ· состояния А Π² состояниС Π‘. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ это состояниС принято всСми ΡƒΠ·Π»Π°ΠΌΠΈ, ΠΈ всС ΡƒΠ·Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ. Как выясняСтся, эта Π·Π°Π΄Π°Ρ‡Π° совсСм Π½Π΅ такая Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд.

Бвойства Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° консСнсуса

Алгоритм консСнсуса Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ трСмя свойствами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСма ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠΌΠ΅Π»Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ прогрСсс Π² ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΈΠ· состояния Π² состояниС:

  1. Agreement – всС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ… это свойство Ρ‚Π°ΠΊΠΆΠ΅ встрСчаСтся ΠΊΠ°ΠΊ safety property). ВсС ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ (Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΈ ΠΈΠ· строя ΠΈ Π½Π΅ потСряли связь с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ соглашСнию ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΠ΅ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

    Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹ Π² рассматриваСмой Π½Π°ΠΌΠΈ распрСдСлённой систСмС хотят Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ сСйчас Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ систСмы, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡƒΠ·Π΅Π»), Π½ΠΎ Π² этой систСмС Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅Ρ‚ ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… (Π·Π°Π΄Π°Ρ‡Π° византийских Π³Π΅Π½Π΅Ρ€Π°Π»ΠΎΠ²). Π—Π° счСт этого свойства систСма остаСтся консистСнтной.

  2. Integrity β€” Ссли всС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ v, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π΅Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ v.
  3. Termination – всС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС ΠΏΡ€ΠΈΠΌΡƒΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (liveness property), Ρ‡Ρ‚ΠΎ позволяСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΈΠΌΠ΅Ρ‚ΡŒ прогрСсс Π² систСмС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π΅Π», Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ это: «Для мСня – это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ истинно, я согласСн со всСй систСмой».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° консСнсуса

Пока свойства Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ совсСм понятны. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊΠΈΠ΅ стадии ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ консСнсуса Π² систСмС с синхронной модСлью ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС ΡƒΠ·Π»Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, сообщСния Π½Π΅ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ломаСтся (Π½Π΅ΡƒΠΆΠ΅Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΏΡ€Π°Π²Π΄Π° случаСтся?).

  1. Всё начинаСтся с прСдлоТСния Ρ€ΡƒΠΊΠΈ ΠΈ сСрдца (Propose). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ ΡƒΠ·Π»Ρƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π£Π·Π΅Π» 1Β» ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ Π½Π°Ρ‡Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΡƒΠ·Π»Ρƒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – О. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Β«Π£Π·Π΅Π» 1Β» ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ proposer. Как proposer Β«Π£Π·Π΅Π» 1Β» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΠΎΠ²Π΅ΡΡ‚ΠΈΡ‚ΡŒ всю систСму ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свСТиС Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ ΠΎΠ½ рассылаСт всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ сообщСния: Β«Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅! МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «О», ΠΈ я Ρ…ΠΎΡ‡Ρƒ Π΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ! ΠŸΡ€ΠΎΡˆΡƒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ «О» Π² свой Π»ΠΎΠ³Β».

    ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

  2. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ стадия – голосованиС Π·Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Voting). Для Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π°? ΠœΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊ ΡΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΠ·Π»Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»Π° Π±ΠΎΠ»Π΅Π΅ свСТая информация, ΠΈ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ этой ΠΆΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

    ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

    Когда ΡƒΠ·Π΅Π» Β«Π£Π·Π΅Π» 1Β» посылаСт свой ΠΏΡ€ΠΎΠΏΠΎΡƒΠ·, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π² своих Π»ΠΎΠ³Π°Ρ… Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ этому ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ. Если Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ Π½Π΅Ρ‚, ΡƒΠ·Π»Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚: Β«Π”Π°, Ρƒ мСня Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ этому ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «О» – это самая свСТая информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ заслуТили».

    Π’ любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС, ΡƒΠ·Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Β«Π£Π·Π»Ρƒ 1Β»: Β«ΠŸΠΎΡΠ»ΡƒΡˆΠ°ΠΉ! Π£ мСня Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ свСТиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. НС «О», Π° ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅Β».

    На стадии голосования ΡƒΠ·Π»Ρ‹ приходят ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ: Π»ΠΈΠ±ΠΎ всС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· Π½ΠΈΡ… голосуСт ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ², Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ свСТиС Π΄Π°Π½Π½Ρ‹Π΅.

  3. Если Ρ€Π°ΡƒΠ½Π΄ голосования ΠΏΡ€ΠΎΡˆΡ‘Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈ всС Π±Ρ‹Π»ΠΈ Β«Π·Π°Β», Ρ‚ΠΎ систСма ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π½ΠΎΠ²ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ – принятиС значСния (Accept). Β«Π£Π·Π΅Π» 1Β» собираСт всС ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ·Π»ΠΎΠ² ΠΈ сообщаСт: «ВсС согласились со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ «О»! Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ заявляю, Ρ‡Ρ‚ΠΎ «О» – нашС Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π΅Π΄ΠΈΠ½ΠΎΠ΅ для всСх! Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ сСбС Π² ΠΊΠ½ΠΈΠΆΠ΅Ρ‡ΠΊΡƒ, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅. Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² свой Π»ΠΎΠ³!Β»

    ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

  4. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΏΡ€ΠΈΡΡ‹Π»Π°ΡŽΡ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ (Accepted), Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ записали сСбС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «О», Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π° это врСмя ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π½Π΅ успСло (своСго Ρ€ΠΎΠ΄Π° Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚). ПослС этого Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ события ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ распрСдСлСнная транзакция Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ.
    ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ консСнсуса Π² простом случаС состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… шагов: propose, голосованиС (voting), принятиС (accept), ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ принятия (accepted).

Если Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ шагС ΠΌΡ‹ Π½Π΅ смогли Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ согласия, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ запускаСтся Π·Π°Π½ΠΎΠ²ΠΎ, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Ρ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставят ΡƒΠ·Π»Ρ‹, ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Алгоритм консСнсуса Π² асинхронной систСмС

Π”ΠΎ этого всё Π±Ρ‹Π»ΠΎ Π³Π»Π°Π΄ΠΊΠΎ, вСдь Ρ€Π΅Ρ‡ΡŒ шла ΠΏΡ€ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ модСль ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. Но ΠΌΡ‹-Ρ‚ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² соврСмСнном ΠΌΠΈΡ€Π΅ ΠΌΡ‹ всё ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ асинхронно. Как ΠΆΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² систСмС с асинхронной модСлью ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Π³Π΄Π΅ ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ врСмя оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ ΡƒΠ·Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΌ (ΠΊ слову, Π²Ρ‹Ρ…ΠΎΠ΄ ΡƒΠ·Π»Π° ΠΈΠ· строя, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ консСнсуса, вопрос ΠΊ Ρ‚Π΅ΠΌ ΠΏΡ‹Ρ‚Π»ΠΈΠ²Ρ‹ΠΌ читатСлям, ΠΊΡ‚ΠΎ Π΄ΠΎΡˆΡ‘Π» Π΄ΠΎ этого мСста: сколько ΡƒΠ·Π»ΠΎΠ² Π² систСмС ΠΈΠ· N ΡƒΠ·Π»ΠΎΠ² с асинхронной модСлью сообщСний ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· строя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСма ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠ³Π»Π° Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ консСнсуса?

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ обоснованиС Π·Π° спойлСром.ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚: 0. Если хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» Π² асинхронной систСмС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· строя, систСма Π½Π΅ смоТСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ консСнсуса. Π­Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² извСстной Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ΅ FLP (1985, Fischer, Lynch, Paterson, ссылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ): Β«ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ достиТСния распрСдСлённого консСнсуса ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· строя хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°Β».
ΠšΠΎΡ‚ Π¨Ρ€Ρ‘Π΄ΠΈΠ½Π³Π΅Ρ€Π° Π±Π΅Π· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса Π² распрСдСлённых систСмах
РСбята, Ρ‚ΠΎΠ³Π΄Π° Ρƒ нас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΌΡ‹ ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρƒ нас всё асинхронно. А Ρ‚ΡƒΡ‚ Ρ‚Π°ΠΊΠΎΠ΅. Как дальшС ΠΆΠΈΡ‚ΡŒ?

ΠœΡ‹ сСйчас Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ, ΠΏΡ€ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ. Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ «консСнсус Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнут», пСрСводя с матСматичСского языка Π½Π° наш – ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹ΠΉ? Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Β«Π½Π΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнут», Ρ‚.Π΅. сущСствуСт Ρ‚Π°ΠΊΠΎΠΉ кСйс, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ консСнсус Π½Π΅ достиТим. А Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° случай?

Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ liveness property, описанноС Π²Ρ‹ΡˆΠ΅. Π£ нас Π½Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ согласия, ΠΈ систСма Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ прогрСсс (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ Π·Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ врСмя) Π² случаС, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π½Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ всСх ΡƒΠ·Π»ΠΎΠ². ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² асинхронной систСмС Ρƒ нас Π½Π΅Ρ‚ прСдсказуСмого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΈ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°Ρ‚ΡŒ, Π²Ρ‹ΡˆΠ΅Π» Π»ΠΈ ΡƒΠ·Π΅Π» ΠΈΠ· строя ΠΈΠ»ΠΈ просто Π΄ΠΎΠ»Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚.

Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠŸΡƒΡΡ‚ΡŒ наш Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎ Π² случаС ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ² (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ бСсконСчно). Но Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ситуаций, ΠΊΠΎΠ³Π΄Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΠ·Π»ΠΎΠ² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ прогрСсс Π² систСмС.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с частично синхронными модСлями ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ. Частичная ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ понимаСтся Ρ‚Π°ΠΊ: Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Ρƒ нас асинхронная модСль, Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ вводится Π½Π΅ΠΊΠΎΠ΅ понятиС Β«global stabilization timeΒ» Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π½Π°ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ, Π½ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΠ·Π²Π΅Π½ΠΈΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±ΡƒΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊ, ΠΈ с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π΅Π»ΡŒΡ‚Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ сообщСния Π΄ΠΎΠΉΠ΄ΡƒΡ‚. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° систСма ΠΈΠ· асинхронной прСвращаСтся Π² ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ с Ρ‚Π°ΠΊΠΈΠΌΠΈ систСмами.

Алгоритм Paxos Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ консСнсуса

Paxos – это сСмСйство Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ консСнсуса для частично синхронных систСм, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· строя. Автором Paxos’Π° являСтся Leslie Lamport. Он ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ сущСствования ΠΈ коррСктности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² 1989 Π³ΠΎΠ΄Ρƒ.

Но Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ оказалось ΠΎΡ‚Π½ΡŽΠ΄ΡŒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΠ΅Ρ€Π²Π°Ρ публикация Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 1998 Π³ΠΎΠ΄Ρƒ (33 страницы) с описаниСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Как оказалось, ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΊΡ€Π°ΠΉΠ½Π΅ слоТной для понимания, ΠΈ Π² 2001 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ пояснСниС ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ заняло 14 страниц. ΠžΠ±ΡŠΠ΅ΠΌΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° консСнсуса совсСм нСпростая, ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ΄ ΡƒΠΌΠ½Π΅ΠΉΡˆΠΈΡ… людСй.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ сам ЛСсли Лэмпорт Π² своСй Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅-пояснСнии Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π° строчка (Π½Π΅ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠ» какая), которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Π½Π°. И ΠΈΠ·-Π·Π° этого большоС количСство соврСмСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Paxos Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Paxos’Π° потянСт Π½Π΅ Π½Π° ΠΎΠ΄Π½Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ, поэтому я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ идСю Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π’ ссылках Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для дальнСйшСго погруТСния Π² эту Ρ‚Π΅ΠΌΡƒ.

Π ΠΎΠ»ΠΈ Π² Paxos

Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Paxos Π΅ΡΡ‚ΡŒ понятиС Ρ€ΠΎΠ»Π΅ΠΉ. Рассмотрим Ρ‚Ρ€ΠΈ основныС (Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ролями):

  1. Proposers (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹: Π»ΠΈΠ΄Π΅Ρ€Ρ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρ‹). Π­Ρ‚ΠΎ рСбята, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ·Π½Π°ΡŽΡ‚ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π±Π΅Ρ€ΡƒΡ‚ Π½Π° сСбя Ρ€ΠΎΠ»ΡŒ Π»ΠΈΠ΄Π΅Ρ€Π°. Π˜Ρ… Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°ΡƒΠ½Π΄ прСдлоТСния Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дальнСйшиС дСйствия ΡƒΠ·Π»ΠΎΠ². ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Paxos допускаСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ситуациях.
  2. Acceptors (Voters). Π­Ρ‚ΠΎ ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³ΠΎΠ»ΠΎΡΡƒΡŽΡ‚ Π·Π° принятиС ΠΈΠ»ΠΈ нСпринятиС Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ значСния. Π˜Ρ… Ρ€ΠΎΠ»ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ Π½ΠΈΡ… зависит Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Π² ΠΊΠ°ΠΊΠΎΠ΅ состояниС ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ (ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚) систСма послС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ этапа Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° консСнсуса.
  3. Learners. Π£Π·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΎΠ΅ принятоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° состояниС систСмы измСнилось. Они Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, просто ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

Один ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ нСсколько Ρ€ΠΎΠ»Π΅ΠΉ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ°

ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ систСма ΠΈΠ· N ΡƒΠ·Π»ΠΎΠ². И ΠΈΠ· Π½ΠΈΡ… максимум F ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· строя. Если F ΡƒΠ·Π»ΠΎΠ² Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· строя, Π·Π½Π°Ρ‡ΠΈΡ‚ Ρƒ нас Π² кластСрС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 2F + 1 ΡƒΠ·Π»ΠΎΠ² acceptor’ΠΎΠ².

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ нас всСгда, Π΄Π°ΠΆΠ΅ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΉ ситуации Β«Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅Β», ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ ΠΈΠΌΠ΅Π»ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ F + 1 Β«Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ…Β» ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ согласились, ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ принято. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Ρ€Π°Π·Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€ΠΈΠΌΡƒΡ‚ Ρ€Π°Π·Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ смогут ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚ΡŒ Π² голосовании.

ΠžΠ±Ρ‰Π°Ρ идСя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° консСнсуса Paxos

Алгоритм Paxos ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π΄Π²Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π° шага каТдая:

  1. Phase 1a: Prepare. На этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π»ΠΈΠ΄Π΅Ρ€ (proposer) сообщаСт всСм ΡƒΠ·Π»Π°ΠΌ: Β«ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ этап голосования. Π£ нас Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°ΡƒΠ½Π΄. НомСр этого Ρ€Π°ΡƒΠ½Π΄Π° – n. БСйчас ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒΒ». Пока ΠΎΠ½ просто сообщаСт ΠΎ Π½Π°Ρ‡Π°Π»Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ Π½Π΅ сообщаСт Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π—Π°Π΄Π°Ρ‡Π° этого этапа ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°ΡƒΠ½Π΄ ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ всСм Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€. НомСр Ρ€Π°ΡƒΠ½Π΄Π° Π²Π°ΠΆΠ΅Π½, это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большСС, Ρ‡Π΅ΠΌ всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° голосований ΠΎΡ‚ всСх ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ². Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ благодаря Π½ΠΎΠΌΠ΅Ρ€Ρƒ Ρ€Π°ΡƒΠ½Π΄Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π² систСмС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, насколько свСТиС Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ Π»ΠΈΠ΄Π΅Ρ€Π°. ВСроятно, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠ·Π»ΠΎΠ² ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ голосования с Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… Ρ€Π°ΡƒΠ½Π΄ΠΎΠ² ΠΈ ΠΎΠ½ΠΈ просто расскаТут Π»ΠΈΠ΄Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ отстал ΠΎΡ‚ ΠΆΠΈΠ·Π½ΠΈ.
  2. Phase 1b: Promise. Когда ΡƒΠ·Π»Ρ‹-acceptor’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ этапа голосования, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° исхода:
    • НомСр n Π½ΠΎΠ²ΠΎΠ³ΠΎ голосования большС, Ρ‡Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ любого ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… голосований, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ участвовал acceptor. Π’ΠΎΠ³Π΄Π° acceptor отправляСт Π»ΠΈΠ΄Π΅Ρ€Ρƒ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ большС ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… голосованиях с мСньшим Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, Ρ‡Π΅ΠΌ n. Если acceptor ΡƒΠΆΠ΅ успСл Π·Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ (Ρ‚.Π΅. ΠΎΠ½ ΡƒΠΆΠ΅ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°Π·Π΅ принял ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), Ρ‚ΠΎ ΠΊ своСму ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΡŽ ΠΎΠ½ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ принятоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ голосования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ участвовал.
    • Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли acceptor ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚ ΠΎ голосовании с большим Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этап ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΈ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π»ΠΈΠ΄Π΅Ρ€Ρƒ.
  3. Phase 2a: Accept. Π›ΠΈΠ΄Π΅Ρ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ ΠΊΠ²ΠΎΡ€ΡƒΠΌΠ° (Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡƒΠ·Π»ΠΎΠ² Π² систСмС) ΠΈ, Ссли Π½ΡƒΠΆΠ½ΠΎΠ΅ число ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ, Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° развития событий:
    • НСкоторыС ΠΈΠ· acceptor’ΠΎΠ² прислали значСния, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ голосовали. Π’ этом случаС Π»ΠΈΠ΄Π΅Ρ€ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· голосования с ΠΌΠ°ΠΊcΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ. НазовСм это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x, ΠΈ рассылаСт всСм ΡƒΠ·Π»Π°ΠΌ сообщСниС Π²ΠΈΠ΄Π°: Β«Accept (n, x)Β», Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Π½ΠΎΠΌΠ΅Ρ€ голосования ΠΈΠ· своСго ΠΆΠ΅ шага Propose, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – Ρ‚ΠΎ Ρ€Π°Π΄ΠΈ Ρ‡Π΅Π³ΠΎ всС ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ, Ρ‚.Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, собствСнно, голосуСм.
    • Если Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· acceptor’ΠΎΠ² Π½Π΅ прислал Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° просто ΠΎΠ½ΠΈ ΠΏΠΎΠΎΠ±Π΅Ρ‰Π°Π»ΠΈ Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ Π² этом Ρ€Π°ΡƒΠ½Π΄Π΅, Π»ΠΈΠ΄Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΠΌ ΠΏΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π° своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π΄ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ стал Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ. НазовСм Π΅Π³ΠΎ y. Он рассылаСт всСм ΡƒΠ·Π»Π°ΠΌ сообщСниС Π²ΠΈΠ΄Π°: Β«Accept (n, y)Β», ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ исходом.
  4. Phase 2b: Accepted. Π”Π°Π»Π΅Π΅, ΡƒΠ·Π»Ρ‹-acceptor’Ρ‹, ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сообщСния Β«Accept(…)Β», ΠΎΡ‚ Π»ΠΈΠ΄Π΅Ρ€Π° ΡΠΎΠ³Π»Π°ΡˆΠ°ΡŽΡ‚ΡΡ с Π½ΠΈΠΌ (Ρ€Π°ΡΡΡ‹Π»Π°ΡŽΡ‚ всСм ΡƒΠ·Π»Π°ΠΌ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ согласны с Π½ΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ) Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΎΠ±Π΅Ρ‰Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ (Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ) Π»ΠΈΠ΄Π΅Ρ€Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² голосованиях с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π°ΡƒΠ½Π΄Π° n’ > n, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ запрос Π½Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

    Если Π»ΠΈΠ΄Π΅Ρ€Ρƒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΠ·Π»ΠΎΠ², ΠΈ всС ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ считаСтся принятым. Π£Ρ€Π°! Если ΠΆΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π΅ Π½Π°Π±Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ Π΅ΡΡ‚ΡŒ ΡƒΠ·Π»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ всё начинаСтся сначала.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Paxos. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих этапов Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ тонкостСй, ΠΌΡ‹ практичСски Π½Π΅ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ², ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ мноТСствСнных Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½ΠΎ Ρ†Π΅Π»ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ являСтся лишь Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ читатСля с ΠΌΠΈΡ€ΠΎΠΌ распрСдСлённых вычислСний.

Π’Π°ΠΊΠΆΠ΅ стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Paxos β€” Π½Π΅ СдинствСнный Π² своСм Ρ€ΠΎΠ΄Π΅, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Raft, Π½ΠΎ это ΡƒΠΆΠ΅ Ρ‚Π΅ΠΌΠ° для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Бсылки Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для дальнСйшСго изучСния

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Β«Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊΒ»:

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ «ЛСсли Лэмпорт»:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com