Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸ•’πŸ”„ Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы: ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ мастСр-Π±Π°Π·Ρ‹ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Бинхронизация Π΄Π²ΡƒΡ… мастСр-Π±Π°Π· каТСтся слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ? Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² распрСдСлСнных систСмах, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ вашСй IT-инфраструктуры. Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» взят ΠΈΠ· нашСй СТСнСдСльной email-рассылки, посвящСнной бэкСнду. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дайдТСст. πŸ“§ ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ (function () { let link = document .getElementById ("679dbc27-c36d-46ac-bc1c-95a2f67f9afd-https://proglib.io/w/3ee15cbe-2"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, {
ОглавлСниС

Бинхронизация Π΄Π²ΡƒΡ… мастСр-Π±Π°Π· каТСтся слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ? Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² распрСдСлСнных систСмах, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ вашСй IT-инфраструктуры.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» взят ΠΈΠ· нашСй СТСнСдСльной email-рассылки, посвящСнной бэкСнду. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дайдТСст.

πŸ“§ ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ

(function () { let link = document .getElementById ("679dbc27-c36d-46ac-bc1c-95a2f67f9afd-https://proglib.io/w/3ee15cbe-2"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();

ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² синхронизации Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ – ΠΈ Ρ‡Π°Ρ‰Π΅ всСго это связано с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ систСмы Π½Π° ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ. Иногда ΠΎΠ±Π° прилоТСния вмСстС с ΠΈΡ… собствСнными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π΅ΠΌΠΎΠ½Ρ‚Π°ΠΆ процСссов, зависящих ΠΎΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ систСмы, Π½Π΅ прСдставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для поддСрТания Π΄Π²ΡƒΡ… основных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² согласованном состоянии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Авторы этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ с Ρ‚Π°ΠΊΠΈΠΌ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ кСйсом:

  • Π‘Ρ‚Π°Ρ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Π½ΠΎΠ²Ρ‹ΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сотрудники ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ постСпСнно пСрСвСсти всС процСссы Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.
  • Если Π² процСссС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ нСдоступным, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.
  • ОбС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ схСмами: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» прСдставлСн с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ количСства Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ столбцов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со Π²Ρ‚ΠΎΡ€ΠΎΠΉ.
  • Для синхронизации Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ сущСствовало Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ CDC-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.
  • Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ асинхронных сообщСний.
   ОбС Π‘Π” ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ master-Π±Π°Π·Π°ΠΌΠΈ
ОбС Π‘Π” ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ master-Π±Π°Π·Π°ΠΌΠΈ

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

  • Π‘Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ сообщСний, ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя мастСр-Π±Π°Π·Π°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ синхронизации с ΠΎΠ±Π΅ΠΈΡ… сторон.
  • КаТдая мастСр-Π±Π°Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ событиС выравнивания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ послСднСму измСнСнию.
  • Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий с ΠΎΠ±Π΅ΠΈΡ… сторон ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… часов.

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸŽ“ ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ SQL: сСкрСты профСссионалов

Асинхронная коммуникация ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

Для ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Kafka. Π‘Ρ…Π΅ΠΌΠ° Avro Π±Ρ‹Π»Π° сохранСна ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠΉ для ΠΎΠ±Π΅ΠΈΡ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, поэтому события Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ абстрактный слой для ΠΎΠ±Π΅ΠΈΡ… мастСр-Π±Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π° опираСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ выравнивания ΠΈ ΠΎΠ±Ρ‰ΡƒΡŽ модСль Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для событий. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  • ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ модуля выравнивания ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΡ… мастСр-Π±Π°Π·. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ модуля выравнивания нСзависимо ΠΎΡ‚ основных систСм.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ нСзависимой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΡƒΡ… мастСр-Π±Π°Π·. Если ΠΎΠ΄Π½Π° мастСр-Π±Π°Π·Π° пСрСстаСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, другая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.
  • ΠžΠΏΠΎΡ€Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ обСспСчиваСт Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ тСстами. Π’ долгосрочной пСрспСктивС это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ с ΠΌΠ°Π»ΠΎΠΉ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ошибкам.

Π¦Π΅Π½ΠΎΠΉ этих прСимущСств, ΠΎΠ΄Π½Π°ΠΊΠΎ, являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΎΠ±ΠΎΠΈΡ… прилоТСниях.

УпорядочиваниС сообщСний

Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ синхронизации Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… – это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Ρ‚ΡŒ сообщСния нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ систСмС ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ созданы. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для сохранСния цСлостности ΠΈ согласованности Π΄Π°Π½Π½Ρ‹Ρ… Π² распрСдСлСнных срСдах.

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° упорядочивания

  • ПолноС упорядочиваниС – позволяСт Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ всС сообщСния Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, давая ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ событий Π² систСмС.
  • ЧастичноС упорядочиваниС – позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ сообщСний, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² соотнСсСнии событий.

Π‘Ρ‹Π»ΠΈ рассмотрСны Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для упорядочивания сообщСний:

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ часы

  • Плюс – простота использования.
  • ΠœΠΈΠ½ΡƒΡΡ‹ – Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ вопросы ΠΎ Ρ‚ΠΎΠΌ, часы ΠΊΠ°ΠΊΠΎΠ³ΠΎ сСрвСра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡ… ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ рассинхронизации, ΠΊΠ°ΠΊ ΡƒΡ‡Π΅ΡΡ‚ΡŒ особСнности инфраструктуры ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния.
   Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ часы
Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹Π΅ часы

Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ логичСскиС часы

  • Плюс – Сдиная Ρ‚ΠΎΡ‡ΠΊΠ° отсчСта Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для всСй систСмы.
  • ΠœΠΈΠ½ΡƒΡ – ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠ΅ мСста ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для распрСдСлСнных ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… систСм.
   Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ логичСскиС часы
Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ логичСскиС часы

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸ—„οΈ Π›ΡƒΡ‡ΡˆΠΈΠ΅ стратСгии ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π Π‘Π£Π‘Π”: индСксы, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции

РаспрСдСлСнныС логичСскиС часы (Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅)

ΠŸΠ»ΡŽΡΡ‹:

  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΠ΅, Ρ‚Π°ΠΊ ΠΈ частичноС упорядочиваниС Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π°.
  • КаТдая Ρ‡Π°ΡΡ‚ΡŒ систСмы ΠΈΠΌΠ΅Π΅Ρ‚ свои часы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ появлСнии Π½ΠΎΠ²Ρ‹Ρ… сообщСний ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π₯ΠΎΡ€ΠΎΡˆΠΎ подходят для управлСния слоТными распрСдСлСнными систСмами, помогая Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈ эффСктивно ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.
   Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы
Π’Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы: особСнности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… каТдая систСма Π²Π΅Π΄Π΅Ρ‚ свои собствСнныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ логичСскиС часы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ часах Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ синхронизации. На ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ½ΠΈ прСдставлСны столбцами Clock A ΠΈ Clock B:

-5

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠœΠ°ΡΡ‚Π΅Ρ€ A измСняСт запись ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ своих Часов A. ΠœΠ°ΡΡ‚Π΅Ρ€ B ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запись ΠΈ сравниваСт Π΄Π²Π° значСния часов. Часы B Ρ€Π°Π²Π½Ρ‹ 0 ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Часы A Π±Ρ‹Π»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠœΠ°ΡΡ‚Π΅Ρ€ B ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС ΠΈ пСрСзаписываСт свою запись, синхронизируя Π΅Π΅ с записью ΠœΠ°ΡΡ‚Π΅Ρ€Π° A. Π—Π°Ρ‚Π΅ΠΌ ΠœΠ°ΡΡ‚Π΅Ρ€ B выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΉ ΠΆΠ΅ записи, увСличивая свои Часы B. ΠœΠ°ΡΡ‚Π΅Ρ€ A ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ сообщСниС, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Часы A ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запись.

БущСствуСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ записи происходит ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΎΠ±Π΅ΠΈΡ… систСмах. Π’ этом случаС ΠΎΠ±Π΅ систСмы ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ сообщСниС ΠΎ синхронизации, Π³Π΄Π΅ ΠΈΡ… собствСнныС часы мСньшС, Ρ‡Π΅ΠΌ Ρ‚Π΅, Ρ‡Ρ‚ΠΎ хранятся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π₯отя Ρ‚Π°ΠΊΠΎΠΉ сцСнарий считаСтся Ρ€Π΅Π΄ΠΊΠΈΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² случаС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… мастСров всСгда Β«ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚Β», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ являСтся Β«Π±ΠΎΠ»Π΅Π΅ Π³Π»Π°Π²Π½Ρ‹ΠΌΒ», Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Или, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для опрСдСлСния послСднСй записи. Авторы ΠΎΡΠΎΠ·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ использованиС ΠΌΠ΅Ρ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для опрСдСлСния порядка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ, Π½ΠΎ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° (Ρ‚.Π΅. обновлСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π΅ΠΈΡ… систСмах Π·Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ) считаСтся ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΎΠΉ (ΠΌΠ΅Π½Π΅Π΅ 0.1%). Π’ этом сцСнарии ΠΌΠ΅Ρ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ события Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π² сообщСнии ΠΎ синхронизации.

Π˜Ρ‚ΠΎΠ³ΠΈ кСйса

Π’ контСкстС этого кСйса Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ часы стали ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ – ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части систСмы нСзависимо ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ врСмя, ΠΈ ΠΏΡ€ΠΈ этом обСспСчили ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для согласования Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. РСализация Π±Ρ‹Π»Π° достаточно слоТной:

  • НСобходимо Π±Ρ‹Π»ΠΎ внСсти измСнСния Π² структуру ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π΅ΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° синхронизации.
  • ВсС запросы Π½Π° запись Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ управлСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ часами – ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… часов происходило ΠΊΠ°ΠΊ Сдиная, нСдСлимая опСрация.
  • Алгоритм синхронизации Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±Π΅ΠΈΡ… сторонах.

Π₯отя это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅, ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΎ всС ограничСния, Π° прСимущСства ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ синхронизации Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°Π»ΠΈ всС слоТности.