Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua

I ka manaʻo o ka hoʻomaka ʻana o kahi kahe hou i ka uku ʻEnekinia ʻIkepili Ua hoʻomākaukau mākou i kahi unuhi o nā mea hoihoi.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua

Hōʻuluʻulu manaʻo

E kamaʻilio mākou e pili ana i kahi hiʻohiʻona kaulana loa kahi e hoʻohana ai nā noi i nā hale kūʻai ʻikepili he nui, kahi e hoʻohana ʻia ai kēlā me kēia hale kūʻai no kāna mau kumu ponoʻī, no ka laʻana, e mālama i ke ʻano canonical o ka ʻikepili (MySQL, etc.), hāʻawi i ka hiki ke huli holomua (ElasticSearch, etc.), caching (Memcached, etc.) a me nā mea ʻē aʻe. ʻO ka maʻamau, i ka wā e hoʻohana ai i nā hale kūʻai ʻikepili he nui, hana kekahi o lākou ma ke ʻano he hale kūʻai mua a ʻo nā mea ʻē aʻe he hale kūʻai derivative. ʻO ka pilikia wale nō ka pehea e hoʻonohonoho ai i kēia mau hale kūʻai ʻikepili.

Ua nānā mākou i kekahi mau hiʻohiʻona like ʻole i hoʻāʻo e hoʻoponopono i ka pilikia o ka hoʻonohonoho ʻana i nā hale kūʻai he nui, e like me ke kākau pālua, nā kālepa hoʻokaʻawale, etc. Eia naʻe, he mau palena koʻikoʻi kēia mau ala e pili ana i ka hoʻohana maoli ʻana, ka hilinaʻi, a me ka mālama ʻana. Ma waho aʻe o ka hoʻonohonoho ʻikepili, pono kekahi mau noi e hoʻonui i ka ʻikepili ma ke kāhea ʻana i nā lawelawe o waho.

Ua kūkulu ʻia ʻo Delta e hoʻoponopono i kēia mau pilikia. Hāʻawi ʻo Delta i kahi kahua paʻa, hoʻokele hanana no ka hoʻonohonoho ʻikepili a me ka hoʻonui ʻana.

Nā hāʻina e kū nei

Komo pālua

No ka mālama ʻana i ʻelua hale kūʻai ʻikepili i ka sync, hiki iā ʻoe ke hoʻohana i ke kākau ʻelua, e kākau i kahi hale kūʻai a laila kākau i kekahi ma hope koke. Hiki ke ho'āʻo hou i ka hoʻopaʻa ʻana mua a hiki ke hoʻopau ʻia ka lua inā hāʻule ka mea mua ma hope o ka pau ʻana o ka nui o nā hoʻāʻo. Eia nō naʻe, hiki ʻole i nā hale kūʻai ʻikepili ʻelua ke hele ʻole inā hāʻule ke kākau ʻana i ka hale kūʻai ʻelua. Hoʻoholo pinepine ʻia kēia pilikia ma ka hana ʻana i kahi kaʻina hana hoʻihoʻi e hiki ke hoʻololi hou i ka ʻikepili mai ka waihona mua a i ka lua, a i ʻole e hana pēlā inā ʻike ʻia nā ʻokoʻa i ka ʻikepili.

Nā pilikia:

ʻO ka hana ʻana i kahi kaʻina hana hoʻihoʻi he hana kikoʻī ʻaʻole hiki ke hoʻohana hou ʻia. Eia kekahi, ʻaʻole sync ka ʻikepili ma waena o nā wahi mālama a hiki i ke kaʻina hana hoʻihoʻi. ʻOi aku ka paʻakikī o ka hoʻonā inā hoʻohana ʻia nā hale kūʻai ʻikepili ʻelua. ʻO ka hope, hiki i ke kaʻina hana hoʻihoʻi ke hoʻohui i ka ukana i ke kumu ʻikepili kumu.

E hoʻololi i ka papa kuhikuhi

Ke hiki mai nā hoʻololi i kahi pūʻulu o nā papa (e like me ka hoʻokomo ʻana, ka hoʻonui ʻana, a me ka holoi ʻana i kahi moʻolelo), hoʻohui ʻia nā moʻolelo hoʻololi i ka papa kuhikuhi ma ke ʻano o ka hana like. Ke noi mau nei kekahi pae a i ʻole kaʻina hana i nā hanana mai ka papa lāʻau a kākau iā lākou i hoʻokahi a ʻoi aku paha nā hale kūʻai ʻikepili, inā pono, e wehe i nā hanana mai ka papa lāʻau ma hope o ka hōʻoia ʻana o ka moʻolelo e nā hale kūʻai a pau.

Nā pilikia:

Pono e hoʻokō ʻia kēia ʻano ma ke ʻano he waihona a, kūpono, me ka hoʻololi ʻole i ke code o ka noi e hoʻohana ai. I loko o kahi polyglot environment, pono e hoʻokō ʻia kahi hale waihona puke ma kekahi ʻōlelo e pono ai, akā paʻakikī loa ka hōʻoia ʻana o ka hana a me ka hana ma nā ʻōlelo.

Aia kekahi pilikia i ka loaʻa ʻana o nā loli schema i nā ʻōnaehana i kākoʻo ʻole i nā hoʻololi schema transactional [1] [2], e like me MySQL. No laila, ʻaʻole e holo mau ke ʻano o ka hoʻololi ʻana (no ka laʻana, ka hoʻololi ʻana i ka schema) a me ka hoʻopaʻa ʻana ma ka papa kuhikuhi log change.

Nā Kūʻai Kūʻai

Hiki ke hoʻohana ʻia nā hana i hoʻokaʻawale ʻia no ka hoʻokaʻawale ʻana i kahi kālepa ma waena o nā hale kūʻai ʻikepili heterogeneous i mea e paʻa ai ka hana i nā hale kūʻai ʻikepili āpau i hoʻohana ʻia, a ʻaʻole i hoʻopaʻa ʻia i kekahi o lākou.

Nā pilikia:

ʻO nā kālepa i hoʻolaha ʻia he pilikia nui loa no nā hale kūʻai ʻikepili heterogeneous. Ma ko lākou ʻano, hiki iā lākou ke hilinaʻi wale i ka denominator maʻamau haʻahaʻa loa o nā ʻōnaehana pili. No ka laʻana, hoʻopaʻa nā hana XA i ka hoʻokō inā hāʻule ke kaʻina noi i ka wā hoʻomākaukau. Eia hou, ʻaʻole hāʻawi ʻo XA i ka ʻike maka a i ʻole ke kākoʻo ʻana i nā hoʻolālā mana concurrency. Eia kekahi, ʻaʻole kākoʻo kekahi mau ʻōnaehana e like me ElasticSearch i ka XA a i ʻole kekahi kumu hoʻohālike like ʻole. No laila, ʻo ka hōʻoia ʻana i ke kākau ʻana i ka atomicity i nā ʻenehana mālama ʻikepili he mea paʻakikī loa ia no nā noi [3].

Delta

Ua hoʻolālā ʻia ʻo Delta e hoʻoponopono i nā palena o nā hoʻonā hoʻonohonoho hoʻonohonoho ʻikepili i kēia manawa a hiki nō hoʻi i ka hoʻonui ʻana i ka ʻikepili ma ka lele. ʻO kā mākou pahuhopu ka wehe ʻana i kēia mau paʻakikī a pau mai nā mea hoʻomohala noi i hiki iā lākou ke nānā pono i ka hoʻokō ʻana i nā hana ʻoihana. A laila e wehewehe mākou i ka "Huli Kiʻiʻoniʻoni", ka hihia hoʻohana maoli no Netflix's Delta.

Hoʻohana nui ʻo Netflix i kahi hoʻolālā microservice, a lawelawe maʻamau kēlā me kēia microservice i hoʻokahi ʻano ʻikepili. Aia ka ʻike kumu e pili ana i kahi kiʻiʻoniʻoni i loko o kahi microservice i kapa ʻia ʻo Movie Service, a me nā ʻikepili pili, e like me ka ʻike e pili ana i nā mea hana, nā mea keaka, nā mea kūʻai aku, a pēlā aku, e mālama ʻia e kekahi mau microservices (ʻo ia hoʻi ʻo Deal Service, Talent Service a me Vendor Service).
Pono nā mea hoʻohana pāʻoihana ma Netflix Studios e ʻimi ma waena o nā koina kiʻiʻoniʻoni like ʻole, ʻo ia ke kumu he mea nui loa iā lākou ke ʻimi i nā ʻikepili pili pili kiʻiʻoniʻoni.

Ma mua o Delta, pono ka hui huli kiʻiʻoniʻoni e huki i ka ʻikepili mai nā microservices ma mua o ka helu ʻana i ka ʻikepili kiʻiʻoniʻoni. Eia hou, pono ka hui e hoʻomohala i kahi ʻōnaehana e hoʻololi i kēlā me kēia manawa i ka helu hulina ma ke noi ʻana i nā hoʻololi mai nā microservice ʻē aʻe, ʻoiai inā ʻaʻohe loli. Ua lilo koke kēia ʻōnaehana i mea paʻakikī a paʻakikī hoʻi e mālama.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua
Kiʻi 1. Pūnaehana koho iā Delta
Ma hope o ka hoʻohana ʻana iā Delta, ua maʻalahi ka ʻōnaehana i kahi ʻōnaehana hoʻokele hanana e like me ka hōʻike ʻana ma ke kiʻi aʻe. Hoʻouna ʻia nā hanana CDC (Change-Data-Capture) i nā kumuhana Keystone Kafka me Delta-Connector. ʻO kahi noi Delta i kūkulu ʻia me ka Delta Stream Processing Framework (e pili ana iā Flink) e loaʻa i nā hanana CDC mai kahi kumuhana, hoʻonui iā lākou ma ke kāhea ʻana i nā microservice ʻē aʻe, a ma hope o ka hāʻawi ʻana i ka ʻikepili i hoʻonui ʻia i kahi kuhikuhi hulina ma Elasticsearch. ʻO ke kaʻina holoʻokoʻa e kokoke ana i ka manawa maoli, ʻo ia hoʻi, i ka wā e hoʻololi ʻia ai nā hoʻololi i ka hale waihona ʻikepili, hoʻonui ʻia nā indexes huli.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua
Kiʻi 2. ʻIkepili pipeline me Delta
Ma nā ʻāpana aʻe, e wehewehe mākou i ka hana o ka Delta-Connector, e hoʻopili ana i ka waihona a hoʻopuka i nā hanana CDC i ka papa lawe, ʻo ia kahi ʻōnaehana hoʻoili ʻikepili manawa maoli e alakaʻi i nā hanana CDC i nā kumuhana Kafka. A ma ka hope loa, e kamaʻilio mākou e pili ana i ka ʻōnaehana hoʻoponopono kahawai Delta, hiki i nā mea hoʻomohala noi ke hoʻohana no ka hoʻoili ʻikepili a me ka loiloi hoʻonui.

CDC (Hoʻololi i ka ʻikepili-hopu)

Ua kūkulu mākou i kahi lawelawe CDC i kapa ʻia ʻo Delta-Connector, hiki iā ia ke hopu i nā loli i hana ʻia mai ka hale kūʻai ʻikepili i ka manawa maoli a kākau iā lākou i kahi kahawai. Lawe ʻia nā hoʻololi ʻoiaʻiʻo mai ka log transaction a me ka waiho ʻana i nā waihona. Hoʻohana ʻia nā dumps no ka mea maʻamau ʻaʻole mālama nā moʻolelo kālepa i ka mōʻaukala holoʻokoʻa o nā loli. Hoʻololi pinepine ʻia nā hoʻololi e like me nā hanana Delta, no laila ʻaʻole hopohopo ka mea loaʻa i kahi e hele mai ai ka loli.

Kākoʻo ʻo Delta-Connector i kekahi mau hiʻohiʻona hou e like me:

  • Hiki ke kākau i ka ʻikepili puka maʻamau me ka hoʻohana ʻana iā Kafka.
  • ʻO ka hiki ke hoʻoikaika i nā dumps manual i kēlā me kēia manawa no nā papa āpau, kahi papaʻaina kikoʻī, a i ʻole no nā kī nui.
  • Hiki ke kiʻi ʻia nā dumps i nā ʻāpana, no laila ʻaʻohe pono e hoʻomaka hou i ka wā o ka hāʻule.
  • ʻAʻohe pono e kau i nā laka ma nā papaʻaina, he mea nui loa ia e hōʻoia i ka ʻaʻole paʻa ʻia o ke kaʻa palapala kākau waihona e kā mākou lawelawe.
  • Loaʻa kiʻekiʻe ma muli o ka nui o nā manawa ma nā AWS Availability Zones.

Ke kākoʻo nei mākou i ka MySQL a me Postgres, me ka hoʻokomo ʻana ma AWS RDS a me Aurora. Kākoʻo pū mākou iā Cassandra (multi-master). Hiki iā ʻoe ke ʻike i nā kikoʻī hou aku e pili ana iā Delta-Connector maanei ʻatikala blog.

Kafka a me ka papa lawe

Hoʻokumu ʻia ka papa hoʻokele hanana hanana ʻo Delta ma luna o ka lawelawe leka uila Keystone.

Ma ka mōʻaukala, ua hoʻopaʻa ʻia ka hoʻolaha ʻana ma Netflix no ka hiki ke loaʻa ma mua o ka lōʻihi (e ʻike i lalo). ʻatikala mua). ʻO ka trade-off ka hiki ʻole o ka ʻikepili broker ma nā ʻano hiʻohiʻona like ʻole. ʻo kahi laʻana, koho alakaʻi haumia ke kuleana o ka mea loaʻa i loaʻa i nā hanana lua a nalowale paha.

Me Delta, makemake mākou i nā hōʻoia paʻa ikaika e hōʻoia i ka lawe ʻana i nā hanana CDC i nā hale kūʻai i loaʻa. No kēia kumu, ua noi mākou i kahi pūʻulu Kafka i hoʻolālā kūikawā ʻia ma ke ʻano he mea papa mua. Hiki iā ʻoe ke nānā i kekahi mau hoʻonohonoho broker ma ka papa ma lalo nei:

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua

Ma nā pūʻulu Keystone Kafka, koho alakaʻi haumia Hoʻokomo pinepine ʻia e hōʻoia i ka hiki ʻana o ka mea hoʻopuka. Hiki paha kēia i ka nalowale memo inā koho ʻia kahi kope i hoʻonohonoho ʻole ʻia i alakaʻi. No kahi puʻupuʻu Kafka kiʻekiʻe kiʻekiʻe, ke koho koho alakaʻi haumia ua pio e pale i ka nalowale memo.

Mahuahua no hoi makou mea hoʻopili mai 2 a 3 a liʻiliʻi insync replicas 1 a 2. Pono nā mea hoʻopuka e kākau ana i kēia pūʻulu i nā acks mai nā mea ʻē aʻe a pau, me ka hōʻoia ʻana i loaʻa i 2 o 3 mau kope i nā memo hou loa i hoʻouna ʻia e ka mea hoʻopuka.

Ke hoʻopau ʻia kahi laʻana broker, hoʻololi kahi mea hou i ka mea kahiko. Eia nō naʻe, pono ka mea hoʻolimalima hou e hopu i nā replicas unsynchronized, hiki ke lōʻihi i kekahi mau hola. No ka hōʻemi ʻana i ka manawa hoʻihoʻi no kēia hiʻohiʻona, hoʻomaka mākou e hoʻohana i ka mālama ʻikepili poloka (Amazon Elastic Block Store) ma kahi o nā disks broker kūloko. Ke hoʻololi nei kahi mea hou i kahi mea hoʻolimalima i hoʻopau ʻia, hoʻopili ia i ka leo EBS i loaʻa i ka hihia i hoʻopau ʻia a hoʻomaka e hopu i nā memo hou. Hoʻemi kēia kaʻina hana i ka manawa hoʻomaʻemaʻe backlog mai nā hola a i mau minuke no ka mea ʻaʻole pono e hana hou ka mea hou mai kahi mokuʻāina. Ma keʻano laulā, hoʻemi nui ka mālama ʻana a me ke ola broker i ka hopena o ka hoʻololi broker.

No ka hoʻonui hou ʻana i ka hōʻoia o ka lawe ʻana i ka ʻikepili, ua hoʻohana mākou ʻōnaehana nānā memo e ʻike i ka nalowale o ka memo ma lalo o nā kūlana koʻikoʻi (no ka laʻana, desynchronization uaki ma ke alakaʻi ʻāpana).

Ke Kaʻina Hoʻoheheʻe kahawai

Kūkulu ʻia ka papa hana ʻo Delta ma luna o ka Netflix SPaaS platform, e hāʻawi ana i ka hoʻohui ʻana o Apache Flink me ka kaiaola Netflix. Hāʻawi ka paepae i kahi mea hoʻohana e hoʻokele i ka hoʻolaha ʻana o nā hana Flink a me ka hoʻonohonoho ʻana o nā pūʻulu Flink ma luna o kā mākou kahua hoʻokele ipu Titus. Mālama ka interface i nā hoʻonohonoho hana a hiki i nā mea hoʻohana ke hoʻololi i nā hoʻololi hoʻonohonoho me ka ʻole e hoʻopili hou i nā hana Flink.

Hāʻawi ʻo Delta i kahi ʻōnaehana hoʻoponopono kahawai e pili ana iā Flink a me SPaaS e hoʻohana nei kumu hoʻopuka DSL (Domain Specific Language) i nā kikoʻī ʻenehana. No ka laʻana, e wehewehe i ke ala e hoʻonui ʻia ai nā hanana ma ke kāhea ʻana i nā lawelawe o waho, pono nā mea hoʻohana e kākau i ka DSL aʻe, a e hana ka framework i kahi hoʻohālike e pili ana iā ia, e hoʻokō ʻia e Flink.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua
Kiʻi 3. Ka laʻana o ka hoʻonui ʻana ma DSL ma Delta

ʻAʻole hōʻemi wale ka ʻōnaehana hana i ke kaʻe aʻo, akā hāʻawi pū kekahi i nā hiʻohiʻona hana kahawai e like me ka deduplication, schematization, a me ka maʻalahi a me ka resiliency e hoʻoponopono i nā pilikia hana maʻamau.

ʻO ka Delta Stream Processing Framework he ʻelua mau modula koʻikoʻi, ka module DSL & API a me ka module Runtime. Hāʻawi ka module DSL & API i nā API DSL a me UDF (User-Defined-Function) i hiki i nā mea hoʻohana ke kākau i kā lākou loiloi hana ponoʻī (e like me ke kānana a i ʻole ka hoʻololi ʻana). Hāʻawi ka Runtime module i kahi hoʻokō o kahi parser DSL e kūkulu i kahi hōʻike kūloko o nā kaʻina hana i nā hiʻohiʻona DAG. Hoʻopuka ka mea hoʻokō i nā hiʻohiʻona DAG e hoʻomaka i nā ʻōlelo Flink maoli a holo hope i ka noi Flink. Hōʻike ʻia ka hoʻolālā o ke kiʻi ma lalo nei.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua
Kiʻi 4. Delta Stream Processing Framework architecture

He nui nā pono o kēia ala:

  • Hiki i nā mea hoʻohana ke nānā aku i kā lākou loiloi ʻoihana me ka ʻole e ʻimi i nā kikoʻī o Flink a i ʻole ka hoʻolālā SPaaS.
  • Hiki ke hana ʻia ka hoʻonui ʻana ma ke ʻano akaka i nā mea hoʻohana, a hiki ke hoʻoponopono ʻia nā hewa me ka ʻole e koi i nā hoʻololi i ka code user (UDF).
  • Ua maʻalahi ka ʻike noi noi Delta no nā mea hoʻohana no ka mea hāʻawi ka paepae i ka maʻalahi a me ke kūpaʻa i waho o ka pahu a hōʻiliʻili i nā ʻano kikoʻī kikoʻī e hiki ke hoʻohana ʻia no nā makaʻala.

Hoʻohana hana

Ua hana ʻo Delta no hoʻokahi makahiki a he hana koʻikoʻi i nā noi Netflix Studio. Ua kōkua ʻo ia i nā hui e hoʻokō i nā hihia hoʻohana e like me ka huli ʻana i ka helu ʻana, ka mālama ʻana i ka ʻikepili, a me nā kahe hana hoʻokele hanana. Aia ma lalo iho kahi hiʻohiʻona o ka hoʻolālā kiʻekiʻe o ka paepae Delta.

Delta: ʻIkepili ʻikepili a me ka hoʻonui ʻana i ke kahua
Kiʻi 5. ʻO ka hoʻolālā kiʻekiʻe o Delta.

Mahalo

Makemake mākou e hoʻomaikaʻi i ka poʻe i komo i ka hana ʻana a me ka hoʻomohala ʻana o Delta ma 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 a me Zhenzhong Xu.

Pūnaewele

  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. ʻO Martin Kleppmann, Alastair R. Beresford, Boerge Svingen: Hoʻoponopono hanana pūnaewele. Commun. ACM 62(5): 43–49 (2019). DOI: doi.org/10.1145/3312527

E kākau inoa no kahi webinar manuahi: "Mea hana ʻikepili no Amazon Redshift Storage."

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka