Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния

Π’ ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ запуска Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠΎ курсу Β«Data EngineerΒ» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ интСрСсного ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния

ΠžΠ±Π·ΠΎΡ€

ΠœΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ достаточно популярном ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ нСсколько Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄ свои Ρ†Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для хранСния каноничСской Ρ„ΠΎΡ€ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (MySQL ΠΈ Ρ‚.Π΄.), обСспСчСния Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… возмоТностСй поиска (ElasticSearch ΠΈ Ρ‚.Π΄.), ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ (Memcached ΠΈ Ρ‚.Π΄.) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ использовании Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ основноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. ЕдинствСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ….

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

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Delta. Delta Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ прСдставляСт ΠΈΠ· сСбя ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡƒΡŽ, ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ событиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для синхронизации ΠΈ обогащСния Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Двойная запись

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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ восстановлСния – это спСцифичная Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ рассинхронизированными Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° восстановлСния. РСшСниС услоТняСтся, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ…. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° восстановлСния ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° исходный источник Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΎΠ³ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π±Π΅Π· измСнСния ΠΊΠΎΠ΄Π° прилоТСния Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ. Π’ срСдС-ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡ‚Π΅ рСализация Ρ‚Π°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° любом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΌ языкС, Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ повСдСния ΠΌΠ΅ΠΆΠ΄Ρƒ языками ΠΎΡ‡Π΅Π½ΡŒ нСпросто.

Другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ схСмы, Π² Ρ‚Π΅Ρ… систСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ измСнСния схСмы [1][2], ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MySQL. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ шаблон выполнСния измСнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, измСнСния схСмы) ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ записи Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π»ΠΎΠ³ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

РаспрСдСлСнныС Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

РаспрСдСлСнныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ опСрация Π»ΠΈΠ±ΠΎ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π²ΠΎ всСх ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ…, Π»ΠΈΠ±ΠΎ Π½Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ….

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

РаспрСдСлСнныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ – ΠΎΡ‡Π΅Π½ΡŒ большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° для Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ Π΄Π°Π½Π½Ρ‹Ρ…. По своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° наимСньший ΠΎΠ±Ρ‰ΠΈΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСм. НапримСр, XA-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли Π² процСссС прилоТСния происходит сбой Π½Π° этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, XA Π½Π΅ обСспСчиваСт обнаруТСния Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ оптимистичСскиС схСмы управлСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ. Помимо этого, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ систСмы ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ElasticSearch Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ XA ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΡƒΡŽ модСль Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, обСспСчСниС атомарности записи Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… тСхнологиях хранСния Π΄Π°Π½Π½Ρ‹Ρ… остаСтся для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ вСсьма слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ [3].

Delta

Delta Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° для устранСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ синхронизации Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π»Π΅Ρ‚Ρƒ. Наша Ρ†Π΅Π»ΡŒ состояла Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС эти слоТныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ бизнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Β«Movie SearchΒ», фактичСский Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования Delta ΠΎΡ‚ Netflix.

Π’ Netflix ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ микросСрвис ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обслуТиваСт ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свСдСния ΠΎ Ρ„ΠΈΠ»ΡŒΠΌΠ΅ вынСсСны Π² микросСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся Movie Service, Π° Ρ‚Π°ΠΊΠΆΠ΅ связанныС с Π½ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ информация ΠΎ ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Π°Ρ…, Π°ΠΊΡ‚Π΅Ρ€Π°Ρ…, Π²Π΅Π½Π΄ΠΎΡ€Π°Ρ… ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ нСсколькими Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ микросСрвисами (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Deal Service, Talent Service ΠΈ Vendor Service).
БизнСс-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π² Netflix Studios часто Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² поискС ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ критСриям Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ², ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому для Π½ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ поиск ΠΏΠΎ всСм Π΄Π°Π½Π½Ρ‹ΠΌ, связанным с Ρ„ΠΈΠ»ΡŒΠΌΠ°ΠΌΠΈ.

Π”ΠΎ появлСния Delta ΠΊΠΎΠΌΠ°Π½Π΄Π΅ поиска Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… микросСрвисов, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ². Помимо этого, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ систСму, которая пСриодичСски обновляла Π±Ρ‹ поисковый индСкс, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ измСнСния Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… микросСрвисов, Π΄Π°ΠΆΠ΅ Ссли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π­Ρ‚Π° систСма ΠΎΡ‡Π΅Π½ΡŒ быстро обросла слоТностями ΠΈ Π΅Π΅ стало Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния
Рисунок 1. БистСма ΠΏΠΎΠ»Π»ΠΈΠ½Π³Π° Π΄ΠΎ Delta
ПослС Π½Π°Ρ‡Π°Π»Π° использования Delta, систСма Π±Ρ‹Π»Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π° Π΄ΠΎ систСмы, управляСмой событиями, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС. Бобытия CDC (Change-Data-Capture) ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΏΠΈΠΊΠΈ Keystone Kafka с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Delta-Connector. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Delta, построСнноС с использованиСм Delta Stream Processing Framework (основанного Π½Π° Flink), ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ CDC-события ΠΈΠ· Ρ‚ΠΎΠΏΠΈΠΊΠ°, ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ…, вызывая Π΄Ρ€ΡƒΠ³ΠΈΠ΅ микросСрвисы, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² поисковый индСкс Π² Elasticsearch. Π’Π΅ΡΡŒ процСсс ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСнСния Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, поисковыС индСксы ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния
Рисунок 2. Пайплайн Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ использовании Delta
Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ опишСм Ρ€Π°Π±ΠΎΡ‚Ρƒ Delta-Connector, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ CDC-события Π½Π° транспортном ΡƒΡ€ΠΎΠ²Π½Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΈΠ· сСбя инфраструктуру ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ CDC-события Π² Ρ‚ΠΎΠΏΠΈΠΊΠΈ Kafka. А Π² самом ΠΊΠΎΠ½Ρ†Π΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ структурС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Delta, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ обогащСния Π΄Π°Π½Π½Ρ‹Ρ….

CDC (Change-Data-Capture)

ΠœΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ CDC-сСрвис ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Delta-Connector, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ измСнСния ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΠΎΡ‚ΠΎΠΊ. ИзмСнСния Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ бСрутся ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Π°ΠΌΠΏΠΎΠ² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π”Π°ΠΌΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ хранят всю ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ИзмСнСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ события Delta, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΎΡ‚ΠΊΡƒΠ΄Π° появляСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

Delta-Connector ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² кастомныС Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΈΠΌΠΎ Kafka.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ€ΡƒΡ‡Π½Ρ‹Ρ… Π΄Π°ΠΌΠΏΠΎΠ² Π² любоС врСмя для всСх Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.
  • Π”Π°ΠΌΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‡Π°Π½ΠΊΠ°ΠΌΠΈ, поэтому Π½Π΅Ρ‚ нСобходимости Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ всС с Π½Π°Ρ‡Π°Π»Π° Π² случаС сбоя.
  • НСт нСобходимости ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ записи Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ блокировался нашим сСрвисом.
  • Высокая Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·-Π·Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… экзСмпляров Π² AWS Availability Zones.

БСйчас ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ MySQL ΠΈ Postgres, Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ Π² AWS RDS ΠΈ Aurora. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌ Cassandra (multi-master). Π‘ΠΎΠ»ΡŒΡˆΠ΅ подробностСй ΠΎ Delta-Connector Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² этом Π±Π»ΠΎΠ³Π΅.

Kafka ΠΈ транспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ

Вранспортный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ событий Delta построСн Π½Π° сСрвисС ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Keystone.

Π’Π°ΠΊ историчСски слоТилось, Ρ‡Ρ‚ΠΎ публикация сообщСний Π² Netflix ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ доступности, Π° Π½Π΅ долговСчности (см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ). ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡΡΠΎΠΌ оказалось ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ нСсоотвСтствиС Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях. НапримСр, unclean leader election ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ тСряСт события.

Π‘ Delta Π½Π°ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ вСсомыС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ долговСчности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ доставку CDC-событий Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Для этого ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ спроСктированный кластСр Kafka Π² качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ настройки Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅:

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния

Π’ кластСрах Keystone Kafka, unclean leader election ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ для обСспСчСния доступности издатСля. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ сообщСний Π² случаС, Ссли нСсинхронизированная Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π° Π² качСствС Π»ΠΈΠ΄Π΅Ρ€Π°. Для Π½ΠΎΠ²ΠΎΠ³ΠΎ высоконадСТного кластСра Kafka ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ unclean leader election Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ сообщСний.

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ replication factor с 2 Π΄ΠΎ 3 ΠΈ minimum insync replicas с 1 Π΄ΠΎ 2. Π˜Π·Π΄Π°Ρ‚Π΅Π»ΠΈ, ΠΏΠΈΡˆΡƒΡ‰ΠΈΠ΅ Π² этот кластСр, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ acks ΠΎΡ‚ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ…, гарантируя, Ρ‡Ρ‚ΠΎ 2 ΠΈΠ· 3 Ρ€Π΅ΠΏΠ»ΠΈΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ самыС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сообщСния, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»Π΅ΠΌ.

Когда экзСмпляр Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр замСняСт старый. Однако Π½ΠΎΠ²ΠΎΠΌΡƒ Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ³Π½Π°Ρ‚ΡŒ нСсинхронизированныС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько часов. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя восстановлСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого сцСнария, ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΡ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Amazon Elastic Block Store) вмСсто Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… дисков Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠ². Когда Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр замСняСт Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΠΉΡΡ экзСмпляр Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°, ΠΎΠ½ присоСдиняСт EBS-Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ экзСмпляра, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΄ΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сообщСния. Π­Ρ‚ΠΎΡ‚ процСсс сокращаСт врСмя Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΠΈ отставания с Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ экзСмпляру большС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· пустого состояния. Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ Π±Ρ€ΠΎΠΊΠ΅Ρ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ влияниС эффСкта ΠΎΡ‚ смСны Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ большС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ доставки Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ использовали систСму отслСТивания сообщСний для обнаруТСния любой ΠΏΠΎΡ‚Π΅Ρ€ΠΈ сообщСний Π² ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… условиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рассинхронизация часов Π² Π»ΠΈΠ΄Π΅Ρ€Π΅ Ρ€Π°Π·Π΄Π΅Π»Π°).

Stream Processing Framework

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Delta построСн Π½Π° Π±Π°Π·Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Netflix SPaaS, которая обСспСчиваСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Apache Flink с экосистСмой Netflix. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΉ Flink ΠΈ оркСстрациСй кластСров Flink ΠΏΠΎΠ²Π΅Ρ€Ρ… нашСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Titus. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Ρ‚Π°ΠΊΠΆΠ΅ управляСт конфигурациями Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ динамичСски Π±Π΅Π· нСобходимости ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ задания Flink.

Delta прСдоставляСт Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (stream processing framework) Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±Π°Π·Π΅ Flink ΠΈ SPaaS, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ основанный Π½Π° аннотациях DSL (Domain Specific Language), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ шаг, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΠΎΠ³Π°Ρ‰Π°Ρ‚ΡŒΡΡ события, вызывая внСшниС сСрвисы, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ DSL, Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ создаст Π½Π° основС Π½Π΅Π³ΠΎ модСль, которая выполнится Flink.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния
Рисунок 3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ обогащСния Π½Π° DSL Π² Delta

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сокращаСт ΠΊΡ€ΠΈΠ²ΡƒΡŽ обучСния, Π½ΠΎ ΠΈ обСспСчиваСт ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ дСдупликация, схСматизация, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

Delta Stream Processing Framework состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, модуля DSL & API ΠΈ модуля Runtime. ΠœΠΎΠ΄ΡƒΠ»ΡŒ DSL & API прСдоставляСт DSL ΠΈ UDF (User-Defined-Function) API для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ прСобразования). ΠœΠΎΠ΄ΡƒΠ»ΡŒ Runtime прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ парсСра DSL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строит Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС шагов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² модСлях DAG. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Execution ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ DAG-ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ фактичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Flink ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flink. АрхитСктура Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния
Рисунок 4. АрхитСктура Delta Stream Processing Framework

Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ нСсколько прСимущСств:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ„ΠΎΠΊΡƒΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° своСй бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅ Π±Π΅Π· нСобходимости ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² спСцифику Flink ΠΈΠ»ΠΈ структуру SPaaS.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ способом, Π° ошибки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ исправлСны Π±Π΅Π· нСобходимости внСсСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (UDF).
  • Π Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Delta ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΈ собираСт мноТСство ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ.

ИспользованиС Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅

Delta Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅ ΡƒΠΆΠ΅ большС Π³ΠΎΠ΄Π° ΠΈ ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях Netflix Studio. Она ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, ΠΊΠ°ΠΊ индСксация поиска, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы, управляСмыС событиями. НиТС прСдставлСн ΠΎΠ±Π·ΠΎΡ€ высокоуровнСвой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Delta.

Delta: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° синхронизации Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ обогащСния
Рисунок 5. ВысокоуровнСвая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Delta.

Благодарности

ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ участвовали Π² создании ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ Delta Π² Netflix: Allen Wang, Charles Zhao, Jaebin Yoon, Josh Snyder, Kasturi Chatterjee, Mark Cho, Olof Johansson, Piyush Goyal, Prashanth Ramdas, Raghuram Onti Srinivasan, Sandeep Gupta, Steven Wu, Tharanga Gamaethige, Yun Wang ΠΈ Zhenzhong Xu.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

  1. dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
  2. dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
  3. Martin Kleppmann, Alastair R. Beresford, Boerge Svingen: Online event processing. Commun. ACM 62(5): 43–49 (2019). DOI: doi.org/10.1145/3312527

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° бСсплатный Π²Π΅Π±ΠΈΠ½Π°Ρ€: Β«Data Build Tool для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Amazon RedshiftΒ».

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ