Π”Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (Two-Phase Commit, 2PC) β€” это ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» распрСдСлённой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими систСмами ΠΈΠ»ΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² распрСдСлённых систСмах, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ сообщСний.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

  • Гарантия согласованности. ВсС участники Π»ΠΈΠ±ΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ измСнСния, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ исходному ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ.
  • ΠΡ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Вранзакция выполняСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ Π½Π΅ выполняСтся Π²ΠΎΠΎΠ±Ρ‰Π΅.

НСдостатки Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
    • ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·-Π·Π° нСобходимости согласования ΠΌΠ΅ΠΆΠ΄Ρƒ участниками.
    • Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° рСсурсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, записСй Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию пропускной способности систСмы.
  • Риск Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (Blocking). Если ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· строя, участники ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² подвСшСнном состоянии, оТидая Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄.
  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Настройка Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² распрСдСлённых систСмах Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ особСнностСй инфраструктуры.
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² систСмах с большим количСством участников ΠΈΠ·-Π·Π° увСличСния числа сообщСний ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ согласования.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» состоит ΠΈΠ· Π΄Π²ΡƒΡ… этапов:

  • Π€Π°Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ (Prepare Phase):
    • ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ отправляСт запрос всСм участникам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°ΠΌ сообщСний) с ΠΏΡ€ΠΎΡΡŒΠ±ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
    • Участники ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρƒ ΠΎ своём статусС:
      • β€œΠ“ΠΎΡ‚ΠΎΠ²β€ (Vote Yes), Ссли опСрация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.
      • β€œΠΠ΅ готов” (Vote No), Ссли опСрация Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. Если хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ участник Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ β€œΠΠ΅ готов”, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  • Π€Π°Π·Π° фиксации (Commit Phase):
    • Если всС участники ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ отправляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния (Commit).
    • Участники Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ измСнСния ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
    • Если хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ участник Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ отправляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΡ‚ΠΊΠ°Ρ‚Π° (Rollback) всСм участникам.

Π”Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ, Ссли:

  • ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ участников Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшоС.
  • Высокая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ»ΠΈ сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ допустимыми.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

  • БанковскиС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ согласованности ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ срСдств ΠΌΠ΅ΠΆΠ΄Ρƒ счСтами.
  • ОбновлСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Когда Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Π°Π·Π°Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ синхронно.
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°ΠΌΠΈ сообщСний. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ атомарности ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ сообщСний ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Однако, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных распрСдСлённых систСм ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈΠ·-Π·Π° ΠΈΡ… большСй гибкости ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ

  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ВмСсто слоТных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ систСмы ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ состояния.
  • Outbox-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½. ИспользованиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° для согласования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • Event Sourcing. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ событийной ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π³Π΄Π΅ измСнСния состояния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ события, Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  • BASE вмСсто ACID. ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ BASE, которая допускаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ€Π°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π΄ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠœΠ΅Ρ‚Π° информация

ΠžΠ±Π»Π°ΡΡ‚ΡŒ:: 00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ::
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2025-01-13
Автор::

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ