RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност

Π’ послСдната статия Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° RabbitMQ Π·Π° толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° сС Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠΌ Π² Apache Kafka.

Π’ΡƒΠΊ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ‚Π° Π·Π° рСпликация Π΅ Π΄ΡΠ»ΡŠΡ‚. Всяка Ρ‚Π΅ΠΌΠ° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈ. ВсСки Ρ€Π°Π·Π΄Π΅Π» ΠΈΠΌΠ° Π»ΠΈΠ΄Π΅Ρ€ със ΠΈΠ»ΠΈ Π±Π΅Π· послСдоватСли. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Ρ‚Π΅ΠΌΠ°, Π²ΠΈΠ΅ опрСдСлятС броя Π½Π° дяловСтС ΠΈ ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Π° Π½Π° рСпликация. ΠžΠ±ΠΈΡ‡Π°ΠΉΠ½Π°Ρ‚Π° стойност Π΅ 3, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ: Π΅Π΄ΠΈΠ½ Π»ΠΈΠ΄Π΅Ρ€ ΠΈ Π΄Π²Π°ΠΌΠ° послСдоватСли.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 1. Π§Π΅Ρ‚ΠΈΡ€ΠΈ сСкции са Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Ρ€ΠΈΠΌΠ° Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈ

Всички заявки Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ писанС ΠΎΡ‚ΠΈΠ²Π°Ρ‚ ΠΏΡ€ΠΈ Π»ΠΈΠ΄Π΅Ρ€Π°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС ΠΎΠ±Ρ€ΡŠΡ‰Π°Ρ‚ към послСдоватСли; послСднитС ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ само Π·Π° излишък ΠΈ толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност

ΠŸΠΎΠ²Ρ€Π΅Π΄Π° Π½Π° дяла

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ Π±Ρ€ΠΎΠΊΠ΅Ρ€ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ, Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° няколко сСкции чСсто сС провалят. Π’ΡŠΠ² всСки ΠΎΡ‚ тях послСдоватСл ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ възСл става Π»ΠΈΠ΄Π΅Ρ€. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Ρ‚Π°ΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π½Π° синхронизация ΡΡŠΡ‰ΠΎ влияС: Π΄Π°Π»ΠΈ ΠΈΠΌΠ° синхронизирани послСдоватСли ΠΈ Π°ΠΊΠΎ Π½Π΅, Ρ‚ΠΎΠ³Π°Π²Π° Π΄Π°Π»ΠΈ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ към нСсинхронизирана Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. Но Π΄Π° Π½Π΅ услоТнявамС Π½Π΅Ρ‰Π°Ρ‚Π° засСга.

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 напуска ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΈ сС ΠΈΠ·Π±ΠΈΡ€Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€ Π·Π° сСкция 2 ΠΏΡ€ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 2. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 ΡƒΠΌΠΈΡ€Π° ΠΈ нСговият послСдоватСл Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2 Π΅ ΠΈΠ·Π±Ρ€Π°Π½ Π·Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€ Π½Π° дял 2

Π’ΠΎΠ³Π°Π²Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 напуска ΠΈ сСкция 1 ΡΡŠΡ‰ΠΎ Π³ΡƒΠ±ΠΈ Π»ΠΈΠ΄Π΅Ρ€Π° си, чиято роля ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 3. ΠžΡΡ‚Π°Π½Π° Π΅Π΄ΠΈΠ½ Π±Ρ€ΠΎΠΊΠ΅Ρ€. Всички Π»ΠΈΠ΄Π΅Ρ€ΠΈ са Π½Π° Π΅Π΄ΠΈΠ½ Π±Ρ€ΠΎΠΊΠ΅Ρ€ с Π½ΡƒΠ»Π΅Π²ΠΎ излишък

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 сС Π²ΡŠΡ€Π½Π΅ ΠΎΠ½Π»Π°ΠΉΠ½, Ρ‚ΠΎΠΉ добавя Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΠΌΠ° послСдоватСли, осигурявайки извСстно излишък Π½Π° всСки дял. Но всички Π»ΠΈΠ΄Π΅Ρ€ΠΈ всС ΠΎΡ‰Π΅ остават Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 4. Π›ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ остават Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС появи Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3, сС Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° дял. Но всички Π»ΠΈΠ΄Π΅Ρ€ΠΈ всС ΠΎΡ‰Π΅ са Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 5. НСбалансирано Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈ 1 ΠΈ 3

Kafka ΠΈΠΌΠ° инструмСнт Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ рСбалансиранС Π½Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈ ΠΎΡ‚ RabbitMQ. Π’Π°ΠΌ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ плъгин ΠΈΠ»ΠΈ скрипт Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° страна, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° главния възСл Ρ‡Ρ€Π΅Π· намаляванС Π½Π° излишъка ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π’ допълнСниС, Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ опашки Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° синхронизация.

ΠšΠ°Ρ„ΠΊΠ° ΠΈΠΌΠ° концСпцията Π·Π° β€žΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈβ€œ Π·Π° Π²ΠΎΠ΄Π΅Ρ‰Π°Ρ‚Π° роля. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ дяловС Π½Π° Ρ‚Π΅ΠΌΠΈ, Kafka сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° Ρ‚Π΅Π·ΠΈ ΠΏΡŠΡ€Π²ΠΈ Π»ΠΈΠ΄Π΅Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈ. Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΏΠΎΡ€Π°Π΄ΠΈ рСстартиранС Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°, Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ°Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ възли, ΠΊΠ°ΠΊΡ‚ΠΎ Π² крайния случай, описан ΠΏΠΎ-Π³ΠΎΡ€Π΅.

Π—Π° Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π° Ρ‚ΠΎΠ²Π°, Kafka ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ:

  • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ auto.leader.rebalance.enable=true позволява Π½Π° възСла Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΏΡ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Π²Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
  • ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° стартира скрипта kafka-preferred-replica-election.sh Π·Π° Ρ€ΡŠΡ‡Π½ΠΎ ΠΏΡ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Π²Π°Π½Π΅.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 6. Π Π΅ΠΏΠ»ΠΈΠΊΠΈ слСд рСбалансиранС

Π’ΠΎΠ²Π° бСшС опростСна вСрсия Π½Π° ΠΏΡ€ΠΎΠ²Π°Π»Π°, Π½ΠΎ рСалността Π΅ ΠΏΠΎ-слоТна, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Ρ‚ΡƒΠΊ няма Π½ΠΈΡ‰ΠΎ ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½ΠΎ слоТно. Всичко сС свСТда Π΄ΠΎ синхронизирани Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ (In-Sync Replicas, ISR).

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ (ISR)

ISR Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° дял, ΠΊΠΎΠΉΡ‚ΠΎ сС счита Π·Π° β€žΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½β€œ (Π² синхрон). Има Π»ΠΈΠ΄Π΅Ρ€, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° няма послСдоватСли. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ сС счита Π·Π° синхронизиран, Π°ΠΊΠΎ Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ» Ρ‚ΠΎΡ‡Π½ΠΈ копия Π½Π° всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° replica.lag.time.max.ms.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π» сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ Π½Π°Π±ΠΎΡ€Π° ISR, Π°ΠΊΠΎ:

  • Π½Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ заявка Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° replica.lag.time.max.ms (ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС Π·Π° ΠΌΡŠΡ€Ρ‚ΡŠΠ²)
  • Π½Π΅ успя Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΡ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° replica.lag.time.max.ms (счита сС Π·Π° Π±Π°Π²Π΅Π½)

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ правят заявки Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±ΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° replica.fetch.wait.max.ms, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 500ms.

Π—Π° Π΄Π° обясним ясно Ρ†Π΅Π»Ρ‚Π° Π½Π° ISR, трябва Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΡΡ‚Π° ΠΎΡ‚ производитСля ΠΈ някои сцСнарии Π·Π° нСуспСх. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ ΠΊΠΎΠ³Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅:

  • acks=0, ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°
  • acks=1, ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°, слСд ΠΊΠ°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ написал ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² своя Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΆΡƒΡ€Π½Π°Π»
  • acks=all, ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°, слСд ΠΊΠ°Ρ‚ΠΎ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π² ISR са записали ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅

Π’ тСрминологията Π½Π° Kafka, Π°ΠΊΠΎ ISR Π΅ Π·Π°ΠΏΠ°Π·ΠΈΠ» ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π΅ β€žΠΎΡ‚Π΄Π°Π΄Π΅Π½ΠΎβ€œ. Acks=all Π΅ Π½Π°ΠΉ-бСзопасният Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° добавя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ забавянС. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π° нСуспСх ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° β€žacksβ€œ взаимодСйстват с концСпцията Π·Π° ISR.

Acks=1 ΠΈ ISR

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ Π°ΠΊΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π½Π΅ ΠΈΠ·Ρ‡Π°ΠΊΠ° всяко ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ всички послСдоватСли Π΄Π° бъдС Π·Π°ΠΏΠ°Π·Π΅Π½ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ възмоТна Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ. НавигиранСто Π΄ΠΎ нСсинхронизиран послСдоватСл ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ Ρ‡Ρ€Π΅Π· настройка нСчист.Π»ΠΈΠ΄Π΅Ρ€.ΠΈΠ·Π±ΠΎΡ€ΠΈ.Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ производитСлят ΠΈΠΌΠ° стойност acks=1. Π Π°Π·Π΄Π΅Π»ΡŠΡ‚ Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Ρ€ΠΈΡ‚Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 изостава, Ρ‚ΠΎΠΉ сС синхронизира с Π»ΠΈΠ΄Π΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΈ осСм сСкунди ΠΈ сСга изостава с 7456 ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 1 изостана само с Π΅Π΄Π½Π° сСкунда. ΠΠ°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΡ†Π΅Π½Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ Π±ΡŠΡ€Π·ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° Π±Π°Π²Π½ΠΈ ΠΈΠ»ΠΈ ΠΌΡŠΡ€Ρ‚Π²ΠΈ послСдоватСли, ΠΊΠΎΠΈΡ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π½Π΅ Ρ‡Π°ΠΊΠ°.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 7. ISR с Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 2 сС проваля ΠΈ производитСлят ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ лидСрството ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ към Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1, Π½ΠΈΠ΅ Π³ΡƒΠ±ΠΈΠΌ 123 ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 бСшС част ΠΎΡ‚ ISR, Π½ΠΎ Π½Π΅ бСшС напълно синхронизиран с Π»ΠΈΠ΄Π΅Ρ€Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ°Π΄Π½Π°.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 8. Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° сС губят, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС сринС

Π’ конфигурация bootstrap.ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡΡ‚ ΠΈΠΌΠ° няколко ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΏΠΈΡ‚Π° Π΄Ρ€ΡƒΠ³ Π±Ρ€ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠΉ Π΅ новият Π»ΠΈΠ΄Π΅Ρ€ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° установява Π²Ρ€ΡŠΠ·ΠΊΠ° с Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 9. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ сС възобновява слСд ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 Π΅ ΠΎΡ‰Π΅ ΠΏΠΎ-Π½Π°Π·Π°Π΄. ΠŸΡ€Π°Π²ΠΈ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° синхронизира. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС дълТи Π½Π° Π±Π°Π²Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ със ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Ρ‚.Π½. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π²Π° сС ΠΎΡ‚ ISR. Π‘Π΅Π³Π° ISR сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° - Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚! ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΡ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 10. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 Π΅ отстранСн ΠΎΡ‚ ISR

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΠΏΠ°Π΄Π° ΠΈ лидСрската роля ΠΎΡ‚ΠΈΠ²Π° Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 със Π·Π°Π³ΡƒΠ±Π° Π½Π° 15286 ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ! ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅. ΠŸΡ€Π΅Ρ…ΠΎΠ΄ΡŠΡ‚ към Π»ΠΈΠ΄Π΅Ρ€ извън ISR бСшС възмоТСн само ΠΏΠΎΡ€Π°Π΄ΠΈ настройката unclean.leader.election.enable=true. Ако Π΅ инсталиран Π² Ρ„Π°Π»ΡˆΠΈΠ², Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΡŠΡ‚ няма Π΄Π° сС случи ΠΈ всички заявки Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ запис Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ‡Π°ΠΊΠ°ΠΌΠ΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 Π΄Π° сС Π²ΡŠΡ€Π½Π΅ с Π½Π΅ΠΏΠΎΠΊΡŠΡ‚Π½Π°Ρ‚ΠΈ Π΄Π°Π½Π½ΠΈ Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, която ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ ΠΏΠΎΠ΅ΠΌΠ΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 11. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΠΏΠ°Π΄Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ възникнС ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, голям Π±Ρ€ΠΎΠΉ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ сС губят

ΠŸΡ€ΠΎΠ΄ΡƒΡ†Π΅Π½Ρ‚ΡŠΡ‚ установява Π²Ρ€ΡŠΠ·ΠΊΠ° с послСдния Π±Ρ€ΠΎΠΊΠ΅Ρ€ ΠΈ Π²ΠΈΠΆΠ΄Π°, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π²Π΅Ρ‡Π΅ Π΅ Π»ΠΈΠ΄Π΅Ρ€ Π½Π° сСкцията. Π’ΠΎΠΉ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π΄ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 12. Π‘Π»Π΅Π΄ ΠΊΡ€Π°Ρ‚ΠΊΠ° ΠΏΠ°ΡƒΠ·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ ΠΎΡ‚Π½ΠΎΠ²ΠΎ към сСкция 0

ВидяхмС, Ρ‡Π΅ освСн ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ Π·Π° създаванС Π½Π° Π½ΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€, производитСлят Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π’Π°Π·ΠΈ конфигурация Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° наличност Π·Π° смСтка Π½Π° послСдоватСлност (сигурност Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅). ΠšΠ°Ρ„ΠΊΠ° Π·Π°Π³ΡƒΠ±ΠΈ хиляди ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½ΠΎΠ²ΠΈ писания.

Acks=всички ΠΈ ISR

НСка ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎΠ·ΠΈ сцСнарий ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π½ΠΎ с acks=всички. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 ΠΈΠΌΠ° срСдна латСнтност ΠΎΡ‚ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ сСкунди. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡΡ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с acks=всички, Π° сСга Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π±ΡŠΡ€Π· ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€. Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° бъдС Π·Π°ΠΏΠ°Π·Π΅Π½ΠΎ ΠΎΡ‚ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π² ISR.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 13. ISR с Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Единият Π΅ Π±Π°Π²Π΅Π½, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ забавянС Π½Π° записа

Π‘Π»Π΅Π΄ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ сСкунди Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ забавянС, Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2 ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ack. Всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π²Π΅Ρ‡Π΅ са напълно Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 14. Всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ ack

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 сСга изостава ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈ Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ ΠΎΡ‚ ISR. ЗабавянСто Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² ISR Π½Π΅ са останали Π±Π°Π²Π½ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 2 сСга Ρ‡Π°ΠΊΠ° само Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΠΈ Ρ‚ΠΎΠΉ ΠΈΠΌΠ° срСдСн Π»Π°Π³ ΠΎΡ‚ 500 ms.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 15. Π Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ ISR

Π’ΠΎΠ³Π°Π²Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2 ΠΏΠ°Π΄Π° ΠΈ лидСрството ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 Π±Π΅Π· Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 16. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 2 ΠΏΠ°Π΄Π°

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡΡ‚ Π½Π°ΠΌΠΈΡ€Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€ ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° ΠΌΡƒ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. ЗабавянСто Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ISR сСга сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°! Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ опцията acks=всички Π½Π΅ добавя излишък.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 17. Π Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΠΏΠΎΠ΅ΠΌΠ° Π²ΠΎΠ΄Π΅Ρ‰Π° роля, Π±Π΅Π· Π΄Π° Π³ΡƒΠ±ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 сС срива ΠΈ ΠΏΡ€Π΅Π΄Π½ΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ΠΈΠ²Π° ΠΏΡ€ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 със Π·Π°Π³ΡƒΠ±Π° Π½Π° 14238 ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ!

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 18. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 1 ΡƒΠΌΠΈΡ€Π° ΠΈ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΡŠΡ‚ Π½Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ с нСчиста настройка Π²ΠΎΠ΄ΠΈ Π΄ΠΎ голяма Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ

НС ΠΌΠΎΠΆΠ°Ρ…ΠΌΠ΅ Π΄Π° инсталирамС опцията нСчист.Π»ΠΈΠ΄Π΅Ρ€.ΠΈΠ·Π±ΠΎΡ€ΠΈ.Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π² смисъл вярно. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Ρ€Π°Π²Π½ΠΎ Π½Π° Ρ„Π°Π»ΡˆΠΈΠ². Настройки acks=всички с unclean.leader.election.enable=true осигурява Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ с извСстна Π΄ΠΎΠ±Π°Π²Π΅Π½Π° сигурност Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Но ΠΊΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, всС ΠΎΡ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

Но ΠΊΠ°ΠΊΠ²ΠΎ, Π°ΠΊΠΎ искамС Π΄Π° повишим сигурността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС unclean.leader.election.enable = нСвярно, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·ΠΈ ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ. Ако Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΠ°Π΄Π½Π΅ силно ΠΈ Π²Π·Π΅ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ със сСбС си, Ρ‚ΠΎΠ³Π°Π²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° всС ΠΎΡ‰Π΅ сС губят, плюс наличността сС Π³ΡƒΠ±ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π΅ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ ситуацията.

По-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ са излишни ΠΈ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΈΠ·Ρ…Π²ΡŠΡ€Π»Π΅Ρ‚Π΅ записа. Π’ΠΎΠ³Π°Π²Π°, ΠΏΠΎΠ½Π΅ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°, Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ възмоТна само Π² случай Π½Π° Π΄Π²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ.

Acks=всички, min.insync.replicas ΠΈ ISR

Π‘ конфигурация Π½Π° Ρ‚Π΅ΠΌΠ°Ρ‚Π° min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ПовишавамС Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° сигурност Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. НСка ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· послСдната част ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ сцСнарий, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ с min.insync.replicas=2.

Π’Π°ΠΊΠ° Ρ‡Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€ 2 ΠΈΠΌΠ° Π²ΠΎΠ΄Π΅Ρ‰ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° ΠΈ послСдоватСлят Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ ISR.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 19. ISR ΠΎΡ‚ Π΄Π²Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ

Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 2 ΠΏΠ°Π΄Π° ΠΈ лидСрството ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 Π±Π΅Π· Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Но сСга ISR сС ΡΡŠΡΡ‚ΠΎΠΈ само ΠΎΡ‚ Π΅Π΄Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°. Π’ΠΎΠ²Π° Π½Π΅ отговаря Π½Π° минималния Π±Ρ€ΠΎΠΉ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° записи ΠΈ слСдоватСлно Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ отговаря Π½Π° ΠΎΠΏΠΈΡ‚Π° Π·Π° запис с Π³Ρ€Π΅ΡˆΠΊΠ° NotEnoughReplicas.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 20. Броят Π½Π° ISR Π΅ с Π΅Π΄ΠΈΠ½ ΠΏΠΎ-малък ΠΎΡ‚ посочСния Π² min.insync.replicas

Π’Π°Π·ΠΈ конфигурация ΠΆΠ΅Ρ€Ρ‚Π²Π° наличността Π·Π° послСдоватСлност. ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΠΌ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Π½ΠΈΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ Ρ‚ΠΎ Π΅ написано Π² ΠΏΠΎΠ½Π΅ Π΄Π²Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π’ΠΎΠ²Π° Π΄Π°Π²Π° Π½Π° производитСля ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ увСрСност. Π’ΡƒΠΊ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π΅ възмоТна само Π°ΠΊΠΎ Π΄Π²Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ сС провалят Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ бъдС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½ΠΎ към Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ послСдоватСл, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ вСроятно. Но Π°ΠΊΠΎ стС супСр ΠΏΠ°Ρ€Π°Π½ΠΎΠΈΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Π° Π½Π° рСпликация Π½Π° 5 ΠΈ min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ с 3. Π’ΡƒΠΊ Ρ‚Ρ€ΠΈΠΌΠ° Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° трябва Π΄Π° ΠΏΠ°Π΄Π½Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π·Π° Π΄Π° загубят Ρ€Π΅ΠΊΠΎΡ€Π΄Π°! Π Π°Π·Π±ΠΈΡ€Π° сС, Π²ΠΈΠ΅ ΠΏΠ»Π°Ρ‰Π°Ρ‚Π΅ Π·Π° Ρ‚Π°Π·ΠΈ надСТдност Π² Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ забавянС.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° сигурността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅

ΠšΠ°ΠΊΡ‚ΠΎ Π² случай с RabbitMQ, понякога Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚Ρ‚Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° сигурността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Π•Ρ‚ΠΎ Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ трябва Π΄Π° помислитС:

  • МоТС Π»ΠΈ издатСлят просто Π΄Π° Π²ΡŠΡ€Π½Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π° услугата Π½Π°Π³ΠΎΡ€Π΅ ΠΈΠ»ΠΈ потрСбитСля Π΄Π° ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΏΠΎ-късно?
  • МоТС Π»ΠΈ издатСлят Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΠΎΠΏΠΈΡ‚Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΏΠΎ-късно?

Ако ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ Π΅ Π½Π΅, Ρ‚ΠΎΠ³Π°Π²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° наличността подобрява сигурността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Π©Π΅ Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ наличност вмСсто Π΄Π° Π½Π΅ записватС. Π’Π°ΠΊΠ° всичко сС свСТда Π΄ΠΎ Π½Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° баланс, Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ зависи ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ‚Π° ситуация.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ISR

ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ ISR Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ оптималния баланс ΠΌΠ΅ΠΆΠ΄Ρƒ сигурност Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ латСнтност. НапримСр, осигурСтС наличност Π² случай Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π° Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΉΠΊΠΈ Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΡŠΡ€Ρ‚Π²ΠΈ ΠΈΠ»ΠΈ Π±Π°Π²Π½ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° латСнтността.

НиС сами ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ replica.lag.time.max.ms спорСд Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΊΠΎΠ»ΠΊΠΎ забавянС смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ acks=всички. Бтойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ дСсСт сСкунди. Ако Ρ‚ΠΎΠ²Π° Π΅ Ρ‚Π²ΡŠΡ€Π΄Π΅ дълго Π·Π° вас, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅. Π’ΠΎΠ³Π°Π²Π° чСстотата Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ISR Ρ‰Π΅ сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ послСдоватСлитС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½ΠΈ ΠΈ добавяни ΠΏΠΎ-чСсто.

RabbitMQ Π΅ просто Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΎΠ³Π»Π΅Π΄Π°Π»Π°, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΏΠΈΡ€Π°Π½ΠΈ. Π‘Π°Π²Π½ΠΈΡ‚Π΅ ΠΎΠ³Π»Π΅Π΄Π°Π»Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° латСнтност ΠΈ ΠΌΡŠΡ€Ρ‚Π²ΠΈΡ‚Π΅ ΠΎΠ³Π»Π΅Π΄Π°Π»Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ провСряват наличността Π½Π° всСки възСл (net tick), отговорят. ISR Π΅ интСрСсСн Π½Π°Ρ‡ΠΈΠ½ Π·Π° избягванС Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Но рискувамС Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΠΌ излишък, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ISR ΠΌΠΎΠΆΠ΅ Π΄Π° сС свиС само Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°. Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ риск, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ настройката min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.

Гаранция Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ° с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Π’ настройкитС bootstrap.ΡΡŠΡ€Π²ΡŠΡ€ΠΈ производитСлят ΠΈ потрСбитСлят ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° посочат мноТСство Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ. Π˜Π΄Π΅ΡΡ‚Π° Π΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ възСл ΠΏΠ°Π΄Π½Π΅, остават няколко Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ, с ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ°. Π’ΠΎΠ²Π° Π½Π΅ са Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΠΈ Π½Π° сСкции, Π° просто Ρ‚Ρ€Π°ΠΌΠΏΠ»ΠΈΠ½ Π·Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠΏΠΈΡ‚Π° ΠΊΠΎΠΉ възСл хоства Π»ΠΈΠ΄Π΅Ρ€Π° Π½Π° дяла Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅/запис.

Π’ RabbitMQ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ с всСки възСл ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΡ‚ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявката Π΄ΠΎ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ трябва Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ RabbitMQ. Kafka изисква ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ към възСла, ΠΊΠΎΠΉΡ‚ΠΎ хоства ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Π»ΠΈΠ΄Π΅Ρ€ Π½Π° дял. Π’ Ρ‚Π°ΠΊΠ°Π²Π° ситуация Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ. списък bootstrap.ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π˜Π·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΄Π° ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΈ Π΄Π° намСрят ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅ възли слСд ΠΏΠΎΠ²Ρ€Π΅Π΄Π°.

ΠšΠΎΠ½ΡΠ΅Π½ΡΡƒΡΠ½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠšΠ°Ρ„ΠΊΠ°

ДосСга Π½Π΅ смС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π»ΠΈ ΠΊΠ°ΠΊ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π½Π°ΡƒΡ‡Π°Π²Π° Π·Π° ΠΏΠ°Π΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° ΠΈ ΠΊΠ°ΠΊ сС ΠΈΠ·Π±ΠΈΡ€Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€. Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Kafka Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ дяловС, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ консСнсусната Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°.

ВсСки ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kafka сС внСдрява Π·Π°Π΅Π΄Π½ΠΎ с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Zookeeper, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° услуга Π·Π° консСнсус, която позволява Π½Π° систСмата Π΄Π° постигнС консСнсус Π·Π° Π΄Π°Π΄Π΅Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π²Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π° послСдоватСлността ΠΏΡ€Π΅Π΄ наличността. Изисква сС ΡΡŠΠ³Π»Π°ΡΠΈΠ΅Ρ‚ΠΎ Π½Π° мнозинството ΠΎΡ‚ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π° Zookeeper Π·Π° одобряванС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ запис.

Zookeeper ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

  • Бписък с Ρ‚Π΅ΠΌΠΈ, Ρ€Π°Π·Π΄Π΅Π»ΠΈ, конфигурация, Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ.
  • Π§Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. ВсСки Π±Ρ€ΠΎΠΊΠ΅Ρ€ ΠΏΠΈΠ½Π³Π²Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Zookeeper. Ако Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ping Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° Zookeeper записва Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½.
  • Π˜Π·Π±ΠΎΡ€ Π½Π° основни ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΈ възли Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π°.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡΡ‚ възСл Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Kafka, ΠΊΠΎΠΉΡ‚ΠΎ отговаря Π·Π° ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Zookeeper ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° извСстия Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° относно члСнството Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Ρ‚Π΅ΠΌΠΈΡ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ трябва Π΄Π° дСйства спрямо Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

НапримСр, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ Π½ΠΎΠ²Π° Ρ‚Π΅ΠΌΠ° с дСсСт дяла ΠΈ ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ Π½Π° рСпликация 3. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ трябва Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ Π»ΠΈΠ΄Π΅Ρ€ Π·Π° всСки дял, ΠΎΠΏΠΈΡ‚Π²Π°ΠΉΠΊΠΈ сС Π΄Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈΡ‚Π΅.

Π—Π° всСки ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ Π½Π° сСкция:

  • Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° информация Π² Zookeeper Π·Π° ISR ΠΈ Π»ΠΈΠ΄Π΅Ρ€;
  • Π˜Π·ΠΏΡ€Π°Ρ‰Π° LeaderAndISRCommand Π΄ΠΎ всСки Π±Ρ€ΠΎΠΊΠ΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ хоства Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° Ρ‚ΠΎΠ·ΠΈ дял, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈΡ‚Π΅ Π·Π° ISR ΠΈ Π»ΠΈΠ΄Π΅Ρ€Π°.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ с Π»ΠΈΠ΄Π΅Ρ€ ΠΏΠ°Π΄Π½Π΅, Zookeeper ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° извСстиС Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° ΠΈ Ρ‚ΠΎΠΉ ΠΈΠ·Π±ΠΈΡ€Π° Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€. ΠžΡ‚Π½ΠΎΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ ΠΏΡŠΡ€Π²ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Zookeeper ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎ всСки Π±Ρ€ΠΎΠΊΠ΅Ρ€, увСдомявайки Π³ΠΈ Π·Π° промяната Π½Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ.

ВсСки Π»ΠΈΠ΄Π΅Ρ€ Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° Π½Π°Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ISR. Настройки replica.lag.time.max.ms опрСдСля ΠΊΠΎΠΉ Ρ‰Π΅ Π²Π»Π΅Π·Π΅ Ρ‚Π°ΠΌ. ΠšΠΎΠ³Π°Ρ‚ΠΎ ISR сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΡ€Π΅Π΄Π°Π²Π° Π½ΠΎΠ²Π° информация Π½Π° Zookeeper.

Zookeeper Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ Π·Π° всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² случай Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΠ»Π°Π²Π½ΠΎ към Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 21. ΠšΠΎΠ½ΡΠ΅Π½ΡΡƒΡ Π½Π° ΠšΠ°Ρ„ΠΊΠ°

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° рСпликация

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ Π½Π° рСпликацията Π²ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈΡ‚Π΅ сцСнарии Π·Π° Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

Заявки Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±ΠΈ, отмСстванС Π² края Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° (LEO) ΠΈ Π·Π½Π°ΠΊ Π·Π° висока Π²ΠΎΠ΄Π° (HW)

БмятамС, Ρ‡Π΅ послСдоватСлитС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°. Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»ΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 500 ms. Π’ΠΎΠ²Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ RabbitMQ ΠΏΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π² RabbitMQ рСпликацията Π½Π΅ сС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π° ΠΎΡ‚ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎΡ‚ΠΎ Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, Π° ΠΎΡ‚ главния. ΠœΠ°ΠΉΡΡ‚ΠΎΡ€ΡŠΡ‚ натиска ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΠ³Π»Π΅Π΄Π°Π»Π°Ρ‚Π°.

Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΈ всички послСдоватСли Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ отмСстванСто Π½Π° края Π½Π° Ρ‚Ρ€ΡƒΠΏΠ° (LEO) ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Highwater (HW). ΠœΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° LEO ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° отмСстванСто Π½Π° послСдното ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°, Π° HW Π΄ΡŠΡ€ΠΆΠΈ отмСстванСто Π½Π° послСдния ΠΊΠΎΠΌΠΈΡ‚. НС забравяйтС, Ρ‡Π΅ Π·Π° статус Π½Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½Π΅, ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° сС Π·Π°ΠΏΠ°Π·ΠΈ във всички ISR Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ LEO ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π½Π°ΠΏΡ€Π΅Π΄ ΠΎΡ‚ HW.

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠΉ Π³ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ ΠΏΡ€Π°Π²ΠΈ заявка Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π° своя LEO. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ LEO, ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅Π΄Π°Π²Π° тСкущия HW. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ информация, Ρ‡Π΅ всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ са ΡΡŠΡ…Ρ€Π°Π½ΠΈΠ»ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ отмСстванС, Ρ‚ΠΎΠΉ прСмСства Π·Π½Π°ΠΊΠ° HW. Π‘Π°ΠΌΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° прСмСсти HW ΠΈ Ρ‚Π°ΠΊΠ° всички послСдоватСли Ρ‰Π΅ знаят Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° стойност Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° тяхната заявка. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ послСдоватСлитС ΠΌΠΎΠΆΠ΅ Π΄Π° изостават ΠΎΡ‚ Π»ΠΈΠ΄Π΅Ρ€Π° ΠΊΠ°ΠΊΡ‚ΠΎ Π² посланиСто, Ρ‚Π°ΠΊΠ° ΠΈ Π² знанията Π·Π° HW. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ само Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° HW.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ β€žΠ·Π°ΠΏΠ°Π·Π΅Π½β€œ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° записан Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π° Π½Π΅ Π½Π° диска. Π—Π° производитСлност Kafka сС синхронизира с диск Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». RabbitMQ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° Ρ‚Π°ΠΊΡŠΠ² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π½ΠΎ Ρ‚ΠΎΠΉ Ρ‰Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° издатСля само слСд ΠΊΠ°Ρ‚ΠΎ главният ΠΈ всички ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ са записали ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° диска. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Kafka, ΠΎΡ‚ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° производитСлност, Ρ€Π΅ΡˆΠΈΡ…Π° Π΄Π° изпратят ack Π²Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ бъдС записано Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠšΠ°Ρ„ΠΊΠ° Π·Π°Π»Π°Π³Π°, Ρ‡Π΅ ΠΈΠ·Π»ΠΈΡˆΡŠΠΊΡŠΡ‚ компСнсира риска ΠΎΡ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ само Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

ΠŸΡ€ΠΎΠ²Π°Π» Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΠ°Π΄Π½Π΅, Zookeeper увСдомява ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° ΠΈ Ρ‚ΠΎΠΉ ΠΈΠ·Π±ΠΈΡ€Π° Π½ΠΎΠ²Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°. Новият Π»ΠΈΠ΄Π΅Ρ€ опрСдСля Π½ΠΎΠ²Π° HW ΠΌΠ°Ρ€ΠΊΠ° спорСд своя LEO. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° послСдоватСлитС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ информация Π·Π° новия Π»ΠΈΠ΄Π΅Ρ€. Π’ зависимост ΠΎΡ‚ вСрсията Π½Π° Kafka, послСдоватСлят Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π΄Π²Π° сцСнария:

  1. Π’ΠΎΠΉ Ρ‰Π΅ ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ локалния Π΄Π½Π΅Π²Π½ΠΈΠΊ Π΄ΠΎ извСстна HW ΠΈ Ρ‰Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ заявка Π΄ΠΎ новия Π»ΠΈΠ΄Π΅Ρ€ Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ слСд Ρ‚ΠΎΠ·ΠΈ Π·Π½Π°ΠΊ.
  2. Π©Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ заявка Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°, Π·Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ HW ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ ΠΈΠ·Π±Ρ€Π°Π½ Π·Π° Π»ΠΈΠ΄Π΅Ρ€, ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΠ²Π° отмСстванС. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° отмСстванС.

МоТС Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ послСдоватСл Π΄Π° ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ рСгистрационния Ρ„Π°ΠΉΠ» ΠΏΠΎΡ€Π°Π΄ΠΈ слСднитС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ:

  • ΠšΠΎΠ³Π°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ послСдоватСл Π² Π½Π°Π±ΠΎΡ€Π° ISR, рСгистриран Π² Zookeeper, ΠΏΠ΅Ρ‡Π΅Π»ΠΈ ΠΈΠ·Π±ΠΎΡ€ΠΈΡ‚Π΅ ΠΈ става Π»ΠΈΠ΄Π΅Ρ€. Всички послСдоватСли Π½Π° ISR, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ сС считат Π·Π° β€žΠ² ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½β€œ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ са ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ копия Π½Π° всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΎΡ‚ бившия Π»ΠΈΠ΄Π΅Ρ€. Напълно възмоТно Π΅ прСдставСният послСдоватСл Π΄Π° Π½Π΅ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с Π½Π°ΠΉ-Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠΏΠΈΠ΅. ΠšΠ°Ρ„ΠΊΠ° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ няма Ρ€Π°Π·ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡ, всСки послСдоватСл трябва Π΄Π° ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ своя Π΄Π½Π΅Π²Π½ΠΈΠΊ Π΄ΠΎ HW стойността Π½Π° новия Π»ΠΈΠ΄Π΅Ρ€ към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ. Π’ΠΎΠ²Π° Π΅ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π° настройка acks=всички Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½ΠΎ Π·Π° послСдоватСлността.
  • Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ сС записват Π½Π° диск. Ако всички възли Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° сС поврСдят Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ отмСствания Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈ Π½Π° дисковСтС. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈΡ‚Π΅ сС Π²ΡŠΡ€Π½Π°Ρ‚ ΠΎΠ½Π»Π°ΠΉΠ½, новият Π»ΠΈΠ΄Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΈΠ·Π±Ρ€Π°Π½, Π΄Π° Π΅ Π·Π°Π΄ своитС послСдоватСли, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠΉ Π΅ Π±ΠΈΠ» записан Π½Π° диск ΠΏΡ€Π΅Π΄ΠΈ останалитС.

ОбСдинСниС с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°

ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ ΠΎΡ‚Π½ΠΎΠ²ΠΎ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ правят ΡΡŠΡ‰ΠΎΡ‚ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ: Ρ‚Π΅ провСряват Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° ΠΈ ΡΡŠΠΊΡ€Π°Ρ‰Π°Π²Π°Ρ‚ своя Π΄Π½Π΅Π²Π½ΠΈΠΊ Π΄ΠΎ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° HW (ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π±ΠΎΡ€Π°). Π—Π° сравнСниС, RabbitMQ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ‚Π΅ възли ΠΊΠ°Ρ‚ΠΎ напълно Π½ΠΎΠ²ΠΈ. И Π² Π΄Π²Π°Ρ‚Π° случая Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Ρ всяко ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. Ако сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° синхронизация, Ρ‚ΠΎΠ³Π°Π²Π° главният трябва Π΄Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ цялото Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ към Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€žΠΎΡΡ‚Π°Π²Π΅Ρ‚Π΅ цСлия свят Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°β€œ. Главният Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈΠ»ΠΈ запис ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‚Π°Π·ΠΈ опСрация. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ създава ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ опашки.

Kafka Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΆΡƒΡ€Π½Π°Π» ΠΈ ΠΊΠ°Ρ‚ΠΎ цяло ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΎΡ‚ RabbitMQ опашка, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Ρ‚ ΠΎΡ‚ ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, слСд ΠΊΠ°Ρ‚ΠΎ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ΠΈ. АктивнитС опашки трябва Π΄Π° останат относитСлно ΠΌΠ°Π»ΠΊΠΈ. Но Kafka Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊ със собствСна ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π·Π°Π΄ΡŠΡ€ΠΆΠ°Π½Π΅, която ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π΄Π½ΠΈ ΠΈΠ»ΠΈ сСдмици. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° опашка ΠΈ пълна синхронизация Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ² Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΆΡƒΡ€Π½Π°Π». ВмСсто Ρ‚ΠΎΠ²Π°, послСдоватСлитС Π½Π° ΠšΠ°Ρ„ΠΊΠ° просто ΡΡŠΠΊΡ€Π°Ρ‰Π°Π²Π°Ρ‚ своя Π΄Π½Π΅Π²Π½ΠΈΠΊ Π΄ΠΎ HW Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° (ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ), Π°ΠΊΠΎ тяхното ΠΊΠΎΠΏΠΈΠ΅ Π΅ ΠΏΡ€Π΅Π΄ Π»ΠΈΠ΄Π΅Ρ€Π°. Π’ ΠΏΠΎ-вСроятния случай, ΠΊΠΎΠ³Π°Ρ‚ΠΎ послСдоватСлят изостава, Ρ‚ΠΎΠΉ просто Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ тСкущия си LEO.

Нови ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ сС ΠΎΡ‚Π½ΠΎΠ²ΠΎ послСдоватСли Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ извън ISR ΠΈ Π½Π΅ участват Π² Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ. Π’Π΅ просто работят Π·Π°Π΅Π΄Π½ΠΎ с Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ възмоТно Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΎ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ настигнат Π»ΠΈΠ΄Π΅Ρ€Π° ΠΈ влязат Π² ISR. Няма Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ ΠΈ няма Π½ΡƒΠΆΠ΄Π° Π΄Π° ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚Π΅ всичкитС си Π΄Π°Π½Π½ΠΈ.

ΠŸΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°

Kafka ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΎΡ‚ RabbitMQ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΈΠΌΠ° ΠΏΠΎ-слоТСн Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ повСдСния, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ бъдС ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚. Но Kafka ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° са ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ обмислСни.

По-Π΄ΠΎΠ»Ρƒ са Π΄Π°Π΄Π΅Π½ΠΈ няколко сцСнария Π·Π° Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°:

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π΅ Π²ΠΈΠΆΠ΄Π° Π»ΠΈΠ΄Π΅Ρ€Π°, Π½ΠΎ всС ΠΏΠ°ΠΊ Π²ΠΈΠΆΠ΄Π° пазитСля Π½Π° Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ°.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π½Π΅ Π²ΠΈΠΆΠ΄Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ послСдоватСли, Π½ΠΎ всС ΠΎΡ‰Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π²ΠΈΠΆΠ΄Π° Π»ΠΈΠ΄Π΅Ρ€Π°, Π½ΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π° ΠΏΠ°Π·Π°Ρ‡Π° Π½Π° Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ°.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 4: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π²ΠΈΠΆΠ΄Π° послСдоватСлитС, Π½ΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π° пазитСля Π½Π° Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ°.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 5: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π΅ напълно ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ възли Π½Π° Kafka, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ Zookeeper.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ напълно ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ възли Π½Π° Kafka, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ Zookeeper.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 7: Π’ΡŠΠ·Π΅Π»ΡŠΡ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° Π½Π° Kafka Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈ Π΄Ρ€ΡƒΠ³ възСл Π½Π° Kafka.
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 8: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Kafka Π½Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper.

ВсСки сцСнарий ΠΈΠΌΠ° своС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π΅ Π²ΠΈΠΆΠ΄Π° Π»ΠΈΠ΄Π΅Ρ€Π°, Π½ΠΎ всС ΠΎΡ‰Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 22. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: ISR Π½Π° Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ

ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° раздСля Π±Ρ€ΠΎΠΊΠ΅Ρ€ 3 ΠΎΡ‚ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈ 1 ΠΈ 2, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΡ‚ Zookeeper. Π‘Ρ€ΠΎΠΊΠ΅Ρ€ 3 Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Ρ‚Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅ replica.lag.time.max.ms Ρ‚ΠΎΠΉ Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ ΠΎΡ‚ ISR ΠΈ Π½Π΅ участва Π² Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°, Ρ‚ΠΎΠΉ Ρ‰Π΅ възобнови заявкитС Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ ΠΈ Ρ‰Π΅ сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΠΈ към ISR, ΠΊΠΎΠ³Π°Ρ‚ΠΎ настигнС Π»ΠΈΠ΄Π΅Ρ€Π°. Zookeeper Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ping ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅, Ρ‡Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ Π΅ ΠΆΠΈΠ² ΠΈ Π·Π΄Ρ€Π°Π².

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 23. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 1: Π‘Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ ISR, Π°ΠΊΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ Π½Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ заявка Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° replica.lag.time.max.ms

Няма Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ мозък ΠΈΠ»ΠΈ спиранС Π½Π° възли ΠΊΠ°Ρ‚ΠΎ Π² RabbitMQ. ВмСсто Ρ‚ΠΎΠ²Π° ΠΈΠ·Π»ΠΈΡˆΡŠΠΊΡŠΡ‚ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π½Π΅ Π²ΠΈΠΆΠ΄Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ послСдоватСли, Π½ΠΎ всС ΠΎΡ‰Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 24. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2. Π›ΠΈΠ΄Π΅Ρ€ ΠΈ Π΄Π²Π°ΠΌΠ° послСдоватСли

ΠŸΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ раздСля Π»ΠΈΠ΄Π΅Ρ€Π° ΠΎΡ‚ послСдоватСлитС, Π½ΠΎ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ всС ΠΎΡ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈ Zookeeper. ΠšΠ°ΠΊΡ‚ΠΎ Π² ΠΏΡŠΡ€Π²ΠΈΡ сцСнарий, ISR сС свива, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ само Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всички послСдоватСли спират Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅. ΠžΡ‚Π½ΠΎΠ²ΠΎ няма Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ВмСсто Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° Π·Π°Π³ΡƒΠ±Π° Π½Π° излишък Π·Π° Π½ΠΎΠ²ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π½Π΅ бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°. Zookeeper ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠΈΠ½Π³ΠΎΠ²Π΅ ΠΈ вярва, Ρ‡Π΅ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ Π΅ ΠΆΠΈΠ² ΠΈ Π·Π΄Ρ€Π°Π².

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 25. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 2. ISR сС Π΅ свил само Π΄ΠΎ Π»ΠΈΠ΄Π΅Ρ€Π°

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π²ΠΈΠΆΠ΄Π° Π»ΠΈΠ΄Π΅Ρ€Π°, Π½ΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π° пазитСля Π½Π° зоологичСската Π³Ρ€Π°Π΄ΠΈΠ½Π°

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ Zookeeper, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΡ‚ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° с Π»ΠΈΠ΄Π΅Ρ€Π°. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° послСдоватСлят ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ ΠΈ Π΄Π° бъдС Ρ‡Π»Π΅Π½ Π½Π° ISR. Zookeeper Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠΈΠ½Π³ΠΎΠ²Π΅ ΠΈ рСгистрира срив Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€, Π½ΠΎ Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ само послСдоватСл, няма послСдствия слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 26. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 3: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π²ΠΎΠ΄Π°Ρ‡Π°

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 4. Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π²ΠΈΠΆΠ΄Π° послСдоватСли, Π½ΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 27. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 4. Π›ΠΈΠ΄Π΅Ρ€ ΠΈ Π΄Π²Π°ΠΌΠ° послСдоватСли

Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ Zookeeper, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΡ‚ Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΈΡ‚Π΅ с послСдоватСли.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 28. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 4: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΎΡ‚ Zookeeper

Π‘Π»Π΅Π΄ извСстно Π²Ρ€Π΅ΠΌΠ΅ Zookeeper Ρ‰Π΅ рСгистрира Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° ΠΈ Ρ‰Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈ администратора Π·Π° Ρ‚ΠΎΠ²Π°. Π’ΠΎΠΉ Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€ срСд своитС послСдоватСли. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ ΠΎΠ±Π°Ρ‡Π΅ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° мисли, Ρ‡Π΅ Π΅ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° записи ΠΎΡ‚ acks=1. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΡƒ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠΉ Ρ‰Π΅ Π³ΠΈ смята Π·Π° ΠΌΡŠΡ€Ρ‚Π²ΠΈ ΠΈ Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° свиС ISR Π΄ΠΎ сСбС си. Но Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ няма Π²Ρ€ΡŠΠ·ΠΊΠ° със Zookeeper, няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π° ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ Π΄Ρ€ΡƒΠ³ΠΈ записи.

БообщСния acks=всички няма Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ISR ΠΏΡŠΡ€Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π½Π΅ достигат Π΄ΠΎ тях. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Π³ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ ΠΎΡ‚ ISR, Ρ‚ΠΎΠΉ няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Ρ‰Π΅ спрС Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ скоро забСлязват промяната Π² Π»ΠΈΠ΄Π΅Ρ€Π° ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ записи към новия ΡΡŠΡ€Π²ΡŠΡ€. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°, оригиналният Π»ΠΈΠ΄Π΅Ρ€ Π²ΠΈΠΆΠ΄Π°, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π»ΠΈΠ΄Π΅Ρ€ ΠΈ ΡΡŠΠΊΡ€Π°Ρ‰Π°Π²Π° своя ΠΆΡƒΡ€Π½Π°Π» Π΄ΠΎ HW стойността, която новият Π»ΠΈΠ΄Π΅Ρ€ Π΅ ΠΈΠΌΠ°Π» Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ Ρ€Π°Π·ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π² ΠΆΡƒΡ€Π½Π°Π»Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° новия Π»ΠΈΠ΄Π΅Ρ€. Всички записи ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ Π»ΠΈΠ΄Π΅Ρ€, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½ΠΈ към новия Π»ΠΈΠ΄Π΅Ρ€, сС губят. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π±ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΠΈ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ Π»ΠΈΠ΄Π΅Ρ€ Π² Ρ‚Π΅Π·ΠΈ няколко сСкунди, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π²Π° Π»ΠΈΠ΄Π΅Ρ€Π° са Ρ€Π°Π±ΠΎΡ‚ΠΈΠ»ΠΈ, Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 29. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 4. Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π½Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ 1 става послСдоватСл слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 5: ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π΅ напълно ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ възли Π½Π° Kafka, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ Zookeeper

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π΅ напълно ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ възли Π½Π° Kafka, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ Zookeeper. Π’ΠΎΠΉ просто сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ ISR, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π΅ бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°, ΠΈ слСд Ρ‚ΠΎΠ²Π° настига останалитС.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 30. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 5: Π˜Π·ΠΎΠ»ΠΈΡ€Π°Π½ послСдоватСл сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΎΡ‚ ISR

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6: Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ напълно ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ възли Π½Π° Kafka, Ρ‚Π°ΠΊΠ° ΠΈ ΠΎΡ‚ Zookeeper

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 31. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6. Π›ΠΈΠ΄Π΅Ρ€ ΠΈ Π΄Π²Π°ΠΌΠ° послСдоватСли

Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Π΅ напълно ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ ΠΎΡ‚ своитС послСдоватСли, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° ΠΈ Zookeeper. Π—Π° ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° записи ΠΎΡ‚ acks=1.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 32. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6: Π˜Π·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ възли Π½Π° Kafka ΠΈ Zookeeper

НС са ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ заявки слСд ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ replica.lag.time.max.ms, Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° свиС ISR Π΄ΠΎ сСбС си, Π½ΠΎ няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ няма комуникация със Zookeeper, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ спрС Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° записи.

ΠœΠ΅ΠΆΠ΄ΡƒΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Zookeeper Ρ‰Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° изолирания Π±Ρ€ΠΎΠΊΠ΅Ρ€ ΠΊΠ°Ρ‚ΠΎ ΠΌΡŠΡ€Ρ‚ΡŠΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 33. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6. Π”Π²Π°ΠΌΠ° Π»ΠΈΠ΄Π΅Ρ€ΠΈ

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° записи Π·Π° няколко сСкунди, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° спира Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° всякакви ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π½Π° всСки 60 сСкунди с Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ. Π’Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΈ Π·Π° смяната Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° ΠΈ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ записи Π½Π° новия Π»ΠΈΠ΄Π΅Ρ€.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 34. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6: ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Ρ‚ към Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€

Всички ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈ записи, Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ Π»ΠΈΠ΄Π΅Ρ€ слСд Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°, ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ Ρ‰Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Ρ‡Ρ€Π΅Π· Zookeeper, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π»ΠΈΠ΄Π΅Ρ€. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΡΡŠΠΊΡ€Π°Ρ‚ΠΈ своя Π΄Π½Π΅Π²Π½ΠΈΠΊ Π΄ΠΎ HW Π½Π° новия Π»ΠΈΠ΄Π΅Ρ€ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π±ΠΎΡ€ΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявки ΠΊΠ°Ρ‚ΠΎ послСдоватСл.

RabbitMQ срСщу Kafka: ВолСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ висока наличност
ΠžΡ€ΠΈΠ·. 35. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 6: ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ става послСдоватСл слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚

Π’ Ρ‚Π°Π·ΠΈ ситуация ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡ‚ΡŠΠΏΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½Π° раздяла Π·Π° ΠΊΡ€Π°Ρ‚ΡŠΠΊ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π½ΠΎ само Π°ΠΊΠΎ acks=1 ΠΈ min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΡΡŠΡ‰ΠΎ 1. ЛогичСското раздСлянС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π° ΠΈΠ»ΠΈ слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ Ρ€Π°Π·Π±Π΅Ρ€Π΅, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π»ΠΈΠ΄Π΅Ρ€, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚, Ρ‡Π΅ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ» ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ Π½Π° новия Π»ΠΈΠ΄Π΅Ρ€ - ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚ Π΄Π²Π΅Ρ‚Π΅ сС случи ΠΏΡŠΡ€Π²ΠΎ. Π’ΡŠΠ² всСки случай някои ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ, Π½ΠΎ само с acks=1.

Има Π΄Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ сцСнарий, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π΄Π° сС Ρ€Π°Π·Π΄Π΅Π»ΠΈ, послСдоватСлитС изостават ΠΈ Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ компрСсира ISR само Π΄ΠΎ сСбС си. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π° ΠΏΠΎΡ€Π°Π΄ΠΈ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. Π˜Π·Π±ΠΈΡ€Π° сС Π½ΠΎΠ² Π»ΠΈΠ΄Π΅Ρ€, Π½ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ Π»ΠΈΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄ΠΎΡ€ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° записи acks=всички, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² ISR няма Π½ΠΈΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ освСн Π½Π΅Π³ΠΎ. Π’Π΅Π·ΠΈ записи Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ, слСд ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°. ЕдинствСният Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ опция Π΅ min.insync.replicas = 2.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 7: Kafka Controller Node Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈ Π΄Ρ€ΡƒΠ³ Kafka Node

ΠšΠ°Ρ‚ΠΎ цяло, слСд ΠΊΠ°Ρ‚ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° с Kafka възСл бъдС Π·Π°Π³ΡƒΠ±Π΅Π½Π°, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π° Π½ΠΈΠΊΠ°ΠΊΠ²Π° информация Π·Π° промяна Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° към Π½Π΅Π³ΠΎ. Π’ Π½Π°ΠΉ-лошия случай Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½Π° Π»ΠΎΠ³ΠΈΡ‡Π½Π° раздяла, ΠΊΠ°ΠΊΡ‚ΠΎ Π² сцСнарий 6. По-чСсто Π±Ρ€ΠΎΠΊΠ΅Ρ€ΡŠΡ‚ просто няма Π΄Π° станС ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° лидСрство, Π°ΠΊΠΎ послСдният сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ.

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ 8: ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Kafka Π½Π΅ Π²ΠΈΠΆΠ΄Π° Zookeeper

Zookeeper няма Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ping ΠΎΡ‚ падналия ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ ΠΈ Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ Π½ΠΎΠ² Kafka възСл ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° сС прСдставя ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΊΡŠΠ², Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° извСстия ΠΎΡ‚ Zookeeper, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ няма Π΄Π° ΠΈΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° изпълнСниС. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°, Ρ‚ΠΎΠΉ Ρ‰Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, Π° сС Π΅ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π°Π» Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Kafka възСл.

Изводи ΠΎΡ‚ сцСнариитС

Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ Π½Π° послСдоватСл Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Π° просто Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ намалява излишъка, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° бъдС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½Π°. Π’ΠΎΠ²Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ възли са Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ.

Ако Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС ΠΎΡ‚Π΄Π΅Π»ΠΈ ΠΎΡ‚ Zookeeper ΠΏΠΎΡ€Π°Π΄ΠΈ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΎΡ‚ acks=1. Липсата Π½Π° комуникация със Zookeeper ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΊΡ€Π°Ρ‚ΡŠΠΊ Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ раздяла с Π΄Π²Π°ΠΌΠ°Ρ‚Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈ. Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сС Ρ€Π΅ΡˆΠ°Π²Π° ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° acks=всички.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π² Π΄Π²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ прСдоставя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° увСрСност, Ρ‡Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° краткосрочни сцСнарии няма Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ‚ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² сцСнарий 6.

РСзюмС Π½Π° ΠΈΠ·Π³ΡƒΠ±Π΅Π½ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

НСка ΠΈΠ·Π±Ρ€ΠΎΠΈΠΌ всички Π½Π°Ρ‡ΠΈΠ½ΠΈ, ΠΏΠΎ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π² Kafka:

  • Всяка Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°, Π°ΠΊΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° са ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° acks=1
  • ВсСки нСчист ΠΏΡ€Π΅Ρ…ΠΎΠ΄ Π½Π° лидСрство, тоСст към послСдоватСл извън ISR, Π΄ΠΎΡ€ΠΈ ΠΈ с acks=всички
  • Π˜Π·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° ΠΎΡ‚ Zookeeper, Π°ΠΊΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° са ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· acks=1
  • Пълна изолация Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ свил ISR Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π΄ΠΎ сСбС си. Π”ΠΎΡ€ΠΈ всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ acks=всички. Π’ΠΎΠ²Π° Π΅ вярно само Π°ΠΊΠΎ min.insync.replicas=1.
  • Π•Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ Π½Π° всички възли Π½Π° дяловС. Въй ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° сС ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π°Π²Π°Ρ‚ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, някои ΠΌΠΎΠΆΠ΅ ΠΎΡ‰Π΅ Π΄Π° Π½Π΅ са записани Π½Π° диска. Π‘Π»Π΅Π΄ рСстартиранС Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ някои ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° липсват.

НСчиститС лидСрски ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ сС забранят ΠΈΠ»ΠΈ осигурят ΠΏΠΎΠ½Π΅ Π΄Π²Π΅ ΡΡŠΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡ. Най-ΠΈΠ·Π΄Ρ€ΡŠΠΆΠ»ΠΈΠ²Π°Ρ‚Π° конфигурация Π΅ комбинация acks=всички ΠΈ min.insync.Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 1.

Π”ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ сравнСниС Π½Π° надСТдността Π½Π° RabbitMQ ΠΈ Kafka

Π—Π° Π΄Π° осигурят надСТдност ΠΈ висока наличност, Π΄Π²Π΅Ρ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ внСдряват ΠΏΡŠΡ€Π²ΠΈΡ‡Π½Π° ΠΈ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° систСма. RabbitMQ ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠΌΠ° ахилСсова ΠΏΠ΅Ρ‚Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ слСд ΠΏΠΎΠ²Ρ€Π΅Π΄Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚ своитС Π΄Π°Π½Π½ΠΈ ΠΈ синхронизиранСто сС Π±Π»ΠΎΠΊΠΈΡ€Π°. Π’ΠΎΠ·ΠΈ Π΄Π²ΠΎΠ΅Π½ ΡƒΠ΄Π°Ρ€ поставя ΠΏΠΎΠ΄ Π²ΡŠΠΏΡ€ΠΎΡ Π΄ΡŠΠ»Π³ΠΎΠ»Π΅Ρ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ опашки Π² RabbitMQ. Π©Π΅ трябва Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅Ρ‚Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ излишък, ΠΈΠ»ΠΈ дълги Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅. НамаляванСто Π½Π° излишъка ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° риска ΠΎΡ‚ масивна Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ. Но Π°ΠΊΠΎ ΠΎΠΏΠ°ΡˆΠΊΠΈΡ‚Π΅ са ΠΌΠ°Π»ΠΊΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Π² ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° излишъка, ΠΊΡ€Π°Ρ‚ΠΊΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈ Π½Π° Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ (няколко сСкунди) ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС справят с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅.

ΠšΠ°Ρ„ΠΊΠ° няма Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠΉ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Ρ Π΄Π°Π½Π½ΠΈ само ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π·ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΠΈΠ΄Π΅Ρ€Π° ΠΈ послСдоватСля. Всички сподСлСни Π΄Π°Π½Π½ΠΈ сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚. ОсвСн Ρ‚ΠΎΠ²Π° рСпликацията Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° систСмата. Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ новият послСдоватСл наваксва, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π·Π° devops ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ към ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π° Π² Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°Ρ‡Π°. Π Π°Π·Π±ΠΈΡ€Π° сС, всС ΠΎΡ‰Π΅ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ чСстотната Π»Π΅Π½Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° рСпликация. Ако Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ няколко послСдоватСли Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° срСщнСтС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° чСстотната Π»Π΅Π½Ρ‚Π°.

RabbitMQ ΠΏΡ€Π΅Π²ΡŠΠ·Ρ…ΠΎΠΆΠ΄Π° Kafka ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° надСТдността, ΠΊΠΎΠ³Π°Ρ‚ΠΎ няколко ΡΡŠΡ€Π²ΡŠΡ€Π° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ сС поврСдят Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, RabbitMQ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° издатСля само слСд ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ записано Π½Π° диск ΠΎΡ‚ главния ΠΈ всички ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Но Ρ‚ΠΎΠ²Π° добавя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ забавянС ΠΏΠΎ Π΄Π²Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ:

  • fsync Π½Π° всСки няколкостотин милисСкунди
  • НСизправността Π½Π° ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС забСлязана само слСд ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ провСряват наличността Π½Π° всСки възСл (net tick). Ако ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎΡ‚ΠΎ сС Π·Π°Π±Π°Π²ΠΈ ΠΈΠ»ΠΈ ΠΏΠ°Π΄Π½Π΅, Ρ‚ΠΎΠ²Π° добавя забавянС.

Π—Π°Π»ΠΎΠ³ΡŠΡ‚ Π½Π° Kafka Π΅, Ρ‡Π΅ Π°ΠΊΠΎ Π΅Π΄Π½ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² мноТСство възли, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π²Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ‚ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° риск ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΎΡ‚ всякакъв Π²ΠΈΠ΄ (Π΄ΠΎΡ€ΠΈ acks=всички, min.insync.replicas=2) Π² случай Π½Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ΠΊΠ°Π·.

ΠšΠ°Ρ‚ΠΎ цяло, Kafka ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° софтуСрна производитСлност ΠΈ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ. Броят Π½Π° послСдоватСлитС ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π΄ΠΎ 11, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° надСТдност. ΠšΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ Π½Π° рСпликация 5 ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±Ρ€ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π² синхронизация min.insync.replicas=3 Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ рядко ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅. Ако Π²Π°ΡˆΠ°Ρ‚Π° инфраструктура ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ‚ΠΎΠ²Π° ΡΡŠΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° рСпликация ΠΈ Π½ΠΈΠ²ΠΎ Π½Π° излишък, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ опция.

ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° RabbitMQ Π΅ Π΄ΠΎΠ±Ρ€ΠΎ Π·Π° ΠΌΠ°Π»ΠΊΠΈ опашки. Но Π΄ΠΎΡ€ΠΈ ΠΌΠ°Π»ΠΊΠΈΡ‚Π΅ опашки ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° растат Π±ΡŠΡ€Π·ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° голям Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΎΠΏΠ°ΡˆΠΊΠΈΡ‚Π΅ станат Π³ΠΎΠ»Π΅ΠΌΠΈ, Ρ‰Π΅ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚Ρ€ΡƒΠ΄Π΅Π½ ΠΈΠ·Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ наличност ΠΈ надСТдност. ΠšΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° RabbitMQ Π΅ Π½Π°ΠΉ-подходящо Π·Π° Π½Π΅Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ ситуации, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ»Π·ΠΈΡ‚Π΅ ΠΎΡ‚ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π° Π½Π° RabbitMQ ΠΏΡ€Π΅Π²ΡŠΠ·Ρ…ΠΎΠΆΠ΄Π°Ρ‚ всички Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅.

Π•Π΄ΠΈΠ½ Π°Π½Ρ‚ΠΈΠ΄ΠΎΡ‚ срСщу уязвимостта Π½Π° RabbitMQ към Π³ΠΎΠ»Π΅ΠΌΠΈ опашки Π΅ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ опашки. Ако Π½Π΅ изискватС пълно ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° цялата опашка, Π° само ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚) ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Ρ‚Π΅ Π½ΠΈΡ‰ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π°Π·ΠΈ опция Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²Π°: Π²ΠΈΠΆΡ‚Π΅ моя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Rebalancer Π·Π° раздСлянС Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ всС ΠΎΡ‰Π΅ Π΅ Π½Π° Ρ€Π°Π½Π΅Π½ Π΅Ρ‚Π°ΠΏ).

И накрая, Π½Π΅ забравяйтС Π·Π° Ρ€Π΅Π΄ΠΈΡ†Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ рСпликация ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° RabbitMQ, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π° Kafka. Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ систСмитС станаха ΠΏΠΎ-Π·Ρ€Π΅Π»ΠΈ ΠΈ стабилни, Π½ΠΎ Π½ΠΈΠΊΠΎΠ΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ няма Π΄Π° бъдС 100% Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΎ ΠΎΡ‚ Π·Π°Π³ΡƒΠ±Π°! ОсвСн Ρ‚ΠΎΠ²Π° Π² Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ сС случват ΠΌΠ°Ρ‰Π°Π±Π½ΠΈ Π°Π²Π°Ρ€ΠΈΠΈ!

Ако съм пропуснал Π½Π΅Ρ‰ΠΎ, допуснал съм Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅ стС съгласни с някоя ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈΡ‚Π΅, Π½Π΅ сС ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ ΠΈΠ»ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с ΠΌΠ΅Π½.

ЧСсто ΠΌΠ΅ ΠΏΠΈΡ‚Π°Ρ‚: β€žΠšΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π°, Kafka ΠΈΠ»ΠΈ RabbitMQ?β€œ, β€žΠšΠΎΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π°?β€œ. Π˜ΡΡ‚ΠΈΠ½Π°Ρ‚Π° Π΅, Ρ‡Π΅ наистина зависи ΠΎΡ‚ Π²Π°ΡˆΠ°Ρ‚Π° ситуация, тСкущия ΠΎΠΏΠΈΡ‚ ΠΈ Ρ‚.Π½. КолСбая сС Π΄Π° Π΄Π°ΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½ΠΎ опростяванС Π΄Π° сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΅Π΄Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° всички случаи Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΈ възмоТни ограничСния. Написах Ρ‚Π°Π·ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ статии, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° си ΡΡŠΡΡ‚Π°Π²ΠΈΡ‚Π΅ собствСно ΠΌΠ½Π΅Π½ΠΈΠ΅.

Искам Π΄Π° ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ ΠΈ Π΄Π²Π΅Ρ‚Π΅ систСми са Π²ΠΎΠ΄Π΅Ρ‰ΠΈ Π² Ρ‚Π°Π·ΠΈ област. МоТС Π΄Π° съм ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡƒΠ±Π΅Π΄Π΅Π½, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΎΡ‚ моя ΠΎΠΏΠΈΡ‚ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ съм склонСн Π΄Π° цСня Π½Π΅Ρ‰Π° ΠΊΠ°Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΈ надСТдност.

Π’ΠΈΠΆΠ΄Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ липсва Ρ‚Π°Π·ΠΈ надСТдност ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Ρ€Π΅Π΄Π±Π°, слСд Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌ RabbitMQ ΠΈ Kafka ΠΈ осъзнавам нСвСроятната стойност Π½Π° Π΄Π²Π΅Ρ‚Π΅ систСми.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€