Delta: Done senkronizasyon ak anrichisman platfòm

Nan patisipe nan lansman de yon nouvo koule nan pousantaj la Enjenyè Done Nou te prepare yon tradiksyon nan materyèl enteresan.

Delta: Done senkronizasyon ak anrichisman platfòm

Revize

Nou pral pale sou yon modèl jistis popilè kote aplikasyon yo sèvi ak plizyè magazen done, kote chak magazen yo itilize pou pwòp rezon li yo, pou egzanp, pou estoke fòm kanonik done (MySQL, elatriye), bay kapasite rechèch avanse (ElasticSearch, elatriye) .), kachèt (Memcached, elatriye) ak lòt moun. Tipikman, lè w ap itilize plizyè magazen done, youn nan yo aji kòm magazen prensipal la ak lòt yo kòm magazen dérivés. Pwoblèm nan sèlman se ki jan yo senkronize magazen done sa yo.

Nou te gade yon kantite modèl diferan ki te eseye rezoud pwoblèm nan nan senkronize magazen miltip, tankou ekri doub, tranzaksyon distribye, elatriye. Sepandan, apwòch sa yo gen limit enpòtan an tèm de itilizasyon lavi reyèl, fyab, ak antretyen. Anplis de senkronizasyon done, kèk aplikasyon tou bezwen anrichi done lè yo rele sèvis ekstèn.

Delta te devlope pou rezoud pwoblèm sa yo. Delta finalman bay yon platfòm konsistan, ki baze sou evènman pou senkronizasyon done ak anrichisman.

Solisyon ki deja egziste

Double antre

Pou kenbe de magazen done nan senkronize, ou ka itilize doub ekri, ki ekri nan yon magazen ak Lè sa a, ekri nan lòt la imedyatman apre. Premye anrejistreman an ka reesye epi dezyèm lan ka avòte si premye a echwe apre kantite tantativ yo te fin itilize. Sepandan, de magazen done yo ka dekonekte si ekri nan dezyèm magazen an echwe. Pwoblèm sa a anjeneral rezoud pa kreye yon pwosedi rekiperasyon ki ka detanzantan re-transfere done soti nan depo nan premye nan dezyèm lan, oswa fè sa sèlman si yo detekte diferans ki genyen nan done yo.

Pwoblèm:

Fè yon pwosedi rekiperasyon se yon travay espesifik ki pa ka itilize ankò. Anplis de sa, done ant kote depo yo rete soti nan senkronizasyon jiskaske pwosedi retabli a pran plas. Solisyon an vin pi konplèks si yo itilize plis pase de magazen done. Finalman, pwosedi retabli a ka ajoute chaj nan sous done orijinal la.

Chanje tab boutèy la

Lè chanjman yo rive nan yon seri tab (tankou mete, mete ajou, ak efase yon dosye), dosye chanjman yo ajoute nan tablo boutèy la kòm yon pati nan menm tranzaksyon an. Yon lòt fil oswa pwosesis toujou ap mande evènman ki soti nan tab boutèy la epi ekri yo nan youn oswa plis magazen done, si sa nesesè, retire evènman nan tab la boutèy demi lit apre dosye a te konfime pa tout magazen yo.

Pwoblèm:

Этот паттерн должен быть реализован как библиотека и в идеале без изменения кода приложения ее использующего. В среде-полиглоте реализация такой библиотеки должна существовать на любом необходимом языке, но обеспечить согласованность работы функций и поведения между языками очень непросто.

Yon lòt pwoblèm se nan jwenn chanjman chema nan sistèm ki pa sipòte chanjman chema tranzaksyon [1][2], tankou MySQL. Se poutèt sa, modèl la nan fè yon chanjman (pa egzanp, yon chanjman chema) ak tranzaksyon anrejistreman li nan tablo a boutèy demi lit chanjman pa pral toujou travay.

Tranzaksyon distribye

Tranzaksyon distribiye yo ka itilize pou divize yon tranzaksyon atravè plizyè magazen done eterojèn pou operasyon an swa angaje nan tout magazen done yo itilize, oswa pa angaje nan okenn nan yo.

Pwoblèm:

Tranzaksyon distribiye yo se yon gwo pwoblèm pou magazen done etewojèn. Pa nati yo, yo ka sèlman konte sou pi ba denominatè komen nan sistèm ki enplike yo. Pou egzanp, tranzaksyon XA bloke ekzekisyon si pwosesis aplikasyon an echwe pandan faz preparasyon an. Anplis de sa, XA pa bay deteksyon enpas oswa sipòte konplo optimis kontwòl konkou. Anplis de sa, kèk sistèm tankou ElasticSearch pa sipòte XA oswa nenpòt lòt modèl tranzaksyon etewojèn. Kidonk, asire atomisite ekri nan divès teknoloji depo done rete yon travay trè difisil pou aplikasyon yo [3].

Delta

Delta te fèt pou adrese limit ki genyen nan solisyon senkronizasyon done ki egziste deja epi tou pèmèt anrichisman done sou vole. Objektif nou se te abstrè tout konpleksite sa yo lwen devlopè aplikasyon yo pou yo ka konsantre totalman sou aplikasyon fonksyonalite biznis yo. Apre sa, nou pral dekri "Rechèch fim", ka itilizasyon aktyèl la pou Delta Netflix la.

Netflix itilize lajman yon achitekti mikwosèvis, epi chak mikwosèvis anjeneral sèvi yon kalite done. Enfòmasyon debaz sou fim nan genyen nan yon mikwosèvis ki rele Sèvis fim, ak done ki asosye tankou enfòmasyon sou pwodiktè, aktè, machann, ak sou sa ki jere pa plizyè lòt mikwosèvis (savwa Sèvis Deal, Sèvis Talent ak Sèvis Vandè).
Itilizatè biznis nan Netflix Studios souvan bezwen fè rechèch sou plizyè kritè fim, se poutèt sa li trè enpòtan pou yo kapab fè rechèch nan tout done ki gen rapò ak fim.

Anvan Delta, ekip rechèch fim nan te bezwen rale done ki sòti nan plizyè mikwosèvis anvan yo endèks done fim yo. Anplis de sa, ekip la te oblije devlope yon sistèm ki ta detanzantan mete ajou endèks rechèch la lè li mande chanjman nan men lòt mikwosèvis, menm si pa te gen okenn chanjman ditou. Sistèm sa a byen vit te vin konplèks ak difisil pou kenbe.

Delta: Done senkronizasyon ak anrichisman platfòm
Figi 1. Sistèm vòt pou Delta
Apre w fin itilize Delta, yo te senplifye sistèm nan nan yon sistèm kondwi evènman jan yo montre nan figi sa a. Evènman CDC (Change-Data-Capture) yo voye bay sijè Keystone Kafka lè l sèvi avèk Delta-Connector. Yon aplikasyon Delta ki fèt ak Delta Stream Processing Framework (ki baze sou Flink) resevwa evènman CDC nan yon sijè, anrichi yo lè yo rele lòt mikwosèvis, epi finalman pase done anrichi yo nan yon endèks rechèch nan Elasticsearch. Tout pwosesis la pran plas prèske nan tan reyèl, se sa ki, le pli vit ke chanjman yo angaje nan depo done a, endèks rechèch yo mete ajou.

Delta: Done senkronizasyon ak anrichisman platfòm
Figi 2. Tiyo done lè l sèvi avèk Delta
Nan seksyon sa yo, nou pral dekri operasyon an nan Delta-Connector, ki konekte ak depo a epi pibliye evènman CDC nan kouch transpò a, ki se yon enfrastrikti transmisyon done an tan reyèl ki mennen evènman CDC nan sijè Kafka. Ak nan fen a anpil, nou pral pale sou fondasyon an pwosesis Delta kouran, ki devlopè aplikasyon yo ka itilize pou tretman done ak lojik anrichisman.

CDC (Chanjman-Done-Capture)

Nou te devlope yon sèvis CDC ki rele Delta-Connector, ki ka pran chanjman komèt nan magazen done a an tan reyèl epi ekri yo nan yon kouran. Chanjman an tan reyèl yo pran nan boutèy demi lit tranzaksyon yo ak depo yo. Yo itilize pil fatra paske mòso tranzaksyon yo anjeneral pa estoke tout istwa chanjman yo. Chanjman yo anjeneral seri kòm evènman Delta, kidonk moun k ap resevwa a pa bezwen enkyete sou kote chanjman an soti.

Delta-Connector sipòte plizyè karakteristik adisyonèl tankou:

  • Kapasite pou ekri done pwodiksyon koutim pase Kafka.
  • Kapasite pou aktive pil fatra manyèl nenpòt ki lè pou tout tab, yon tab espesifik, oswa pou kle prensipal espesifik.
  • Depotwa yo ka rekipere an fragman, kidonk pa gen okenn bezwen kòmanse tout lòt peyi sou ankò nan ka echèk.
  • Pa gen okenn nesesite pou mete kadna sou tab, sa ki trè enpòtan pou asire ke trafik ekri baz done pa janm bloke pa sèvis nou an.
  • Segondè disponiblite akòz ka redondants nan Zòn Disponibilite AWS yo.

Kounye a nou sipòte MySQL ak Postgres, ki gen ladan deplwaman sou AWS RDS ak Aurora. Nou tou sipòte Cassandra (milti-mèt). Ou ka jwenn plis detay sou Delta-Connector isit la pòs blog la.

Kafka ak kouch transpò a

Kouch transpò evènman Delta a bati sou sèvis messagerie platfòm la Keystone.

Istorikman, afiche sou Netflix yo te optimize pou aksè olye ke lonjevite (gade anba a). atik anvan). Komès la te potansyèl enkonsistans done koutye nan senaryo kwen divès kalite. Pa egzanp, eleksyon lidè sal responsab pou moun k ap resevwa a kapab genyen evènman ki gen kopi oswa pèdi.

Avèk Delta, nou te vle pi fò garanti durability pou asire livrezon evènman CDC nan magazen ki sòti yo. Pou rezon sa a, nou pwopoze yon gwoup Kafka ki fèt espesyalman kòm yon objè premye klas. Ou ka gade kèk paramèt koutye nan tablo ki anba a:

Delta: Done senkronizasyon ak anrichisman platfòm

Nan grap Keystone Kafka, eleksyon lidè sal anjeneral enkli pou asire aksè piblikasyon an. Sa ka lakòz pèt mesaj si yo eli yon kopi ki pa senkronize kòm lidè. Pou yon nouvo grap Kafka disponiblite segondè, opsyon an eleksyon lidè sal etenn pou anpeche pèt mesaj.

Nou menm tou nou ogmante faktè replikasyon soti nan 2 a 3 ak kopi minimòm ensync 1 a 2. Piblikatè k ap ekri nan gwoup sa a mande tout lòt moun, pou asire ke 2 kopi sou 3 gen mesaj ki pi resan yo voye pa piblikatè a.

Lè yon egzanp koutye fini, yon nouvo egzanp ranplase ansyen an. Sepandan, nouvo koutye a pral bezwen ratrape ak kopi ki pa senkronize yo, sa ki ka pran plizyè èdtan. Pou diminye tan rekiperasyon an pou senaryo sa a, nou te kòmanse itilize depo done blòk (Amazon Elastic Block Store) olye de disk koutye lokal yo. Lè yon nouvo egzanp ranplase yon egzanp koutye ki sispann, li tache volim EBS ke egzanp ki sispann a te genyen epi li kòmanse ratrape ak nouvo mesaj. Pwosesis sa a redui tan an reta de lè pou rive minit paske nouvo egzanp lan pa bezwen replike nan yon eta vid ankò. An jeneral, depo separe ak sik lavi koutye siyifikativman redwi enpak la nan koutye chanje.

Pou ogmante plis garanti livrezon done, nou te itilize sistèm swiv mesaj pou detekte nenpòt pèt mesaj nan kondisyon ekstrèm (pa egzanp, desincronizasyon revèy nan lidè patisyon an).

Stream Processing chapant

Kouch pwosesis Delta a bati sou tèt platfòm Netflix SPaaS, ki bay Apache Flink entegrasyon ak ekosistèm Netflix la. Platfòm nan bay yon koòdone itilizatè ki jere deplwaman travay Flink ak orchestrasyon gwoup Flink sou tèt platfòm jesyon veso Titus nou an. Koòdone a tou jere konfigirasyon travay epi li pèmèt itilizatè yo fè chanjman nan konfigirasyon dinamik san yo pa bezwen rekonpile travay Flink.

Delta bay yon kad pwosesis kouran ki baze sou Flink ak SPaaS ki itilize ki baze sou annotation DSL (Domain Specific Language) pou abstrè detay teknik. Pou egzanp, defini etap nan ki evènman yo pral anrichi lè yo rele sèvis ekstèn, itilizatè yo bezwen ekri DSL sa a, ak fondasyon an pral kreye yon modèl ki baze sou li, ki pral egzekite pa Flink.

Delta: Done senkronizasyon ak anrichisman platfòm
Figi 3. Egzanp anrichisman sou DSL nan Delta

Kad pwosesis la pa sèlman diminye koub aprantisaj la, men tou bay karakteristik pwosesis kouran komen tankou deduplication, schematization, ak fleksibilite ak rezistans pou rezoud pwoblèm operasyon komen.

Delta Stream Processing Framework konsiste de de modil kle, modil DSL & API ak modil Runtime. Modil DSL & API bay API DSL ak UDF (Fonksyon Itilizatè-Defini) pou itilizatè yo ka ekri pwòp lojik pwosesis yo (tankou filtraj oswa transfòmasyon). Modil Runtime a bay yon aplikasyon yon analizeur DSL ki bati yon reprezantasyon entèn etap pwosesis nan modèl DAG. Eleman Egzekisyon an entèprete modèl DAG pou inisyalize deklarasyon aktyèl Flink yo epi finalman kouri aplikasyon Flink la. Achitekti fondasyon an montre nan figi sa a.

Delta: Done senkronizasyon ak anrichisman platfòm
Figi 4. Delta Stream Processing chapant achitekti

Apwòch sa a gen plizyè avantaj:

  • Itilizatè yo ka konsantre sou lojik biznis yo san yo pa bezwen fouye nan spesifik Flink oswa estrikti SPaaS la.
  • Optimizasyon ka fèt nan yon fason ki transparan pou itilizatè yo, epi erè yo ka fiks san yo pa mande okenn chanjman nan kòd itilizatè a (UDF).
  • Eksperyans aplikasyon Delta a senplifye pou itilizatè yo paske platfòm la bay fleksibilite ak fleksibilite soti nan bwat la epi kolekte yon varyete de mezi detaye ki ka itilize pou alèt.

Pwodiksyon itilizasyon

Delta te nan pwodiksyon pou plis pase yon ane epi li jwe yon wòl kle nan anpil aplikasyon Netflix Studio. Li te ede ekip yo aplike ka itilize tankou endèks rechèch, depo done, ak workflows ki baze sou evènman yo. Anba a se yon apèsi sou achitekti wo nivo platfòm Delta a.

Delta: Done senkronizasyon ak anrichisman platfòm
Figi 5. Achitekti wo nivo Delta a.

Remèsiman

Nou ta renmen remèsye moun sa yo ki te patisipe nan kreyasyon ak devlopman Delta nan 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 ak Zhenzhong Xu.

Sous

  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: Pwosesis evènman sou entènèt. Komin. ACM 62(5): 43–49 (2019). DOI: doi.org/10.1145/3312527

Enskri pou yon webinar gratis: "Zouti bati done pou Amazon Redshift Depo."

Sous: www.habr.com

Add nouvo kòmantè