Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы

Темп боюнча жаңы агымдын ишке киришинин алдында Маалымат инженери Биз кызыктуу материалдын котормосун даярдадык.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы

жалпы көрүнүш

Биз тиркемелер бир нече маалымат дүкөндөрүн колдонгон, мисалы, маалыматтардын канондук формасын (MySQL ж.б.) сактоо үчүн, өркүндөтүлгөн издөө мүмкүнчүлүктөрүн (ElasticSearch, ж.б.) .), кэштөө (Memcached ж.б.) жана башкалар. Адатта, бир нече маалымат дүкөндөрүн колдонууда, алардын бири негизги дүкөн, ал эми башкалары туунду дүкөндөр катары иштейт. Бир гана көйгөй бул маалымат дүкөндөрүн синхрондоштуруу болуп саналат.

Биз бир нече дүкөндөрдү синхрондоштуруу маселесин чечүүгө аракет кылган бир катар ар кандай үлгүлөрдү карадык, мисалы, кош жазуулар, бөлүштүрүлгөн транзакциялар ж.б. Бирок, бул ыкмалар реалдуу жашоодо колдонуу, ишенимдүүлүк жана тейлөө жагынан олуттуу чектөөлөргө ээ. Маалыматтарды синхрондоштуруудан тышкары, кээ бир тиркемелер тышкы кызматтарды чакыруу менен маалыматтарды байытышы керек.

Delta бул көйгөйлөрдү чечүү үчүн иштелип чыккан. Delta акыры маалыматтарды синхрондоштуруу жана байытуу үчүн ырааттуу, окуяга негизделген платформаны камсыз кылат.

Бар чечимдер

Кош кириш

Эки маалымат дүкөнүн синхрондоштуруу үчүн, сиз кош жазууну колдонсоңуз болот, ал бир дүкөнгө жазып, андан кийин дароо башкасына жазат. Аракеттердин саны түгөнгөндөн кийин биринчи жаздыруу ишке ашпай калса, биринчи жазууну кайра аракет кылып көрүүгө болот, ал эми экинчиси токтотулушу мүмкүн. Бирок, экинчи дүкөнгө жазуу ишке ашпай калса, эки маалымат дүкөнү шайкештешпей калышы мүмкүн. Бул көйгөй, адатта, биринчи сактагычтан экинчиге маалыматтарды мезгил-мезгили менен кайра өткөрүп бере турган калыбына келтирүү жол-жобосун түзүү аркылуу чечилет же маалыматтарда айырмачылыктар аныкталганда гана жасай алат.

Көйгөйлөр:

Калыбына келтирүү жол-жобосун аткаруу - бул кайра колдонууга болбойт. Мындан тышкары, сактоо жерлеринин ортосундагы маалыматтар калыбына келтирүү процедурасы ишке ашмайынча синхрондобой калат. Эгер экиден ашык маалымат кампалары колдонулса, чечим татаалыраак болот. Акырында, калыбына келтирүү процедурасы баштапкы маалымат булагына жүктү кошо алат.

Журнал таблицасын өзгөртүү

Таблицалардын топтомуна өзгөртүүлөр киргенде (мисалы, жазууну киргизүү, жаңылоо жана жок кылуу), өзгөртүү жазуулары журналдын таблицасына ошол эле транзакциянын бир бөлүгү катары кошулат. Башка жип же процесс журналдын таблицасынан окуяларды тынымсыз сурайт жана аларды бир же бир нече маалымат дүкөндөрүнө жазат, керек болсо жазуу бардык дүкөндөр тарабынан тастыкталгандан кийин журналдын таблицасынан окуяларды алып салуу.

Көйгөйлөр:

Бул үлгү китепкана катары ишке ашырылышы керек, эң жакшысы аны колдонгон тиркеменин кодун өзгөртпөстөн. Полиглоттук чөйрөдө мындай китепкананы ишке ашыруу ар кандай керектүү тилде болушу керек, бирок тилдер боюнча функциялардын жана жүрүм-турумдун ырааттуулугун камсыз кылуу өтө кыйын.

Дагы бир көйгөй MySQL сыяктуу транзакциялык схемаларды өзгөртүүнү [1][2] колдоого албаган системаларда схемалык өзгөртүүлөрдү алууда жатат. Демек, өзгөртүү киргизүү үлгүсү (мисалы, схеманы өзгөртүү) жана аны өзгөртүүлөр журналынын таблицасында транзакциялуу түрдө жазуу дайыма эле иштей бербейт.

Бөлүштүрүлгөн транзакциялар

Бөлүштүрүлгөн транзакциялар транзакцияны бир нече гетерогендүү маалымат дүкөндөрүнө бөлүштүрүү үчүн колдонулушу мүмкүн, ошентип операция бардык колдонулган маалымат дүкөндөрүнө берилген, же алардын бирине да берилбейт.

Көйгөйлөр:

Бөлүштүрүлгөн транзакциялар гетерогендүү маалымат дүкөндөрү үчүн абдан чоң көйгөй болуп саналат. Табияты боюнча алар тартылган системалардын эң төмөнкү жалпы бөлүктөрүнө гана таяна алышат. Мисалы, даярдоо баскычында өтүнмө процесси ишке ашпай калса, XA транзакциялары аткарылышын блоктойт. Кошумча, XA туюк аныктоону камсыз кылбайт же оптимисттик параллелдүүлүктү башкаруу схемаларын колдобойт. Мындан тышкары, ElasticSearch сыяктуу кээ бир системалар XA же башка гетерогендүү транзакция моделин колдобойт. Ошентип, ар кандай маалыматтарды сактоо технологияларында жазуу атомдуулугун камсыз кылуу тиркемелер үчүн өтө татаал маселе бойдон калууда [3].

Delta

Delta учурдагы маалыматтарды синхрондоштуруу чечимдеринин чектөөлөрүн чечүү үчүн иштелип чыккан жана ошондой эле маалыматтарды тез байытууга мүмкүндүк берет. Биздин максат бул татаалдыктарды тиркемени иштеп чыгуучулардан алыстатып, алар бизнестин функцияларын ишке ашырууга толугу менен көңүл бурушу үчүн болгон. Андан кийин биз Netflix'тин Deltaсы үчүн чыныгы колдонуу учуру болгон "Тасма издөөнү" сүрөттөп беребиз.

Netflix микросервис архитектурасын кеңири колдонот жана ар бир микросервис адатта берилиштердин бир түрүн тейлейт. Тасма тууралуу негизги маалымат Movie Service деп аталган микросервисте камтылган жана продюсерлер, актерлор, сатуучулар жана башкалар тууралуу маалымат сыяктуу бир нече башка микросервистер (атап айтканда, Deal Service, Talent Service жана Vendor Service) тарабынан башкарылат.
Netflix Studios бизнес колдонуучулары көбүнчө кинонун ар кандай критерийлери боюнча издөөгө муктаж, ошондуктан алар үчүн киного байланыштуу бардык маалыматтар боюнча издөө мүмкүнчүлүгү абдан маанилүү.

Deltaга чейин, тасманы издөө тобу тасма дайындарын индекстөөдөн мурун бир нече микросервистерден маалыматтарды алып чыгышы керек болчу. Мындан тышкары, команда такыр өзгөрбөсө дагы, башка микросервистерден өзгөртүүлөрдү талап кылуу менен издөө индексин мезгил-мезгили менен жаңылай турган системаны иштеп чыгышы керек болчу. Бул система тез эле татаал жана тейлөө кыйын болуп калды.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы
Сүрөт 1. Дельтага шайлоо системасы
Delta колдонгондон кийин, система төмөнкү сүрөттө көрсөтүлгөндөй, окуяга негизделген системага жөнөкөйлөштүрүлгөн. CDC (Change-Data-Capture) окуялары Delta-Connector аркылуу Keystone Kafka темаларына жөнөтүлөт. Delta Stream Processing Framework (Flink негизинде) аркылуу курулган Delta тиркемеси темадагы CDC окуяларын кабыл алып, башка микросервистерди чакыруу менен аларды байытат жана акырында байытылган маалыматтарды Elasticsearch издөө индексине өткөрүп берет. Бүт процесс дээрлик реалдуу убакытта ишке ашат, башкача айтканда, маалыматтар кампасына өзгөртүүлөр киргизилгенден кийин издөө индекстери жаңыртылып турат.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы
2-сүрөт. Delta аркылуу маалымат түтүгү
Кийинки бөлүмдөрдө биз CDC окуяларын Кафка темаларына багыттаган реалдуу убакыт режиминдеги маалыматтарды берүү инфраструктурасы болгон CDC окуяларын транспорттук катмарга туташтырган жана CDC окуяларын жарыялаган Delta-Connector иштешин сүрөттөп беребиз. Жана эң аягында биз Delta агымын иштетүү негизи жөнүндө сүйлөшөбүз, аны тиркемени иштеп чыгуучулар маалыматтарды иштетүү жана байытуу логикасы үчүн колдоно алышат.

CDC (Өзгөртүү-Маалыматтарды басып алуу)

Биз Delta-Connector деп аталган CDC кызматын иштеп чыктык, ал реалдуу убакытта маалыматтар сактагычынан жасалган өзгөрүүлөрдү кармап, аларды агымга жаза алат. Реалдуу убактагы өзгөртүүлөр транзакциялар журналынан жана сактоо таштандыларынан алынат. Демптер колдонулат, анткени транзакциялардын журналдары адатта өзгөрүүлөрдүн бүт тарыхын сактабайт. Өзгөрүүлөр адатта Delta окуялары катары серияланат, андыктан алуучу өзгөрүү кайдан келет деп тынчсызданбашы керек.

Delta-Connector бир нече кошумча функцияларды колдойт, мисалы:

  • Кафкадан өткөн ыңгайлаштырылган чыгаруу маалыматтарын жазуу мүмкүнчүлүгү.
  • Бардык таблицалар, белгилүү бир таблица же белгилүү бир негизги ачкычтар үчүн каалаган убакта кол менен таштандыларды иштетүү мүмкүнчүлүгү.
  • Таштандыларды бөлүктөргө бөлүп алууга болот, андыктан иштебей калган учурда баарын кайра баштоонун кереги жок.
  • Таблицаларга кулпуларды коюунун кереги жок, бул маалымат базасы жазуу трафиги биздин кызмат тарабынан эч качан бөгөттөлбөшү үчүн абдан маанилүү.
  • AWS Availability Zones ичиндеги ашыкча инстанциялардан улам жогорку жеткиликтүүлүк.

Учурда биз MySQL жана Postgres, анын ичинде AWS RDS жана Aurora боюнча жайылтууларды колдойбуз. Биз ошондой эле Кассандраны (мульти-мастер) колдойбуз. Delta-Connector жөнүндө көбүрөөк маалыматты бул жерден таба аласыз блог.

Кафка жана транспорттук катмар

Delta окуя транспорттук катмары платформанын билдирүү кызматына курулган Keystone.

Тарыхый жактан алганда, Netflixте жайгаштыруу узак мөөнөткө эмес, жеткиликтүүлүк үчүн оптималдаштырылган (төмөндө караңыз). мурунку макала). Соода ар кандай четки сценарийлерде потенциалдуу брокер маалыматтарынын дал келбестиги болгон. Мисалы, таза эмес лидер шайлоо алуучу кайталануучу же жоголгон окуяларга жооп берет.

Delta менен биз CDC окуяларын алынган дүкөндөргө жеткирүүнү камсыз кылуу үчүн бекемирээк кепилдиктерди каалайбыз. Бул үчүн биз биринчи класстагы объект катары атайын иштелип чыккан Кафка кластерин сунуштадык. Төмөнкү таблицадан брокердин кээ бир жөндөөлөрүн карасаңыз болот:

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы

Keystone Kafka кластерлеринде, таза эмес лидер шайлоо Адатта, жарыялоочулардын жеткиликтүүлүгүн камсыз кылуу үчүн камтылган. Бул синхрондоштурулган реплика лидер болуп шайланса, билдирүү жоголушуна алып келиши мүмкүн. Жаңы жогорку жеткиликтүүлүк Кафка кластери үчүн опция таза эмес лидер шайлоо билдирүү жоголбоо үчүн өчүрүлгөн.

Биз дагы көбөйдүк репликация фактору 2ден 3кө чейин жана минималдуу инсинхрондук репликалар 1ден 2ге чейин. Бул кластерге кат жазган жарыялоочулар 2 репликанын 3синде жарыялоочу тарабынан жөнөтүлгөн эң учурдагы билдирүүлөр болушун камсыз кылуу үчүн, бардык башкалардан актарды талап кылат.

Брокердин инстанциясы аяктаганда, жаңы инстанция эскисин алмаштырат. Бирок, жаңы брокер бир нече саат талап кылынышы мүмкүн синхрондоштуруу эмес репликаларды, кууп чыгышы керек болот. Бул сценарийди калыбына келтирүү убактысын кыскартуу үчүн, биз жергиликтүү брокердик дисктердин ордуна блок маалымат сактагычын (Amazon Elastic Block Store) колдоно баштадык. Жаңы инстанция токтотулган брокер инстанциясын алмаштырганда, ал токтотулган инстанцияда болгон EBS көлөмүн тиркейт жана жаңы билдирүүлөрдү кууп баштайт. Бул процесс артта калуу убактысын сааттан мүнөткө чейин кыскартат, анткени жаңы инстанция мындан ары бош абалдан кайталанышынын кереги жок. Жалпысынан, өзүнчө сактоо жана брокердин өмүр циклдери брокерди алмаштыруунун таасирин олуттуу түрдө азайтат.

маалыматтарды жеткирүү гарантиясын мындан ары жогорулатуу үчүн, биз колдонгон билдирүүлөрдү көзөмөлдөө системасы экстремалдык шарттарда кандайдыр бир билдирүү жоголушун аныктоо үчүн (мисалы, бөлүм лидеринде сааттын десинхронизациясы).

Stream Processing Framework

Delta иштетүү катмары Netflix экосистемасы менен Apache Flink интеграциясын камсыз кылган Netflix SPaaS платформасынын үстүнө курулган. Платформа Flink жумуштарын жайгаштырууну жана Titus контейнер башкаруу платформабыздын үстүндө Flink кластерлерин башкарууну башкарган колдонуучу интерфейсин камсыз кылат. Интерфейс ошондой эле жумуш конфигурацияларын башкарат жана колдонуучуларга Flink тапшырмаларын кайра компиляциялоосуз динамикалык түрдө конфигурацияны өзгөртүүгө мүмкүндүк берет.

Delta колдонгон Flink жана SPaaS негизинде агымды иштетүү негизин камсыз кылат аннотацияга негизделген Техникалык деталдарды абстракттуу кылуу үчүн DSL (Доменге тиешелүү тил). Мисалы, тышкы кызматтарды чакыруу менен окуялар байыта турган кадамды аныктоо үчүн, колдонуучулар төмөнкү DSL жазуусу керек, ал эми алкак анын негизинде Флинк тарабынан аткарыла турган моделди түзөт.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы
Сүрөт 3. Deltaдагы DSL боюнча байытуунун мисалы

Иштетүү алкагы окуу ийри сызыгын гана азайтпастан, ошондой эле жалпы операциялык маселелерди чечүү үчүн дедупликация, схемалаштыруу, ийкемдүүлүк жана ийкемдүүлүк сыяктуу жалпы агымды иштетүү өзгөчөлүктөрүн камсыз кылат.

Delta Stream Processing Framework эки негизги модулдан турат, DSL & API модулу жана Runtime модулу. DSL & API модулу DSL жана UDF (Колдонуучу тарабынан аныкталган функция) API'лери менен камсыз кылат, ошондуктан колдонуучулар өздөрүнүн иштетүү логикасын (мисалы, чыпкалоо же трансформациялар) жаза алышат. Runtime модулу DAG моделдеринде кайра иштетүү кадамдарынын ички өкүлчүлүгүн түзгөн DSL талдоочу ишке ашырууну камсыз кылат. Аткаруу компоненти DAG моделдерин чечмелеп, чыныгы Flink билдирүүлөрүн инициализациялайт жана акыры Flink тиркемесин иштетет. Алкактын архитектурасы төмөнкү сүрөттө көрсөтүлгөн.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы
Сүрөт 4. Delta Stream Processing Framework архитектурасы

Бул ыкма бир нече артыкчылыктарга ээ:

  • Колдонуучулар Flink же SPaaS структурасынын өзгөчөлүктөрүн изилдеп отурбастан, өздөрүнүн бизнес логикасына көңүл бура алышат.
  • Оптималдаштыруу колдонуучулар үчүн ачык-айкын жол менен жүргүзүлүшү мүмкүн жана каталар колдонуучунун кодуна (UDF) эч кандай өзгөртүүлөрдү талап кылбастан оңдолот.
  • Delta колдонмосунун тажрыйбасы колдонуучулар үчүн жөнөкөйлөштүрүлгөн, анткени платформа ийкемдүүлүктү жана ийкемдүүлүктү камсыз кылат жана эскертүүлөр үчүн колдонула турган ар кандай деталдуу көрсөткүчтөрдү чогултат.

Өндүрүш колдонуу

Delta бир жылдан ашык убакыттан бери өндүрүштө жана көптөгөн Netflix Studio тиркемелеринде негизги ролду ойнойт. Ал командаларга издөөнү индекстөө, маалыматтарды сактоо жана окуяга негизделген иш процесстери сыяктуу колдонуу учурларын ишке ашырууга жардам берди. Төмөндө Delta платформасынын жогорку деңгээлдеги архитектурасына сереп берилет.

Delta: Маалыматтарды синхрондоштуруу жана байытуу платформасы
Сүрөт 5. Дельтанын жогорку деңгээлдеги архитектурасы.

Ыракматтар

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

булактар

  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 сактагычы үчүн маалымат түзүү куралы."

Source: www.habr.com

Комментарий кошуу