Indlela yokuyeka ukukhathazeka futhi uqale ukuphila ngaphandle kwe-monolith

Indlela yokuyeka ukukhathazeka futhi uqale ukuphila ngaphandle kwe-monolith

Sonke siyazithanda izindaba. Sithanda ukuhlala sizungeze umlilo futhi sikhulume ngokunqoba kwethu okudlule, izimpi, noma ulwazi lwethu lomsebenzi.

Namuhla usuku olunjalo nje. Futhi noma ungekho emlilweni njengamanje, sinendaba nawe. Indaba yokuthi siqale kanjani ukusebenza ngesitoreji ku-Tarantool.

Ngesinye isikhathi, inkampani yethu yayine "monoliths" embalwa kanye "nophahla" olulodwa kubo bonke, lapho lawa ma-monoliths ayesondela kancane kancane kodwa ngokuqinisekile, anciphisa ukuhamba kwenkampani yethu, ukuthuthukiswa kwethu. Futhi kwakukhona ukuqonda okucacile: ngolunye usuku sizowushaya kakhulu lolu phahla.

Manje sekuwumbono okhona wokuhlukanisa yonke into nawo wonke umuntu, kusukela kumishini kuya kumqondo webhizinisi. Njengomphumela, thina, isibonelo, sinama-DC amabili azimele ngokwezinga lenethiwekhi. Futhi-ke yonke into yayihluke ngokuphelele.

Namuhla, maningi amathuluzi namathuluzi okwenza izinguquko ngendlela ye-CI/CD, K8S, njll. Esikhathini "se-monolithic", asizange sidinge amagama amaningi angaphandle. Kwanele ukulungisa “isitoreji” ku-database.

Kodwa isikhathi saqhubekela phambili, futhi inani lezicelo laqhubekela phambili nalo, ngezinye izikhathi lidubula i-RPS ngaphezu kwamandla ethu. Ngokungena kwamazwe e-CIS emakethe, umthwalo ku-database processor ye-monolith yokuqala ayizange iwe ngaphansi kwe-90%, futhi i-RPS yahlala ezingeni lika-2400. Futhi lezi kwakungezona nje abakhethi abancane, kodwa imibuzo emikhulu ene- amasheke amaningi kanye nama-JOIN angasebenzisa cishe uhhafu wedatha ngokumelene nesizinda se-IO enkulu.

Ngesikhathi ukuthengiswa okuphelele kweBlack Friday kuqala ukubonakala endaweni yesigameko - kanti ama-Wildberries abengomunye wabokuqala ukuwabamba eRussia - isimo saba muncu ngokuphelele. Phela, umthwalo ngezinsuku ezinjalo ukhula izikhathi ezintathu.
O, lezi “zikhathi ze-monolithic”! Ngiqinisekile ukuthi uke wabhekana nesimo esifanayo, futhi awukaqondi ukuthi lokhu kungenzeka kanjani kuwe.

Yini ongayenza - imfashini itholakala kwezobuchwepheshe. Cishe eminyakeni engu-5 edlule, kwakudingeka sicabange kabusha enye yalezi mods ngendlela yesayithi elikhona ku-.NET kanye neseva ye-MS SQL, egcine ngokucophelela yonke i-logic yesayithi ngokwayo. Ngiyigcine ngokucophelela kangangokuthi ukubona i-monolith enjalo kwaba yinjabulo ende futhi akulula neze.
Ukwehla okuncane.

Emicimbini ehlukahlukene ngithi: "uma ungabonanga i-monolith, awuzange ukhule!" Ngiyawuthakasela umbono wakho ngaloludaba, ngicela ubhale kuma comments.

Umsindo Wokuduma

Ake sibuyele "kumlilo omkhulu". Ukuze sisabalalise umthwalo wokusebenza kwe-"monolithic", sinqume ukuhlukanisa isistimu ibe ama-microservices ngokusekelwe kubuchwepheshe be-opensource. Ngoba, okungenani, ishibhile ukukala. Futhi besinokuqonda okungu-100% ukuthi kuzofanele silinganise (futhi okuningi). Phela, kakade ngaleso sikhathi kwakungenzeka ukungena ezimakethe zamazwe angomakhelwane, futhi inani lokubhaliswa, kanye nenani lama-oda, laqala ukukhula nakakhulu.

Ngemva kokuhlaziya amakhandidethi okuqala okusuka ku-monolith aye kuma-microservices, sibonile ukuthi u-80% wombhalo kuwo uvela ezinhlelweni zamahhovisi angemuva, nokufunda ehhovisi elingaphambili. Okokuqala, lokhu kwakuphathelene nezinhlelo ezimbalwa ezibalulekile kithina - idatha yomsebenzisi kanye nesistimu yokubala izindleko zokugcina zezimpahla ngokusekelwe olwazini mayelana nezaphulelo ezengeziwe zamakhasimende namakhuphoni.

I-indent. Manje kuyethusa ukucabanga, kodwa ngaphezu kwalezi zinhlelo ezingaphansi ezishiwo ngenhla, izinhlu zemikhiqizo, inqola yokuthenga yomsebenzisi, uhlelo lokusesha umkhiqizo, uhlelo lokuhlunga lwamakhathalogi emikhiqizo, nezinhlobo ezahlukene zezinhlelo zokuncoma nazo zasuswa ku-monolith yethu. Ukuze kusetshenziswe ngamunye wabo, kunezigaba ezihlukene zezinhlelo eziklanyelwe kancane, kodwa ngesikhathi esisodwa bonke bahlala "endlini" eyodwa.

Ngokushesha sahlela ukudlulisa idatha mayelana namakhasimende ethu ohlelweni olushadiwe. Ukususwa komsebenzi wokubala izindleko zokugcina zezimpahla kwakudinga ukulinganiswa okuhle kokufunda, ngoba kwakha umthwalo omkhulu we-RPS futhi kwaba nzima kakhulu ukukusebenzisa kusizindalwazi (idatha eningi ihilelekile enqubweni yokubala).

Ngenxa yalokhu, siqhamuke nesikimu esihambisana kahle neTarantool.

Ngaleso sikhathi, ukuze kusetshenziswe ama-microservices, amasu okusebenza nezikhungo eziningana zedatha emshinini we-virtual kanye ne-hardware akhethiwe. Njengoba kuboniswe ezibalweni, izinketho zokuphindaphinda kwe-Tarantool zisetshenziswe kuzo zombili izindlela eziyinhloko kanye nezigqila.

Indlela yokuyeka ukukhathazeka futhi uqale ukuphila ngaphandle kwe-monolith
Izakhiwo. Inketho 1. Isevisi yomsebenzisi

Okwamanje, kunezinhlamvu ezingu-24, ngayinye enezimo ezingu-2 (eyodwa ku-DC ngayinye), konke kumodi ye-master-master.

Phezu kwesizindalwazi kunezinhlelo zokusebenza ezifinyelela amakhophi esizindalwazi. Izinhlelo zokusebenza zisebenza ne-Tarantool ngomtapo wolwazi wethu wangokwezifiso, esebenzisa isixhumi esibonakalayo somshayeli we-Tarantool Go. Ubona zonke izifaniso futhi angasebenza nomphathi ukuze afunde futhi abhale. Empeleni, isebenzisa imodeli yesethi ye-replica, enezela umqondo wokukhetha ama-replica, ukwenza ukuzama kabusha, i-circuit breaker kanye nomkhawulo wezinga.

Kulesi simo, kungenzeka ukulungisa inqubomgomo yokukhetha ikhophi kumongo wamashadi. Ngokwesibonelo, roundrobin.

Indlela yokuyeka ukukhathazeka futhi uqale ukuphila ngaphandle kwe-monolith
Izakhiwo. Inketho 2. Isevisi yokubala izindleko zokugcina zezimpahla

Ezinyangeni ezimbalwa ezedlule, iningi lezicelo zokubala izindleko zokugcina zezimpahla zaya enkonzweni entsha, okuyinto, empeleni, isebenza ngaphandle kolwazi, kodwa esikhathini esithile esidlule yonke into yacutshungulwa 100% ngesevisi ene-Tarantool ngaphansi kwe-hood.

Isizindalwazi sesevisi siqukethe izingcweti ezingu-4 lapho isivumelanisi siqoqa khona idatha, futhi ngayinye yalezi zingcweti zokuphindaphinda zisabalalisa idatha kuzifaniso ezifundwayo kuphela. Inkosi ngayinye inezifaniso ezinjalo ezingaba ngu-15.

Kuphakathi kohlelo lokuqala noma lwesibili, uma i-DC eyodwa ingatholakali, uhlelo lokusebenza lungathola idatha okwesibili.

Kubalulekile ukuqaphela ukuthi ukuphindaphinda ku-Tarantool kuyavumelana nezimo futhi kungalungiselelwa ngesikhathi sokusebenza. Kwezinye izinhlelo, kwavela ubunzima. Isibonelo, ukushintsha amapharamitha angu-max_wal_senders kanye nama-max_replication_slots ku-PostgreSQL kudinga ukuqaliswa kabusha kwewizadi, okuthi kwezinye izimo kuholele ekunqanyulweni kokuxhumana phakathi kohlelo lokusebenza ne-DBMS.

Funa futhi uzothola!

Kungani singakwenzi “njengabantu abavamile”, kodwa sikhethe indlela engavamile? Kuncike kulokho okubhekwa njengokujwayelekile. Abantu abaningi ngokuvamile benza iqoqo elivela e-Mongo futhi balisabalalise kuma-DC amathathu asabalalisiwe nge-geo.

Ngaleso sikhathi, sase sinezinhlelo ezimbili zeRedis. Esokuqala kwakuyinqolobane, kanti eyesibili kwakuyisitoreji esiqhubekayo sedatha engabalulekile kakhulu. Kwakunzima kuye, ngokwengxenye ngenxa yephutha lethu. Ngezinye izikhathi kwakuba nemiqulu emikhulu impela, futhi ngezikhathi ezithile indawo yayingaphatheki kahle. Sisebenzise lesi simiso kunguqulo ye-master-slave. Futhi kwakukhona izimo eziningi lapho kwenzeka okuthile ku-master futhi ukuphindaphinda kwaphuka.

Okusho ukuthi, i-Redis ilungele imisebenzi engasho lutho, hhayi eshoyo. Empeleni, ivumele ukuxazulula izinkinga eziningi, kodwa kuphela uma bekuyizixazululo zenani elingukhiye ngepheya lezinkomba. Kodwa uRedis ngaleso sikhathi wayedabukile kakhulu ngokuphikelela nokuphindaphinda. Ngaphezu kwalokho, kwaba nezikhalo ngokusebenza.

Sicabange nge-MySQL ne-PostgreSQL. Kodwa eyokuqala ngandlela thile ayizange iqhubeke nathi, kanti eyesibili ingumkhiqizo oyinkimbinkimbi ngokwawo, futhi ngeke kube okungalungile ukwakha izinsizakalo ezilula kuwo.
Sizame i-RIAK, i-Cassandra, ngisho nesizindalwazi segrafu. Lezi zonke izisombululo eziqondile ebezingafanele indima yethuluzi elijwayelekile lokudala izinsiza.

Ekugcineni sazinza eTarantool.

Saphendukela kuyo ngenkathi isenguqulo 1.6. Sibe nentshisekelo kukho nge-symbiosis ye-key-value kanye nokusebenza kwesizindalwazi esihlobene. Kukhona izinkomba zesibili, ukuthengiselana kanye nezikhala, lezi zifana namatafula, kodwa akulula, ungagcina izinombolo ezihlukene zamakholomu kuzo. Kodwa isici esibulalayo se-Tarantool kwakuyizinkomba zesibili ezihlanganiswe nenani elingukhiye kanye nokuthengiselana.

Umphakathi ophendulayo okhuluma isiRashiya, olungele ukusiza engxoxweni, nawo udlale indima. Sisebenzise lokhu ngokugcwele futhi siphila ngokuqondile engxoxweni. Futhi ungakhohlwa mayelana nokuphikelela okuhloniphekile ngaphandle kwamaphutha asobala namaphutha. Uma ubheka umlando wethu nge-Tarantool, saba nobuhlungu obuningi nokwehluleka ngokuphindaphinda, kodwa asizange silahlekelwe idatha ngenxa yephutha layo!

Ukuqaliswa kuqale kabi

Ngaleso sikhathi, isitaki sethu esikhulu sokuthuthukisa kwakuyi-.NET, lapho sasingekho isixhumi se-Tarantool. Ngokushesha saqala ukwenza okuthile ku-Go. Isebenze kahle noLua futhi. Inkinga enkulu ngaleso sikhathi yayiwukulungisa iphutha: ku-.NET yonke into ihamba kahle ngalokhu, kodwa ngemva kwalokho kwaba nzima ukucwila emhlabeni we-Lua eshumekiwe, lapho ungenakho ukulungisa iphutha ngaphandle kwamalogi. Ngaphezu kwalokho, ngenxa yesizathu esithile ukuphindaphinda kwawa ngezikhathi ezithile, ngakho kwadingeka ngihlole isakhiwo senjini ye-Tarantool. Ingxoxo yasiza kulokhu, futhi ngokwezinga elincane, imibhalo; ngezinye izikhathi sasibheka ikhodi. Ngaleso sikhathi, amadokhumenti ayenjalo-njalo.

Ngakho-ke, phakathi nezinyanga ezimbalwa, ngakwazi ukuzungeza ikhanda lami futhi ngithole imiphumela ehloniphekile ekusebenzeni neTarantool. Sihlanganise intuthuko yereferensi ku-git eyasiza ekwakhiweni kwama-microservices amasha. Isibonelo, lapho kuphakama umsebenzi: ukudala enye i-microservice, umthuthukisi ubheke ikhodi yomthombo yesisombululo sereferensi endaweni yokugcina, futhi akuthathanga ngaphezu kwesonto ukudala entsha.

Lezi kwakuyizikhathi ezikhethekile. Ngokujwayelekile, ungakhuphukela kumphathi etafuleni elilandelayo bese ubuza: "Nginike umshini obonakalayo." Cishe ngemva kwemizuzu engamashumi amathathu imoto isivele inawe. Uzixhume wena, wafaka yonke into, futhi ithrafikhi yathunyelwa kuwe.

Namuhla lokhu ngeke kusasebenza: udinga ukungeza ukuqapha nokungena kusevisi, ukumboza ukusebenza ngokuhlolwa, oda umshini obonakalayo noma ukulethwa ku-Kuber, njll. Ngokuvamile, kuzoba ngcono ngale ndlela, nakuba kuzothatha isikhathi eside futhi kube nzima kakhulu.

Hlukanisa futhi ulawule. Uyini umsebenzi ngo-Lua?

Kube nenkinga engathi sína: amanye amaqembu awakwazanga ukwenza izinguquko ngendlela ethembekile kusevisi enengqondo eningi ngesi-Lua. Lokhu bekuvame ukuhambisana nenkonzo engasebenzi.

Okusho ukuthi, abathuthukisi balungiselela uhlobo oluthile loshintsho. I-Tarantool iqala ukwenza ukufuduka, kodwa umfanekiso usenekhodi endala; Enye i-DDL noma enye into ifika lapho ngokuphindaphinda, futhi ikhodi ivele ihlukane ngoba ayicatshangelwa. Ngenxa yalokho, inqubo yokubuyekeza yabalawuli yandlalwe eshidini le-A4: misa ukuphindaphinda, buyekeza lokhu, vula ukuphindaphinda, vala lapha, buyekeza lapho. Iphupho elibi!

Ngenxa yalokho, manje sivame ukuzama ukwenza lutho ngesiLua. Vele usebenzise iproto (iphrothokholi kanambambili yokuxhumana neseva), futhi yilokho. Mhlawumbe lokhu ukuntula kolwazi phakathi kwabathuthukisi, kodwa kusukela kulo mbono uhlelo luyinkimbinkimbi.

Asihlali silandela lesi sikripthi ngokuphuphutheka. Namuhla asinakho okumnyama nokumhlophe: noma yonke into isiLua, noma yonke into iku-Go. Sesivele siyaqonda ukuthi singazihlanganisa kanjani ukuze singagcini sinezinkinga zokufuduka kamuva.

Ikuphi i-Tarantool manje?
I-Tarantool isetshenziswa kusevisi ukubala izindleko zokugcina zezimpahla kucatshangelwa amakhuphoni esaphulelo, aziwa nangokuthi “Umgqugquzeli”. Njengoba ngishilo ekuqaleni, manje usezothatha umhlalaphansi: esikhundleni sakhe uthathelwa isevisi yekhathalogi enamanani abalwe ngaphambilini, kodwa ezinyangeni eziyisithupha ezedlule zonke izibalo zenziwe ku-Promotiser. Ngaphambili, ingxenye yomqondo wayo yayibhalwe ngesiLua. Eminyakeni emibili edlule, insizakalo yaguqulwa yaba indawo yokugcina izinto, futhi ingqondo yabhalwa kabusha kokuthi Go, ngoba umakhenika wezaphulelo wawushintshile kancane futhi isevisi yayintula ukusebenza.

Enye yezinsizakalo ezibaluleke kakhulu iphrofayili yomsebenzisi. Okusho ukuthi, bonke abasebenzisi be-Wildberries bagcinwa ku-Tarantool, futhi kukhona cishe izigidi ezingu-50. Uhlelo oluhlukaniswe nge-ID yomsebenzisi, lusatshalaliswa kuma-DC amaningana axhunywe kumasevisi we-Go.
Ngokusho kwe-RPS, uMthuthukisi wake waba ngumholi, wafinyelela izicelo eziyizinkulungwane ezingu-6. Ngesinye isikhathi sasinamakhophi angu-50-60. Manje umholi ku-RPS amaphrofayili wabasebenzisi, angaba yizinkulungwane eziyi-12. Le sevisi isebenzisa ukushaja ngokwezifiso, ihlukaniswe ngezigaba zama-ID wabasebenzisi. Le nsizakalo isebenzisa imishini engaphezu kuka-20, kodwa lokhu kuningi kakhulu, sihlela ukunciphisa izinsiza ezabiwe, ngoba umthamo wemishini engu-4-5 yanele yona.

Isevisi yesikhathi iyisevisi yethu yokuqala ku-vshard ne-Cartridge. Ukusetha i-vshard nokuvuselela i-Cartridge kudinga umzamo othile kithi, kodwa ekugcineni konke kuphumelele.

Isevisi yokubonisa amabhanela ahlukene kuwebhusayithi nakuhlelo lokusebenza lweselula ibe ngeyokuqala ukukhishwa ngqo ku-Tarantool. Le sevisi iphawuleka ngokuthi ineminyaka engu-6-7 ubudala, isasebenza futhi ayikaze iqalwe kabusha. Kusetshenziswe i-master-master replication. Akukho lutho olwake lwaphuka.

Kunesibonelo sokusebenzisa i-Tarantool ekusebenzeni kwereferensi esheshayo kusistimu ye-warehouse ukuze uhlole kabili ulwazi ngokushesha kwezinye izimo. Sizamile ukusebenzisa i-Redis kulokhu, kodwa idatha esenkumbulweni ithathe isikhala esiningi kune-Tarantool.

Izinkonzo zohlu lokulinda, okubhaliselwe kwamakhasimende, izindaba ezisemfashinini njengamanje nezimpahla ezihlehlisiwe nazo zisebenza ne-Tarantool. Isevisi yokugcina kumemori ithatha cishe u-120 GB. Lena insizakalo ebanzi kunayo yonke engenhla.

isiphetho

Ngenxa yezinkomba zesibili ezihlanganiswe nenani elingukhiye nokusebenza, i-Tarantool ifaneleka kahle kuma-microservices-based architectures. Kodwa-ke, sihlangabezane nobunzima lapho sikhipha izinguquko kumasevisi ngokunengqondo eningi ngesi-Lua - izinsiza ngokuvamile ziyeka ukusebenza. Asikwazanga ukukunqoba lokhu, futhi ngokuhamba kwesikhathi safika ezinhlanganisela ezahlukene ze-Lua ne-Go: siyazi ukuthi singalusebenzisa kuphi ulimi olulodwa nokuthi singalusebenzisa kuphi olunye.

Yini enye ongayifunda esihlokweni

Source: www.habr.com

Engeza amazwana