Delta: Platforma Hevdengkirin û Zehfkirina Daneyan

Li hêviya destpêkirina herikîna nû ya bi rêjeyê "Endezyar Daneyên" Me wergerek ji materyalên balkêş amade kiriye.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan

gistî

Em ê li ser şêwazek pir populer biaxivin ku tê de serîlêdan gelek firotgehên daneyê bikar tînin, li wir her firotgeh ji bo armancên xwe têne bikar anîn, mînakî, ji bo hilanîna forma kanonîkî ya daneyê (MySQL, hwd.), peydakirina kapasîteyên lêgerîna pêşkeftî (ElasticSearch, hwd.) .), caching (Memcached, hwd.) û yên din. Bi gelemperî, dema ku gelek firotgehên daneyê bikar tînin, yek ji wan wekî dikana seretayî û yên din jî wekî firotgehên derûdor tevdigerin. Pirsgirêk tenê ev e ku meriv çawa van dikanên daneyê hevdeng dike.

Me li jimareyek şêwazên cihêreng nihêrî ku hewl didin pirsgirêka hevdengkirina gelek firotgehan çareser bikin, mîna nivîsandina ducar, danûstendinên belavkirî, hwd. Lêbelê, van nêzîkatiyan di warê karanîna jiyanek rastîn, pêbawerî û domandin de tixûbên girîng hene. Digel hevdengkirina daneyan, hin serîlêdan jî hewce ne ku bi bangkirina karûbarên derveyî daneyan dewlemend bikin.

Delta ji bo çareserkirina van pirsgirêkan hate pêşve xistin. Delta di dawiyê de ji bo hevdengkirin û dewlemendkirina daneyan platformek domdar, bûyer-rêveber peyda dike.

Çareseriyên heyî

Têketina ducar

Ji bo ku du firotgehên daneyê bi hev re bihêlin, hûn dikarin nivîsandina dualî bikar bînin, ku li yek dikanê dinivîse û dûv re tavilê li ya din dinivîse. Tomara yekem dikare ji nû ve were ceribandin û ya duyemîn dikare were betal kirin heke ya yekem têk biçe piştî ku hejmara hewildanan qediya. Lêbelê, heke nivîsandina li dikana duyemîn têk neçe, dibe ku du firotgehên daneyê ji hevdeng bibin. Ev pirsgirêk bi gelemperî bi afirandina pêvajoyek başbûnê ve tête çareser kirin ku dikare bi awayekî periyodîk daneyan ji hilana yekem berbi ya duyemîn veguhezîne, an jî tenê heke cûdahiyên di daneyê de werin tespît kirin wiya bikin.

Pirsgirêk:

Pêkanîna pêvajoyek başbûnê karek taybetî ye ku ji nû ve nayê bikar anîn. Digel vê yekê, daneyên di navbera cîhên hilanînê de ji hevdemkirinê dimînin heya ku prosedûra vegerandinê pêk were. Ger ji du depoyên daneyê zêdetir werin bikar anîn çareserî tevlihevtir dibe. Di dawiyê de, pêvajoya vegerandinê dikare barkirinê li çavkaniya daneya orjînal zêde bike.

Tabloya têketinê biguherînin

Dema ku guhertin di komek tabloyan de çêdibin (wekî têxistin, nûvekirin û jêbirina tomarekê), tomarên guherînê wekî beşek ji heman danûstendinê li tabloya têketinê têne zêdekirin. Mijarek an pêvajoyek din bi domdarî bûyeran ji tabloya têketinê daxwaz dike û wan li yek an çend dikanên daneyê dinivîse, ger hewce bike, piştî ku tomar ji hêla hemî firotgehan ve hatî pejirandin, bûyeran ji tabloya têketinê derxîne.

Pirsgirêk:

Pêdivî ye ku ev nimûne wekî pirtûkxaneyek were bicîh kirin, û bi îdeal bêyî ku koda serîlêdana ku wê bikar tîne biguhezîne. Di hawîrdorek polîglot de, pêkanîna pirtûkxaneyek weha divê bi her zimanek pêdivî hebe, lê misogerkirina hevgirtîbûna fonksiyon û tevgerê di nav zimanan de pir dijwar e.

Pirsgirêkek din di bidestxistina guhertinên şemayê de di pergalên ku guheztinên şemaya danûstendinê piştgirî nakin [1][2], wek MySQL. Ji ber vê yekê, şêwaza çêkirina guheztinê (mînakî, guheztinek şemayê) û tomarkirina wê bi danûstendinê di tabloya têketinê ya guhartinê de dê her gav nexebite.

Danûstandinên Belavkirî

Danûstandinên belavbûyî dikare were bikar anîn da ku danûstendinek li ser gelek dikanên daneya heterojen dabeş bike da ku operasyon an ji hemî dikanên daneya ku hatine bikar anîn ve girêdayî be, an jî bi yek ji wan re ne pabend be.

Pirsgirêk:

Danûstandinên belavkirî ji bo firotgehên daneyên heterojen pirsgirêkek pir mezin e. Bi cewherê xwe, ew tenê dikarin xwe bispêrin xala hevpar a herî kêm a pergalên têkildar. Mînakî, ger pêvajoya serîlêdanê di qonaxa amadekirinê de têk biçe, danûstendinên XA darvekirinê asteng dike. Digel vê yekê, XA tespîtkirina xitimandinê peyda nake an jî pilanên kontrolê yên hevdemî yên xweşbîn piştgirî nake. Wekî din, hin pergalên mîna ElasticSearch piştgiriya XA an modelek danûstendinê ya heterojen nakin. Bi vî rengî, misogerkirina atomê nivîsandinê di teknolojiyên hilanîna daneya cihêreng de ji bo sepanan karekî pir dijwar dimîne [3].

delta

Delta ji bo çareserkirina sînorên çareseriyên hevdengkirina daneya heyî hate sêwirandin û di heman demê de dewlemendkirina daneya li ser-firînê jî dike. Armanca me ev bû ku em van hemî tevliheviyan ji pêşdebirên serîlêdanê dûr bixin da ku ew bi tevahî balê bikişînin ser pêkanîna fonksiyonên karsaziyê. Dûv re em ê "Lêgerîna Fîlimê", doza karanîna rastîn a Deltaya Netflix-ê diyar bikin.

Netflix bi berfirehî mîmariyek mîkro-xizmetê bikar tîne, û her mîkroxizmet bi gelemperî yek celeb daneyê xizmet dike. Agahiyên bingehîn ên der barê fîlimê de di mîkroxizmetek bi navê Karûbarê Movie de cih digirin, û daneyên têkildar ên wekî agahdariya der barê hilberîner, lîstikvan, firoşkaran û hwd de ji hêla gelek mîkroxizmetên din ve têne rêve kirin (ango Karûbarê Deal, Karûbarê Talent û Karûbarê Firoşkar).
Bikarhênerên karsaziyê yên li Studios Netflix bi gelemperî hewce ne ku li seranserê pîvanên fîlimê yên cihê bigerin, ji ber vê yekê ji wan re pir girîng e ku karibin li hemî daneyên têkildar fîlimê bigerin.

Berî Delta, tîmê lêgerîna fîlimê hewce bû ku berî ku daneyên fîlimê navnîş bike daneyan ji gelek mîkroservisan bikişîne. Digel vê yekê, tîmê neçar bû ku pergalek pêş bixe ku dê bi domdarî pêveka lêgerînê nûve bike bi daxwaza guhertinên ji mîkroxizmetên din, hetta çu guhertin tunebin. Ev pergal zû tevlihev bû û domandina wê dijwar bû.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan
Figure 1. Pergala dengdanê ji bo Delta
Piştî ku Delta bikar anî, pergal bi pergalek bûyera ajotinê ve hate hêsan kirin ku di jimareya jêrîn de tê xuyang kirin. Bûyerên CDC (Change-Data-Capture) bi karanîna Delta-Connector ji mijarên Keystone Kafka re têne şandin. Serlêdanek Delta ku bi karanîna Çarçoveya Pêvajoya Delta Stream (li ser bingeha Flink-ê hatî çêkirin) bûyerên CDC ji mijarek distîne, wan bi gazîkirina mîkroxizmetên din dewlemend dike, û di dawiyê de daneyên dewlemendkirî di Elasticsearch de di navnîşek lêgerînê de derbas dike. Tevahiya pêvajo hema hema di wextê rast de pêk tê, ango, gava ku guheztin li depoya daneyê têne pejirandin, navnîşên lêgerînê têne nûve kirin.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan
Figure 2. Boriya daneyan bi bikaranîna Delta
Di beşên jêrîn de, em ê operasyona Delta-Connector, ya ku bi hilanînê ve girêdide û bûyerên CDC-ê bi qata veguheztinê diweşîne, ku binesaziyek veguheztina daneyê ya rast-ê ye ku bûyerên CDC-ê berbi mijarên Kafka ve diherike, vebêjin. Û di dawiyê de, em ê li ser çarçoveya pêvajoyê ya Delta stream-ê biaxivin, ku pêşdebirên serîlêdanê dikarin ji bo pêvajoyek daneyê û mantiqa dewlemendkirinê bikar bînin.

CDC (Change-Data-Capture)

Me karûbarek CDC ya bi navê Delta-Connector pêşve xistiye, ku dikare di wextê rast de guhertinên pejirandî ji dikana daneyê bigire û wan li stûnek binivîsîne. Guhertinên di wextê rast de ji qeydên danûstendinê û hilanînê têne girtin. Dumps têne bikar anîn ji ber ku têketinên danûstendinê bi gelemperî tevahiya dîroka guhertinan hilnagirin. Guhertin bi gelemperî wekî bûyerên Delta têne rêz kirin, ji ber vê yekê wergir ne hewce ye ku li ser ku guhertin ji ku tê xeman bike.

Delta-Connector gelek taybetmendiyên din piştgirî dike, wekî:

  • Qabiliyeta nivîsandina daneyên derana xwerû ya berê Kafka.
  • Qabiliyeta çalakkirina avêtina destan di her kêliyê de ji bo hemî tablo, tabloyek taybetî, an ji bo bişkokên bingehîn ên taybetî.
  • Kulîlk dikarin bi perçeyan werin vegerandin, ji ber vê yekê ne hewce ye ku di rewşek têkçûyî de ji nû ve dest pê bikin.
  • Ne hewce ye ku kilît li ser maseyan were danîn, ku ev pir girîng e ji bo ku seyrûsefera nivîsandina databasê tu carî ji hêla karûbarê me ve neyê asteng kirin.
  • Hebûna zêde ji ber bûyerên zêde li Herêmên Berdestbûna AWS.

Em naha piştgirî didin MySQL û Postgres, tevî bicîhkirina li ser AWS RDS û Aurora. Em jî piştgirî didin Cassandra (pir-master). Hûn dikarin bêtir agahdarî li ser Delta-Connector li vir bibînin posta blogê.

Kafka û qata veguhastinê

Parçeya veguheztina bûyerê ya Delta li ser karûbarê ragihandinê ya platformê hatî çêkirin Keystone.

Ji hêla dîrokî ve, şandina li ser Netflix ji bo gihîştinê ne ji dirêjbûnê xweştir bûye (li jêr binêre). gotara berê). Bazirganî di senaryoyên cihêreng de lihevnekirina daneya brokerê potansiyel bû. Bo nimûne, hilbijartina serokê nepak berpirsiyar e ku wergir bi potansiyel bûyerên dubare an winda bibin.

Bi Delta re, me garantiyên domdariya bihêztir dixwest da ku radestkirina bûyerên CDC ji firotgehên jêhatî re misoger bikin. Ji bo vê mebestê, me komek Kafka ya bi taybetî hatî sêwirandin wekî tiştek çîna yekem pêşniyar kir. Hûn dikarin di tabloya jêrîn de li hin mîhengên brokerê binêrin:

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan

Di komên Keystone Kafka de, hilbijartina serokê nepak bi gelemperî tê de tête peyda kirin ku gihîştina weşanger. Heke kopiyek nesenkronîzekirî wekî rêber were hilbijartin dibe ku ev bibe sedema windabûna peyamê. Ji bo komek Kafka ya nû ya hebûna bilind, vebijark hilbijartina serokê nepak zivirî da ku pêşî li windabûna peyamê bigire.

Me jî zêde kir faktora dubarekirinê ji 2 heta 3 û kêmtirîn replicas insync 1 ber 2. Weşanxaneyên ku ji vê komê re dinivîsin ji hemî kesên din re daxwaz dikin, û piştrast dikin ku 2 ji 3 replikayan peyamên herî rojane yên ku ji hêla weşanger ve hatine şandin hene.

Dema ku mînakek broker bi dawî dibe, mînakek nû şûna ya kevin digire. Lêbelê, brokerê nû dê hewce bike ku bi kopiyên nesenkronîzekirî re bigire, ku dibe ku çend demjimêran bigire. Ji bo kêmkirina dema vegerandina vê senaryoyê, me li şûna dîskên brokerê herêmî dest bi karanîna hilanîna daneya blokê (Amazon Elastic Block Store) kir. Gava ku mînakek nû li şûna mînakek brokerek qedandî digire, ew volga EBS ya ku mînaka qedandî hebû girêdide û dest bi peyamên nû dike. Ev pêvajo dema paqijkirina paşdemayî ji saetan heya hûrdeman kêm dike ji ber ku mînaka nû êdî hewce nake ku ji rewşek vala dubare bibe. Bi tevayî, veguheztina veqetandî û çerxa jiyanê ya broker bi girîngî bandora guheztina broker kêm dike.

Ji bo ku em garantiya radestkirina daneyê bêtir zêde bikin, me bikar anî sîstema şopandina peyamê ji bo tespîtkirina windabûna peyamê di bin şert û mercên giran de (mînak, desenkronîzekirina demjimêrê di serokê dabeşkirinê de).

Çarçoveya Pêvajoya Stream

Parçeya pêvajoyê ya Delta li ser platforma Netflix SPaaS-ê hatî çêkirin, ku yekbûna Apache Flink bi ekosîstema Netflix re peyda dike. Platform navbeynkariyek bikarhêner peyda dike ku bicîhkirina karên Flink û orkestrasyona komên Flink li ser platforma meya rêveberiya konteynera Titus birêve dibe. Navber di heman demê de mîhengên karan jî rêve dibe û dihêle bikarhêner bêyî ku karên Flink ji nû ve berhev bikin guheztinên vesazkirinê bi dînamîkî pêk bînin.

Delta çarçoveyek pêvajoyek tîrêjê li ser bingeha Flink û SPaaS ku bikar tîne peyda dike annotation-based DSL (Zimanê taybetî yê domainê) ji bo hûrguliyên teknîkî yên razber. Mînakî, ji bo destnîşankirina pêngava ku dê bûyer bi bangkirina karûbarên derveyî ve dewlemend bibin, bikarhêner hewce ne ku DSL-ya jêrîn binivîsin, û çarçove dê modelek li ser bingeha wê biafirîne, ku dê ji hêla Flink ve were darve kirin.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan
Figure 3. Nimûneya dewlemendkirina li ser DSL li Delta

Çarçoveya pêvajoyê ne tenê kêşeya fêrbûnê kêm dike, lê di heman demê de taybetmendiyên pêvajoyek tîrêjê yên hevpar ên wekî deduplication, şematîzekirin, û nermbûn û berxwedêriyê peyda dike da ku pirsgirêkên xebitandinê yên hevpar çareser bike.

Çarçoveya Pêvajoya Delta Stream ji du modulên sereke pêk tê, modula DSL & API û modula Runtime. Modula DSL & API API-yên DSL û UDF (Bikarhêner-Dasayî-Fonksiyon) peyda dike da ku bikarhêner bikarin mantiqa xweya pêvajoyê binivîsin (wek fîlterkirin an veguhertin). Modula Runtime pêkanîna parsekek DSL-ê peyda dike ku di modelên DAG-ê de nûnertiya hundurîn a gavên pêvajoyê çêdike. Parçeya Darvekirinê modelên DAG şîrove dike da ku daxuyaniyên Flink-ê yên rastîn bide destpêkirin û di dawiyê de serîlêdana Flink-ê dimeşîne. Mîmariya çarçoveyê di wêneya jêrîn de tête diyar kirin.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan
Wêne 4. Mîmariya Çarçoveya Pêvajoya Delta Stream

Vê rêbazê çend avantajên xwe hene:

  • Bikarhêner dikarin li ser mantiqa karsaziya xwe bisekinin bêyî ku di nav taybetmendiyên Flink an avahiya SPaaS de bisekinin.
  • Optimîzasyon dikare bi rengek ku ji bikarhêneran re zelal e were kirin, û xeletî bêyî ku hewcedariya guheztina koda bikarhêner (UDF) were sererast kirin.
  • Tecrûbeya serîlêdana Delta ji bo bikarhêneran hêsan e ji ber ku platform nermbûn û berxwedêriyê ji qutiyê peyda dike û cûrbecûr metrîkên hûrgulî yên ku ji bo hişyariyan têne bikar anîn berhev dike.

Bikaranîna hilberînê

Delta zêdetirî salek di hilberînê de ye û di gelek serîlêdanên Studio Netflix de rolek sereke dilîze. Wê alîkariya tîmê kir ku dozên karanînê yên wekî nîşankirina lêgerînê, hilanîna daneyê, û tevgerên xebatê-rêveberî bicîh bînin. Li jêr nihêrînek mîmariya asta bilind a platforma Delta ye.

Delta: Platforma Hevdengkirin û Zehfkirina Daneyan
Wêne 5. Mîmariya bilind a Delta.

Spasdarî

Em dixwazin ji kesên jêrîn re spas bikin ku di Netflix de beşdarî çêkirin û pêşkeftina Delta bûn: 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.

Çavkaniyên

  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: Pêvajoya bûyera serhêl. Commun. ACM 62 (5): 43–49 (2019). DOI: doi.org/10.1145/3312527

Ji bo webinarek belaş qeyd bikin: "Amûra Avakirina Daneyê ji bo Hilberîna Amazon Redshift."

Source: www.habr.com

Add a comment