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.
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.
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.
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:
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.
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.
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.
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.