Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот

Дар интизори оғози ҷараёни нав бо суръати Муҳандиси маълумот Мо тарчумаи материали шавковарро тайёр кардем.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот

шарҳ

Мо дар бораи як намунаи хеле маъмул сӯҳбат хоҳем кард, ки тавассути он барномаҳо мағозаҳои сершумори маълумотро истифода мебаранд, ки дар он ҳар як мағоза барои мақсадҳои худ истифода мешавад, масалан, барои нигоҳ доштани шакли каноникии додаҳо (MySQL ва ғайра), имкониятҳои пешрафтаи ҷустуҷӯро таъмин мекунанд (ElasticSearch, ғайра) .), кэш (Memcached ва ғайра) ва ғайра. Одатан, ҳангоми истифодаи якчанд мағозаҳои маълумот, яке аз онҳо ҳамчун мағозаи асосӣ ва дигарон ҳамчун мағозаҳои ҳосилшуда амал мекунанд. Ягона мушкилӣ ин аст, ки чӣ тавр ҳамоҳангсозии ин мағозаҳои маълумот.

Мо як қатор намунаҳои гуногунро дида баромадем, ки кӯшиш мекарданд, ки мушкилоти ҳамоҳангсозии мағозаҳои сершуморро ҳал кунанд, ба монанди навиштани дукарата, транзаксияҳои тақсимшуда ва ғайра. Аммо, ин равишҳо дар робита ба истифодаи воқеӣ, эътимоднокӣ ва нигоҳдорӣ маҳдудиятҳои назаррас доранд. Илова ба ҳамоҳангсозии додаҳо, баъзе барномаҳо инчунин бояд маълумотро тавассути занг задан ба хидматҳои беруна ғанӣ гардонанд.

Delta барои ҳалли ин мушкилот таҳия шудааст. Delta дар ниҳоят платформаи пайваста ва ба рӯйдодҳо асосёфтаро барои ҳамоҳангсозӣ ва ғанисозии додаҳо таъмин мекунад.

Қарорҳои мавҷуда

Вуруди дукарата

Барои ҳамоҳангсозии ду мағозаи маълумот, шумо метавонед навиштани дугонаро истифода баред, ки он ба як мағоза менависад ва баъд фавран ба дигараш менависад. Сабти аввалро метавон дубора санҷидан ва дуюмро қатъ кардан мумкин аст, агар сабти аввал пас аз тамом шудани шумораи кӯшишҳо ноком шавад. Аммо, агар навиштан ба мағозаи дуюм ноком шавад, ду мағозаи маълумот метавонанд аз ҳамоҳангӣ берун шаванд. Ин мушкилот одатан тавассути эҷоди тартиби барқарорсозӣ ҳал карда мешавад, ки метавонад мунтазам маълумотро аз нигаҳдории якум ба дуюм дубора интиқол диҳад ё ин корро танҳо дар сурати ошкор шудани фарқиятҳо дар маълумот анҷом диҳад.

Мушкилот:

Иҷрои расмиёти барқарорсозӣ кори мушаххасест, ки дубора истифода намешавад. Илова бар ин, маълумот дар байни маконҳои нигаҳдорӣ то анҷоми расмиёти барқарорсозӣ аз ҳамоҳангӣ боқӣ мемонад. Агар зиёда аз ду мағозаи маълумот истифода шаванд, ҳалли мушкилтар мегардад. Ниҳоят, тартиби барқарорсозӣ метавонад ба манбаи аслии маълумот сарборӣ илова кунад.

Ҷадвали сабтро тағир диҳед

Вақте ки тағирот дар маҷмӯи ҷадвалҳо рух медиҳад (ба монанди ворид кардан, навсозӣ ва нест кардани сабт), сабтҳои тағирот ба ҷадвали гузориш ҳамчун як ҷузъи ҳамон транзаксия илова карда мешаванд. Ришта ё раванди дигар пайваста рӯйдодҳоро аз ҷадвали сабт дархост мекунад ва онҳоро ба як ё якчанд мағозаҳои маълумот менависад, агар лозим бошад, пас аз тасдиқи сабт аз ҷониби ҳама мағозаҳо рӯйдодҳоро аз ҷадвали гузориш хориҷ мекунад.

Мушкилот:

Ин намуна бояд ҳамчун китобхона амалӣ карда шавад ва идеалӣ бе тағир додани рамзи барномае, ки онро истифода мебарад. Дар муҳити полиглот, татбиқи чунин китобхона бояд бо ҳама забони зарурӣ мавҷуд бошад, аммо таъмини мутобиқати функсияҳо ва рафтор дар байни забонҳо хеле душвор аст.

Мушкилоти дигар дар гирифтани тағйироти схема дар системаҳое мебошад, ки тағироти схемаи транзаксиониро дастгирӣ намекунанд [1][2], ба монанди MySQL. Аз ин рӯ, намунаи ворид кардани тағирот (масалан, тағир додани схема) ва ба таври транзаксия сабт кардани он дар ҷадвали сабти тағирот на ҳамеша кор мекунад.

Амалиётҳои тақсимшуда

Амалиётҳои тақсимшударо барои тақсим кардани транзаксия дар якчанд мағозаҳои гуногуни маълумот истифода бурдан мумкин аст, то ки амалиёт ё ба ҳама мағозаҳои додаҳои истифодашуда иҷро карда шавад ё ба ягонтои онҳо дода нашавад.

Мушкилот:

Муомилоти тақсимшуда барои мағозаҳои маълумоти гетерогенӣ мушкилоти хеле калон мебошанд. Аз рӯи табиати худ, онҳо метавонанд танҳо ба пасттарин тақсимкунандаи умумии системаҳои ҷалбшуда такя кунанд. Масалан, транзаксияҳои ХА иҷроро блок мекунанд, агар раванди дархост дар марҳилаи омодагӣ ноком шавад. Илова бар ин, XA ошкоркунии сарбастаро таъмин намекунад ё схемаҳои оптимистии назорати ҳамзамонро дастгирӣ намекунад. Илова бар ин, баъзе системаҳо ба монанди ElasticSearch XA ё дигар модели транзаксияҳои гетерогениро дастгирӣ намекунанд. Ҳамин тариқ, таъмини атомии навиштан дар технологияҳои гуногуни нигоҳдории маълумот барои барномаҳо вазифаи хеле душвор боқӣ мемонад [3].

Delta

Delta барои ҳалли маҳдудиятҳои қарорҳои мавҷудаи ҳамоҳангсозии додаҳо тарҳрезӣ шудааст ва инчунин имкон медиҳад, ки ғанисозии маълумот дар вақти парвоз. Ҳадафи мо ин буд, ки ҳамаи ин мураккабиро аз таҳиягарони барнома дур созем, то онҳо тавонанд ба татбиқи функсияҳои тиҷорат диққат диҳанд. Минбаъд мо "Ҷустуҷӯи филм", ҳолати воқеии истифодаи Delta Netflix -ро тавсиф хоҳем кард.

Netflix меъмории микросервисро ба таври васеъ истифода мебарад ва ҳар як микросервис маъмулан ба як намуди маълумот хизмат мерасонад. Маълумоти асосӣ дар бораи филм дар як хидмати хурд бо номи Movie Service мавҷуд аст ва маълумоти марбут ба монанди маълумот дар бораи продюсерҳо, актёрҳо, фурӯшандагон ва ғайра аз ҷониби якчанд микросервисҳои дигар (яъне Deal Service, Talent Service ва Vendor Service) идора карда мешавад.
Истифодабарандагони тиҷорӣ дар Netflix Studios аксар вақт бояд аз рӯи меъёрҳои гуногуни филм ҷустуҷӯ кунанд, аз ин рӯ барои онҳо хеле муҳим аст, ки тавонанд дар тамоми маълумоти марбут ба филм ҷустуҷӯ кунанд.

Пеш аз Delta, ба гурӯҳи ҷустуҷӯии филмҳо лозим буд, ки пеш аз индексатсияи додаҳои филм маълумотро аз микросервисҳои сершумор гиранд. Илова бар ин, даста бояд системаеро таҳия кунад, ки шохиси ҷустуҷӯро бо дархости тағирот аз дигар хидматрасониҳои дигар, ҳатто агар ҳеҷ гуна тағирот вуҷуд надошта бошад, давра ба давра навсозӣ кунад. Ин система зуд мураккаб ва нигоҳ доштани он душвор гашт.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот
Расми 1. Системаи овоздиҳӣ ба Delta
Пас аз истифодаи Delta, система ба системаи рӯйдодҳо содда карда шуд, тавре ки дар расми зерин нишон дода шудааст. Ҳодисаҳои CDC (Change-Data-Capture) бо истифода аз Delta-Connector ба мавзӯъҳои Keystone Кафка фиристода мешаванд. Замимаи Delta, ки бо истифода аз чаҳорчӯбаи коркарди Delta Stream сохта шудааст (дар асоси Flink) рӯйдодҳои CDC-ро аз мавзӯъ қабул мекунад, онҳоро тавассути занг задан ба хидматҳои дигар ғанӣ мегардонад ва дар ниҳоят маълумоти ғанишударо ба индекси ҷустуҷӯ дар Elasticsearch интиқол медиҳад. Тамоми раванд қариб дар вақти воқеӣ сурат мегирад, яъне ҳамин ки тағйирот ба анбори додаҳо ворид карда мешавад, индексҳои ҷустуҷӯ нав карда мешаванд.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот
Расми 2. лӯлаи маълумот бо истифода аз Delta
Дар бахшҳои минбаъда мо кори Delta-Connector-ро тавсиф хоҳем кард, ки ба нигаҳдорӣ пайваст мешавад ва рӯйдодҳои CDC-ро ба қабати нақлиёт нашр мекунад, ки инфрасохтори интиқоли маълумот дар вақти воқеӣ мебошад, ки рӯйдодҳои CDC-ро ба мавзӯъҳои Кафка интиқол медиҳад. Ва дар ниҳоят, мо дар бораи чаҳорчӯбаи коркарди ҷараёни Delta сӯҳбат хоҳем кард, ки таҳиягарони барнома метавонанд барои коркарди додаҳо ва мантиқи ғанӣ истифода баранд.

CDC (Тағйир-Маълумот-Забт)

Мо як хидмати CDC-ро бо номи Delta-Connector таҳия кардем, ки метавонад тағиротҳои содиршударо аз мағозаи маълумот дар вақти воқеӣ сабт кунад ва онҳоро ба ҷараён нависад. Тағирот дар вақти воқеӣ аз сабти транзаксия ва партовҳои нигоҳдорӣ гирифта мешавад. Партовҳо истифода мешаванд, зеро гузоришҳои транзаксия одатан тамоми таърихи тағиротро нигоҳ намедоранд. Тағйирот одатан ҳамчун рӯйдодҳои Delta силсилавӣ карда мешаванд, аз ин рӯ қабулкунанда набояд хавотир шавад, ки тағирот аз куҷо меояд.

Delta-Connector якчанд хусусиятҳои иловагиро дастгирӣ мекунад, ба монанди:

  • Қобилияти навиштани маълумоти баромади фармоишӣ дар гузашта Кафка.
  • Имконияти фаъол кардани партовҳои дастӣ дар вақти дилхоҳ барои ҳама ҷадвалҳо, ҷадвали мушаххас ё калидҳои мушаххаси ибтидоӣ.
  • Партовҳоро метавон ба пора-пора гирифтан мумкин аст, бинобар ин дар сурати нокомӣ ҳама чизро аз нав оғоз кардан лозим нест.
  • Ҷойгир кардани қулфҳо дар ҷадвалҳо лозим нест, ки ин хеле муҳим аст, то трафики навиштани пойгоҳи додаҳо ҳеҷ гоҳ аз ҷониби хидмати мо баста нашавад.
  • Дастрасии баланд аз сабаби ҳолатҳои зиёдатӣ дар минтақаҳои дастрасии AWS.

Мо дар айни замон MySQL ва Postgres, аз ҷумла ҷойгиркунӣ дар AWS RDS ва Aurora -ро дастгирӣ мекунем. Мо инчунин Кассандраро (мулти-мастер) дастгирӣ мекунем. Шумо метавонед тафсилоти бештарро дар бораи Delta-Connector дар ин ҷо пайдо кунед пости блог.

Кафка ва қабати нақлиёт

Қабати интиқоли рӯйдодҳои Delta дар хидмати паёмнависии платформа сохта шудааст инти олдиœанда.

Таърихан, интишор дар Netflix барои дастрасӣ оптимизатсия карда шудааст, на дарозумрӣ (нигаред ба поён). мақолаи гузашта). Мубодила номутобиқатии эҳтимолии маълумоти брокер дар сенарияҳои гуногуни канор буд. Барои намуна, интихоботи пешвои нопок барои қабулкунанда, ки эҳтимолан рӯйдодҳои такрорӣ ё гумшуда доранд, масъул аст.

Бо Delta, мо мехостем, ки кафолати устувории устуворро таъмин кунем, то интиқоли рӯйдодҳои CDC ба мағозаҳои тавлидшуда таъмин карда шавад. Бо ин мақсад, мо кластери махсуси тарҳрезишудаи Кафкаро ҳамчун объекти дараҷаи аввал пешниҳод кардем. Шумо метавонед ба баъзе танзимоти брокер дар ҷадвали зер нигаред:

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот

Дар кластерҳои Keystone Кафка, интихоботи пешвои нопок одатан барои таъмини дастрасии ношир дохил карда мешавад. Ин метавонад боиси гум шудани паёмҳо гардад, агар репликаи ҳамоҳангнашуда ҳамчун роҳбар интихоб шавад. Барои кластери нави дастрасии баланд Кафка, вариант интихоботи пешвои нопок барои пешгирӣ кардани талафоти паёмҳо хомӯш карда шудааст.

Мо хам зиёд шудем омили такрорӣ аз 2 то 3 ва нусхаҳои ҳадди ақали ҳамоҳангсозӣ 1 то 2. Ношироне, ки ба ин кластер менависанд, аз ҳамаи дигарон аксҳоро талаб мекунанд ва кафолат медиҳанд, ки 2 аз 3 реплика паёмҳои ҷорӣтарини фиристодаи ноширро доранд.

Вақте ки инстансияи брокер қатъ мешавад, намунаи нав ҷои пешинаро мегирад. Бо вуҷуди ин, ба брокери нав лозим меояд, ки бо репликаҳои ҳамоҳангнашуда, ки метавонад якчанд соат тӯл кашад, бирасад. Барои кам кардани вақти барқарорсозӣ барои ин сенария, мо ба ҷои дискҳои брокери маҳаллӣ истифода бурдани нигаҳдории додаҳои блокро (Amazon Elastic Block Store) оғоз кардем. Вақте ки як мисоли нав як брокери қатъшударо иваз мекунад, он ҳаҷми EBS-ро замима мекунад, ки инстансияи қатъшуда дошт ва ба гирифтани паёмҳои нав шурӯъ мекунад. Ин раванд вақти тозакунии пасмондаро аз соатҳо то дақиқаҳо коҳиш медиҳад, зеро мисоли нав дигар набояд аз ҳолати холӣ такрор шавад. Дар маҷмӯъ, давраҳои нигоҳдории ҷудогона ва брокер таъсири гузариши брокерро ба таври назаррас коҳиш медиҳанд.

Барои боз ҳам баланд бардоштани кафолати интиқоли маълумот, мо истифода мебарем системаи пайгирии паёмҳо барои ошкор кардани ҳама гуна талафоти паём дар шароити шадид (масалан, синхронизатсияи соат дар раҳбари тақсимот).

Чаҳорчӯбаи коркарди ҷараён

Қабати коркарди Delta дар болои платформаи Netflix SPaaS сохта шудааст, ки ҳамгироии Apache Flink-ро бо экосистемаи Netflix таъмин мекунад. Платформа интерфейси корбареро пешкаш мекунад, ки ҷойгиркунии ҷойҳои кори Flink ва ташкили кластерҳои Flink дар болои платформаи идоракунии контейнерҳои Titus-ро идора мекунад. Интерфейс инчунин конфигуратсияҳои корро идора мекунад ва ба корбарон имкон медиҳад, ки бидуни таълифи корҳои Flink ба таври динамикӣ тағироти конфигуратсияро анҷом диҳанд.

Delta чаҳорчӯбаи коркарди ҷараёнро дар асоси Flink ва SPaaS, ки истифода мебарад, таъмин мекунад ба эзоҳ асос ёфтааст DSL (Забони мушаххаси домен) барои тафсилоти абстрактии техникӣ. Масалан, барои муайян кардани қадаме, ки дар он рӯйдодҳо тавассути занги хидматҳои беруна ғанӣ мешаванд, корбарон бояд DSL-и зеринро нависанд ва чаҳорчӯба дар асоси он моделеро эҷод мекунад, ки онро Флинк иҷро мекунад.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот
Тасвири 3. Намунаи ғанисозӣ дар DSL дар Delta

Чаҳорчӯби коркард на танҳо хатти омӯзишро коҳиш медиҳад, балки инчунин хусусиятҳои коркарди ҷараёнро ба монанди нусхабардорӣ, схемаизатсия ва чандирӣ ва устуворӣ барои ҳалли мушкилоти умумии амалиётӣ таъмин мекунад.

Framework Delta Stream Processing аз ду модули асосӣ, модули DSL & API ва модули Runtime иборат аст. Модули DSL & API API-ҳои DSL ва UDF (Истифодабаранда-Функсия)-ро таъмин мекунад, то корбарон метавонанд мантиқи коркарди худро нависад (ба монанди филтр ё тағирот). Модули Runtime татбиқи таҳлилгари DSL-ро таъмин мекунад, ки намоиши дохилии қадамҳои коркардро дар моделҳои DAG месозад. Ҷузъи иҷро моделҳои DAG-ро тафсир мекунад, то изҳороти воқеии Flink-ро оғоз кунад ва дар ниҳоят барномаи Flink-ро иҷро кунад. Меъмории чаҳорчӯба дар расми зерин тасвир шудааст.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот
Тасвири 4. Меъмории чаҳорчӯбаи коркарди Delta Stream

Ин равиш як қатор афзалиятҳо дорад:

  • Истифодабарандагон метавонанд ба мантиқи тиҷории худ тамаркуз кунанд, бидуни омӯхтани мушаххасоти Flink ё сохтори SPaaS.
  • Оптимизатсияро метавон тавре анҷом дод, ки барои корбарон шаффоф бошад ва хатогиҳоро бидуни талаб кардани тағирот дар коди корбар (UDF) ислоҳ кардан мумкин аст.
  • Таҷрибаи барномаи Delta барои корбарон содда карда шудааст, зеро платформа чандирӣ ва устувориро аз қуттӣ таъмин мекунад ва ченакҳои гуногуни муфассалро ҷамъ меорад, ки метавонанд барои огоҳӣ истифода шаванд.

Истифодаи истеҳсолот

Delta зиёда аз як сол дар истеҳсолот аст ва дар бисёре аз барномаҳои Netflix Studio нақши калидӣ мебозад. Вай ба гурӯҳҳо дар татбиқи ҳолатҳои истифода, аз қабили индексатсияи ҷустуҷӯ, нигоҳдории маълумот ва ҷараёни кории ба рӯйдодҳо асосёфта кӯмак кард. Дар зер шарҳи меъмории сатҳи баланди платформаи Delta оварда шудааст.

Delta: Платформаи ҳамоҳангсозии маълумот ва ғанисозии маълумот
Расми 5. Меъмории сатҳи баланди Delta.

Эътирофҳо

Мо ба шахсони зерин, ки дар эҷод ва рушди Delta дар Netflix иштирок доштанд, ташаккур мегӯем: Аллен Ванг, Чарлз Чжао, Ҷейбин Юн, Ҷош Снайдер, Кастури Чаттерҷӣ, Марк Чо, Олоф Йоханссон, Пиюш Гоял, Прашант Рамдас, Рагурам Онти Сринивасан, Сандип Гупта, Стивен Ву, Таранга Гамаэтиге, Юн Ванг ва Чжэнчжун Сю.

Манбаъҳои иттилоот

  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. Мартин Kleppmann, Alastair R. Beresford, Boerge Svingen: коркарди рӯйдодҳои онлайн. Коммун. ACM 62(5): 43–49 (2019). DOI: doi.org/10.1145/3312527

Барои вебинари ройгон обуна шавед: "Асбоби сохтани маълумот барои нигаҳдории Amazon Redshift."

Манбаъ: will.com

Илова Эзоҳ