Indlela yokuyeka ukukhathazeka kwaye uqale ukuhlala ngaphandle kwe-monolith

Indlela yokuyeka ukukhathazeka kwaye uqale ukuhlala ngaphandle kwe-monolith

Sonke siyawathanda amabali. Sithanda ukuhlala emlilweni kwaye sithethe malunga nempumelelo yethu yangaphambili, amadabi, okanye ngamava ethu omsebenzi.

Namhlanje lusuku olunjalo. Kwaye nokuba awukho emlilweni okwangoku, sinebali ngawe. Ibali lendlela esaqala ngayo ukusebenza kunye nokugcinwa kwiTarantool.

Kudala, inkampani yethu yayineqela le "monoliths" kunye "nesilingi" enye kubo bonke, apho ezi monoliths zazisondela ngokucothayo kodwa ngokuqinisekileyo, zinciphisa ukuhamba kwenkampani yethu, uphuhliso lwethu. Kwaye kwakukho ukuqonda okucacileyo: ngenye imini siya kuyibetha kabuhlungu le siling.

Ngoku yingcamango ekhoyo yokwahlula yonke into kunye nomntu wonke, ukusuka kwisixhobo ukuya kwingqiqo yezoshishino. Ngenxa yoko, thina, umzekelo, sinee-DC ezimbini ezizimeleyo ngokuzimeleyo kwinqanaba lenethiwekhi. Kwaye ke yonke into yahluke ngokupheleleyo.

Namhlanje, zininzi izixhobo kunye nezixhobo zokwenza utshintsho kwimo yeCI/CD, K8S, njl. Ngexesha elithi "monolithic", asizange sifune amagama amaninzi angaphandle. Kwakwanele ukulungisa nje "ukugcinwa" kwisiseko sedatha.

Kodwa ixesha laqhubela phambili, kwaye inani lezicelo laqhubela phambili kunye nalo, ngamanye amaxesha lidubula i-RPS ngaphaya kwamandla ethu. Ngokungena kwamazwe e-CIS kwiimarike, umthwalo kwi-database processor ye-monolith yokuqala ayizange iwe phantsi kwe-90%, kwaye i-RPS yahlala kwinqanaba le-2400. Kwaye oku kwakungabakhethi abancinci, kodwa imibuzo enzima kunye iitshekhi ezininzi kunye JOIN ezinokubaleka phantse kwisiqingatha sedatha ngokuchasene nemvelaphi ye-IO enkulu.

Xa ukuthengiswa okupheleleyo kwe-Black Friday kwaqala ukubonakala kwindawo - kwaye i-Wildberries yayingomnye wabokuqala ukubabamba eRashiya - imeko yaba buhlungu ngokupheleleyo. Emva koko, umthwalo ngeentsuku ezinjalo uyanda kathathu.
Owu, la β€œmaxesha e-monolithic”! Ndiqinisekile ukuba nawe ukhe wanamava afanayo, kwaye awukayiqondi indlela enokwenzeka ngayo le nto kuwe.

Yintoni onokuyenza - ifashoni ifumaneka kwitekhnoloji. Malunga neminyaka eyi-5 edlulileyo, kwafuneka siphinde sicinge enye yezi mods ngendlela yesayithi ekhoyo kwi-NET kunye ne-MS SQL server, egcinwe ngokucophelela yonke ingqiqo yesayithi ngokwayo. Ndiyigcine ngononophelo kangangokuba ukubona i-monolith enjalo yaba yinto emide kwaye ayilulanga kwaphela.
Ukuphuma kancinci.

Kwiziganeko ezahlukeneyo ndithi: "ukuba awuzange ubone i-monolith, ngoko awuzange ukhule!" Ndinomdla kuluvo lwakho ngalo mba, ndicela ubhale kwi comments.

Isandi seNdudumo

Masibuyele "kwibhonfire" yethu. Ukusasaza umthwalo wokusebenza kwe "monolithic", sagqiba ekubeni sahlule inkqubo kwiinkonzo ezincinci ezisekelwe kubuchwephesha obuvulekileyo. Kuba, ubuncinci, zitshiphu ukukala. Kwaye sine-100% yokuqonda ukuba kuya kufuneka silinganise (kunye okuninzi). Emva koko, sele ngelo xesha kwakunokwenzeka ukungena kwiimarike zamazwe angabamelwane, kwaye inani lobhaliso, kunye nenani lee-odolo, laqala ukukhula ngakumbi.

Emva kokuba sihlalutye abaviwa bokuqala bokuhamba kwi-monolith ukuya kwii-microservices, siye safumanisa ukuba i-80% yokubhala kubo ivela kwiinkqubo ze-ofisi zangasemva, kunye nokufunda kwi-ofisi engaphambili. Okokuqala, oku kwakuchaphazela isibini seenkqubo ezingaphantsi ezibalulekileyo kuthi - idatha yomsebenzisi kunye nenkqubo yokubala ixabiso lokugqibela lempahla esekelwe kulwazi malunga nezaphulelo ezongezelelweyo zabathengi kunye namakhuphoni.

Ifakwe ngaphakathi. Ngoku kuyothusa ukucinga, kodwa ukongeza kwiinkqubo ezingaphantsi ezikhankanywe ngasentla, iikhathalogu zeemveliso, inqwelo yokuthenga yomsebenzisi, inkqubo yokukhangela imveliso, inkqubo yokucoca kwiikhathalogu zeemveliso, kunye neentlobo ezahlukeneyo zeenkqubo zokucetyiswa nazo zasuswa kwi-monolith yethu. Ukuze usebenze ngamnye kubo, kukho iiklasi ezihlukeneyo zeenkqubo ezinqamlekileyo, kodwa kanye ngexesha lonke bahlala "kwindlu" enye.

Ngokukhawuleza saceba ukudlulisa idatha malunga nabathengi bethu kwinkqubo edibeneyo. Ukususwa komsebenzi ekubaleni iindleko zokugqibela zeempahla ezifuna ukulinganiswa okulungileyo kokufunda, kuba kudale owona mthwalo mkhulu we-RPS kwaye yayiyeyona nto inzima ukuyiphumeza kwisiseko sedatha (idatha eninzi ibandakanyeka kwinkqubo yokubala).

Ngenxa yoko, size neskimu esihambelana kakuhle neTarantool.

Ngelo xesha, ekusebenzeni kwee-microservices, izicwangciso zokusebenza kunye namaziko amaninzi edatha kumatshini we-virtual kunye ne-hardware yakhethwa. Njengoko kubonisiwe kumanani, ukhetho lokuphindaphinda kweTarantool lusetyenzisiwe kuzo zombini iindlela zenkosi-master kunye ne-master-slave.

Indlela yokuyeka ukukhathazeka kwaye uqale ukuhlala ngaphandle kwe-monolith
Uyilo lwezakhiwo. Ukhetho 1. Inkonzo yomsebenzisi

Okwangoku, kukho ii-shards ezingama-24, nganye kuzo ineemeko ezi-2 (enye kwi-DC nganye), zonke zikwimowudi ye-master-master.

Ngaphezulu kwesiseko sedatha kukho izicelo ezifikelela kwi-replicas yedatha. Izicelo zisebenza neTarantool ngelayibrari yethu yesiko, esebenzisa ujongano lomqhubi weTarantool Go. Ubona zonke iikopi kwaye unokusebenzisana nomphathi ukufunda nokubhala. Ngokusisiseko, izalisekisa imodeli eseti ye-replica, eyongeza ingqiqo yokukhetha ii-replicas, ukwenza ii-retries, i-breaker circuit kunye nomda wezinga.

Kule meko, kunokwenzeka ukuqwalasela umgaqo-nkqubo wokukhethwa kwe-replica kumxholo wee-shards. Umzekelo, roundrobin.

Indlela yokuyeka ukukhathazeka kwaye uqale ukuhlala ngaphandle kwe-monolith
Uyilo lwezakhiwo. Ukhetho 2. Inkonzo yokubala iindleko zokugqibela zempahla

Kwiinyanga ezimbalwa ezedlulileyo, ezininzi zezicelo zokubala iindleko zokugqibela zeempahla zaya kwinkonzo entsha, leyo, ngokomgaqo, isebenza ngaphandle kolwazi, kodwa ixesha elidlulileyo yonke into yayicutshungulwa nge-100% ngenkonzo kunye neTarantool phantsi kwe-hood.

I-database yenkonzo iqulethe iinkosi ezi-4 apho i-synchronizer iqokelela idatha, kwaye nganye yale nkosi yokuphindaphinda ihambisa idatha kwi-readonly replicas. Inkosi nganye ineekopi ezili-15 ezinjalo.

Nokuba kwiskimu sokuqala okanye sesibini, ukuba i-DC enye ayifumaneki, isicelo sinokufumana idatha kwisibini.

Kubalulekile ukuqaphela ukuba uphindaphindo kwi-Tarantool lubhetyebhetye kwaye lunoqwalaselo ngexesha lokusebenza. Kwezinye iinkqubo, kwavela ubunzima. Ngokomzekelo, ukutshintsha i-max_wal_senders kunye ne-max_replication_slots parameters kwi-PostgreSQL kufuna ukuqaliswa kwakhona kwe-wizard, nto leyo kwezinye iimeko inokukhokelela ekuqhawulweni koqhagamshelwano phakathi kwesicelo kunye ne-DBMS.

Khangela kwaye uya kufumana!

Kutheni singazange siyenze "njengabantu abaqhelekileyo", kodwa sikhethe indlela ye-atypical? Kuxhomekeke kwinto ethathwa njengeqhelekileyo. Abantu abaninzi ngokubanzi benza iqoqo ukusuka eMongo kwaye basasaze kwii-DC ezintathu ezisasazwe nge-geo.

Ngelo xesha, sasisele sineeprojekthi ezimbini zeRedis. Eyokuqala yayiyi-cache, kwaye eyesibini yayilugcino oluzingileyo lwedatha engabalulekanga kakhulu. Kwakunzima kuye, ngokuyinxenye ngenxa yempazamo yethu. Ngamanye amaxesha imiqulu emikhulu yayiba ngundoqo, kwaye ngamanye amaxesha indawo yayisiba mbi. Sisebenzise le nkqubo kwinguqulelo ye-master-slave. Kwaye kukho iimeko ezininzi apho kukho into eyenzekayo kwinkosi kwaye ukuphindaphinda kwaphuka.

Oko kukuthi, iRedis ilungile kwimisebenzi engachazwanga, hayi ephantsi. Ngokomgaqo, ivumele ukusombulula iingxaki ezininzi, kodwa kuphela ukuba bezizizisombululo zexabiso eliphambili kunye nezalathisi ezimbini. Kodwa uRedis ngelo xesha wayebuhlungu kakhulu ngokuzingisa kunye nokuphindaphinda. Ukongeza, bekukho izikhalazo malunga nokusebenza.

Sicinge ngeMySQL kunye nePostgreSQL. Kodwa eyokuqala ngandlela thile ayizange ihambe nathi, kwaye eyesibini iyimveliso enobugocigoci ngokwayo, kwaye kuya kuba yinto engafanelekanga ukwakha iinkonzo ezilula kuyo.
Sazama i-RIAK, iCassandra, nokuba i-database yegrafu. Ezi zonke zizisombululo ze-niche ezingafanelekanga indima yesixhobo jikelele sokudala iinkonzo.

Ekugqibeleni sahlala eTarantool.

Sajika kuyo xa yayikwinguqulo 1.6. Sasinomdla kuyo nge-symbiosis ye-key-value kunye nokusebenza kwesiseko sedatha yobudlelwane. Kukho izalathisi zesibini, ukuthengiselana kunye nezithuba, ezi zifana neetafile, kodwa azilula, unokugcina amanani ahlukeneyo amakholomu kuwo. Kodwa into ebulalayo yeTarantool yayizizalathisi zesibini ezidityaniswe nexabiso eliphambili kunye nokuthengiselana.

Uluntu oluphendulayo oluthetha isiRashiya, olulungele ukunceda kwincoko, nalo lidlale indima. Sisebenzise le nto kwaye sihlala ngqo kwincoko. Kwaye ungalibali ngokuzingisa ngokufanelekileyo ngaphandle kokuphazamiseka okucacileyo kunye neempazamo. Ukuba ujonga imbali yethu kunye neTarantool, saba neentlungu ezininzi kunye nokusilela ngokuphindaphinda, kodwa asizange siphulukane nedatha ngenxa yempazamo yayo!

Ukuphunyezwa kuqale kakubi

Ngelo xesha, isitakhi sethu sophuhliso sasiyi-.NET, apho kwakungekho sidibanisi seTarantool. Saqalisa kwangoko ukwenza into kwiGo. Isebenze kakuhle noLua naye. Ingxaki ephambili ngelo xesha yayikukulungisa ingxaki: kwi-.NET yonke into ilungile ngale nto, kodwa emva koko kwakunzima ukuntywila kwihlabathi le-Lua edibeneyo, xa ungenayo i-debugging ngaphandle kweelog. Ukongeza, ngenxa yesizathu esithile ukuphindaphinda kwawa ngamanye amaxesha, ngoko ke kwafuneka ndijonge kwisakhiwo senjini yeTarantool. Incoko yanceda koku, kwaye kancinci, amaxwebhu; ngamanye amaxesha sasijonga ikhowudi. Ngelo xesha, amaxwebhu ayenjalo-njalo.

Ke, ekuhambeni kweenyanga ezininzi, ndikwazile ukujikeleza kwaye ndifumane iziphumo ezifanelekileyo ekusebenzeni neTarantool. Siqulunqe uphuhliso lwereferensi kwi-git eyanceda ekusekweni kwee-microservices ezintsha. Ngokomzekelo, xa kuvela umsebenzi: ukudala enye i-microservice, umphuhlisi ujonge ikhowudi yomthombo wesisombululo sereferensi kwindawo yokugcina, kwaye ayithathi ngaphezu kweveki ukudala entsha.

La yayingamaxesha akhethekileyo. Ngokwesiqhelo, emva koko unokunyuka uye kumphathi kwitafile elandelayo kwaye ubuze: "Ndinike umatshini obonakalayo." Emva kwemizuzu engamashumi amathathu imoto sele ikuwe. Uzixhume ngokwakho, ufake yonke into, kwaye itrafikhi ithunyelwe kuwe.

Namhlanje oku akusayi kusebenza: kufuneka ungeze ukubeka iliso kunye nokungena kwinkonzo, ukugubungela ukusebenza kunye neemvavanyo, oda umatshini obonakalayo okanye ukuhanjiswa kwi-Kuber, njl. Ngokubanzi, kuya kuba ngcono ngale ndlela, nangona kuya kuthatha ixesha elide kwaye kube nzima ngakumbi.

Yahlula kwaye ulawule. Yintoni ingxaki noLua?

Kwakukho ingxaki enkulu: amanye amaqela awakwazanga ukwenza utshintsho oluthembekileyo kwinkonzo enengqiqo eninzi eLua. Oku kwakudla ngokukhatshwa yinkonzo engasebenziyo.

Oko kukuthi, abaphuhlisi balungiselela uhlobo oluthile lotshintsho. I-Tarantool iqala ukwenza ukufuduka, kodwa i-replica isenekhowudi endala; Enye i-DDL okanye enye into ifika apho ngokuphindaphinda, kwaye ikhowudi iyawa nje kuba ayithathelwa ngqalelo. Ngenxa yoko, inkqubo yohlaziyo lwabalawuli yandlalwe kwiphepha le-A4: misa ukuphindaphinda, ukuhlaziya oku, vula ukuphindaphinda, cima apha, hlaziya apho. Iphupha elibi!

Ngenxa yoko, ngoku sihlala sizama ukwenza nto ngesiLua. Sebenzisa nje iproto (iprotocol yokubini yokusebenzisana nomncedisi), kwaye yiloo nto. Mhlawumbi oku kukungabikho kolwazi phakathi kwabaphuhlisi, kodwa ukusuka kulo mbono inkqubo inzima.

Asisoloko silandela ngokumfamekileyo esi script. Namhlanje asinabo abamnyama nabamhlophe: yonke into iseLua, okanye yonke into ikuGo. Sele siyiqonda indlela esinokuzidibanisa ngayo ukuze singagqibi ngeengxaki zokufuduka kamva.

Iphi iTarantool ngoku?
I-Tarantool isetyenziswa kwinkonzo yokubala iindleko zokugqibela zeempahla ezithathela ingqalelo iikhuphoni zesaphulelo, ezikwabizwa ngokuba yi "Promoter". Njengoko benditshilo ngaphambili, ngoku uthatha umhlala-phantsi: utshintshwa yinkonzo yekhathalogu entsha kunye namaxabiso abalwe ngaphambili, kodwa kwiinyanga ezintandathu ezidlulileyo zonke izibalo zenziwe kwi-Promotizer. Ngaphambili, isiqingatha sengqiqo yayo sasibhalwe ngesiLua. Kwiminyaka emibini edlulileyo, inkonzo yaguqulwa yaba yindawo yokugcina, kwaye ingqiqo yabhalwa kwakhona kwi-Go, kuba i-mechanics yezaphulelo yayitshintshile kancinci kwaye inkonzo yayingenalo ukusebenza.

Enye yezona nkonzo zibalulekileyo yiprofayile yomsebenzisi. Okokuthi, bonke abasebenzisi be-Wildberries bagcinwa kwi-Tarantool, kwaye kukho malunga nezigidi ze-50. Inkqubo edibeneyo yi-ID yomsebenzisi, isasazwe kwii-DC ezininzi ezixhunyiwe kwiinkonzo ze-Go.
Ngokutsho kwe-RPS, uMkhuthazi wayekhe waba yinkokeli, efikelela kwizicelo ezingamawaka ayi-6. Ngesinye isihlandlo sasineekopi ezingama-50-60. Ngoku inkokeli kwi-RPS yiprofayili yomsebenzisi, malunga newaka le-12. Le nkonzo isebenzisa i-sharding yesiko, ihlulwe ngoluhlu lwee-ID zabasebenzisi. Inkonzo isebenza ngoomatshini abangaphezulu kwama-20, kodwa oku kuninzi kakhulu; siceba ukunciphisa izibonelelo ezinikezelweyo, kuba amandla oomatshini aba-4-5 banele kuwo.

Inkonzo yeseshoni yinkonzo yethu yokuqala kwi vshard kunye neCartridge. Ukuseta vshard kunye nokuhlaziya iCartridge kufuna umzamo othile kuthi, kodwa ekugqibeleni yonke into yahamba.

Inkonzo yokubonisa iibhena ezahlukeneyo kwiwebhusayithi nakwisicelo esiphathwayo yayiyeyokuqala ukukhutshwa ngokuthe ngqo kwiTarantool. Le nkonzo iphawuleka kuba ineminyaka eyi-6-7 ubudala, isasebenza kwaye ayizange iphinde iqaliswe. I-master-master replication yasetyenziswa. Akukho nto yakha yaphuka.

Kukho umzekelo wokusebenzisa iTarantool ekusebenzeni kwereferensi ekhawulezayo kwisistim sokugcina ukukhawuleza ukujonga kabini ulwazi kwezinye iimeko. Sizamile ukusebenzisa iRedis kule nto, kodwa idatha kwimemori ithathe indawo enkulu kuneTarantool.

Iinkonzo zoluhlu lokulinda, ubhaliso lwabaxumi, amabali akwifashoni ngoku kunye neempahla ezirhoxisiweyo zikwasebenza kunye neTarantool. Inkonzo yokugqibela kwimemori ithatha malunga ne-120 GB. Le yeyona nkonzo ibanzi kwezi zingentla.

isiphelo

Ndiyabulela kwizalathisi zesibini ezidityaniswe nexabiso elingundoqo kunye nokuthengiselana, iTarantool ifaneleke kakuhle kwii-microservices-based architectures. Nangona kunjalo, siye sadibana nobunzima xa sikhupha utshintsho kwiinkonzo kunye neengqiqo ezininzi eLua - iinkonzo zihlala ziyeka ukusebenza. Asikwazanga ukoyisa oku, kwaye ekuhambeni kwexesha safika kwiindibaniso ezahlukeneyo zesiLua kunye neGo: siyazi ukuba silusebenzise phi ulwimi olunye nalapho silusebenzisa khona olunye.

Yintoni enye ekufuneka uyifunde ngesihloko

umthombo: www.habr.com

Yongeza izimvo