Sida loo joojiyo werwerka oo loo bilaabo nolol la'aan monolith

Sida loo joojiyo werwerka oo loo bilaabo nolol la'aan monolith

Dhammaanteen waan jecelnahay sheekooyinka. Waxaan jecelnahay inaan fadhiisanno hareeraha dabka oo aan ka hadalno guulaheennii hore, dagaalladii, ama si fudud waaya-aragnimadeena shaqo.

Maanta waa maalin sidaas oo kale ah. Xitaa haddii aadan hadda dabka ku jirin, waxaan kuu haynaa sheeko. Sheekada sida aan ku bilownay ka shaqaynta kaydinta Tarantool.

Beri hore, shirkadeena waxay lahayd labo "monoliths" iyo hal "saqaf" dhammaan, kuwaas oo monoliths ay si tartiib tartiib ah u soo dhawaadeen, xaddidaya duulimaadka shirkadeena, horumarinteena. Waxaana jiray faham cad: maalin maalmaha ka mid ah waxaan si adag u garaaci doonaa saqafkan.

Hadda waa fikradda jirta ee lagu kala saarayo wax walba iyo qof walba, laga soo bilaabo qalab ilaa macquul ganacsi. Natiijo ahaan, annagu, tusaale ahaan, waxaanu leenahay laba DCs oo si dhab ah u madaxbannaan heerka shabakadda. Kadibna wax waliba gabi ahaanba way ka duwanaayeen.

Maanta, waxaa jira qalab iyo qalab badan oo lagu sameeyo isbeddelada qaabka CI/CD, K8S, iwm. Waqtigii "monolithic", uma baahnin ereyo shisheeye oo badan. Way ku filnayd in si fudud loo saxo "kaydinta" kaydka xogta.

Laakiin wakhtigu wuu sii socday, tirada codsiyadana way sii socdeen, mararka qaarkoodna waxay toogtaan RPS wixii ka baxsan awoodeena. Marka la soo galo wadamada CIS ee suuqa, culeyska ku jira processor-ka xogta ee monolith-kii ugu horreeyay kama hoos dhicin 90%, RPS waxay ku sii jirtay heerka 2400. Kuwanuna ma ahan oo keliya xulashooyin yaryar, laakiin su'aalo culus oo leh a jeegag badan iyo ku biir oo socon kara ku dhawaad ​​kala badh xogta ka soo horjeeda asalka IO weyn.

Markii iibka Jimcaha Madoow ee buuxa uu bilaabay inuu ka soo muuqdo goobta - iyo Wildberries wuxuu ahaa mid ka mid ah kuwii ugu horreeyay ee lagu hayo Ruushka - xaaladdu waxay noqotay mid murugo leh. Ka dib oo dhan, culayska maalmahan oo kale wuxuu kordhiyaa saddex jeer.
Oh, kuwan "waqtiyada monolithic"! Waxaan hubaa inaad la kulantay wax la mid ah, oo aadan weli fahmin sida ay taasi kugu dhici karto.

Maxaad sameyn kartaa - moodada ayaa ku jirta tignoolajiyada. Qiyaastii 5 sano ka hor, waxay ahayd inaan dib uga fikirno mid ka mid ah mods-yadan qaabka goobta jira ee NET iyo MS SQL server, kaas oo si taxadar leh u kaydiyay dhammaan macquulnimada goobta lafteeda. Waxaan si taxaddar leh u ilaalinayay in arka monolith-ka noocan oo kale ah uu noqday mid dheer oo aan haba yaraatee fududayn.
Digression yar.

Munaasabadaha kala duwan waxaan dhahaa: "Haddii aadan arkin monolith, markaa ma aadan korin!" Waxaan xiisaynayaa ra'yigaaga ku saabsan arrintan, fadlan ku qor faallooyinka.

Cod Onkod

Aan ku soo noqonno "dabka". Si loo qaybiyo culeyska shaqeynta "monolithic", waxaan go'aansanay inaan u qaybinno nidaamka adeegaha yar yar ee ku saleysan tignoolajiyada furan. Sababtoo ah, ugu yaraan, way ka jaban yihiin cabbirka. Waxaan 100% fahannay inaan cabbirno (iyo wax badan). Ka dib oo dhan, mar horeba wakhtigaas waxaa suurtagal ah in la galo suuqyada dalalka deriska ah, iyo tirada diiwaangelinta, iyo sidoo kale tirada amarrada, waxay bilaabeen inay si xoog leh u koraan.

Markii aan falanqeynay musharrixiinta ugu horreeya ee ka tagaya monolith ilaa adeeg-yaraha, waxaan ogaannay in 80% qoraallada ku jira ay ka yimaadaan nidaamyada xafiiska dambe, iyo akhrinta xafiiska hore. Ugu horreyntii, tani waxay khusaysay dhowr hab-hoosaadyo muhiim ah oo annaga noo ah - xogta isticmaalaha iyo nidaamka xisaabinta qiimaha ugu dambeeya ee alaabta iyadoo lagu saleynayo macluumaadka ku saabsan qiimo dhimista macaamiisha dheeraadka ah iyo kuuboonnada.

La galiyay Hadda waa cabsi in la qiyaaso, laakiin marka lagu daro nidaamyada hoose ee kor ku xusan, buug-gacmeedyada alaabta, gawaarida wax iibsiga, nidaamka raadinta alaabta, nidaamka shaandhaynta buugaagta alaabta, iyo noocyada kala duwan ee hababka talada ayaa sidoo kale laga saaray monolith. Hawlgalka mid kasta oo iyaga ka mid ah, waxaa jira fasallo gaar ah oo nidaamyo si cidhiidhi ah loo tolay, laakiin hal mar waxay ku wada noolaayeen hal "guri".

Waxaan isla markiiba qorsheynay inaan u wareejino xogta ku saabsan macaamiisheena nidaamka la jajabiyey. Ka saarista shaqeynta xisaabinta qiimaha kama dambaysta ah ee alaabada waxay u baahan tahay miisaan wanaagsan oo loogu talagalay akhrinta, sababtoo ah waxay abuurtay culeyska RPS ee ugu weyn oo ahaa midka ugu adag in la hirgeliyo xogta xogta (xog badan ayaa ku lug leh habka xisaabinta).

Natiijo ahaan, waxaan la nimid nidaam ku habboon Tarantool.

Waqtigaas, hawlgalka microservices, nidaamyada la shaqeynta dhowr xarumood oo xog ah oo ku saabsan mashiinnada farsamada iyo qalabka ayaa la doortay. Sida ku cad jaantusyada, Tarantool xulashooyinka ku celcelinta ayaa lagu dabaqay labadaba sayid-master iyo hababka addoon-adoonsiga.

Sida loo joojiyo werwerka oo loo bilaabo nolol la'aan monolith
Dhismaha. Doorashada 1. Adeegga isticmaalaha

Waqtigan xaadirka ah, waxaa jira 24 shards, mid kasta oo ka mid ah wuxuu leeyahay 2 xaaladood (mid ka mid ah DC kasta), oo dhammaan ku jira qaabka master-master.

Dusha sare ee kaydka waxa ku jira codsiyo gelaya nuqulada xogta. Codsiyada waxay la shaqeeyaan Tarantool iyada oo loo sii marayo maktabada caadada u ah, taas oo fulisa interface Tarantool Go darawalka. Waxay aragtaa dhammaan nuqullada oo waxay la shaqayn kartaa sayidkii si ay wax u akhrido oo u qorto. Asal ahaan, waxa ay fulisaa qaabka goynta nuqulka, kaas oo ku daraya macquulka ah xulashada nuqullada, samaynta isku-dayga, jebiya wareegga iyo xadka heerka.

Xaaladdan oo kale, waxaa suurtagal ah in la habeeyo siyaasadda xulashada nuqulka ee macnaha guud ee shards. Tusaale ahaan, wareega wareega.

Sida loo joojiyo werwerka oo loo bilaabo nolol la'aan monolith
Dhismaha. Doorashada 2. Adeegga xisaabinta qiimaha ugu dambeeya ee alaabta

Dhowr bilood ka hor, inta badan codsiyada xisaabinta qiimaha kama dambaysta ah ee alaabada waxay aadeen adeeg cusub, kaas oo, mabda'a, ka shaqeeya iyada oo aan lahayn xog-ururin, laakiin wakhti ka hor wax walba waxaa lagu farsameeyay 100% adeegga Tarantool ee hoostiisa.

Xogta adeeggu waxa ay ka kooban tahay 4 sayid oo uu synchronizer-ku xogta ku ururiyo, mid kasta oo ka mid ah masters-ka-ku-noqoshada waxa uu u qaybiyaa xogta si uu akhriyo oo keliya. Master kasta waxa uu leeyahay ku dhawaad ​​15 nuqul oo kale ah.

Midka koowaad ama nidaamka labaad, haddii hal DC la waayo, codsigu wuxuu heli karaa xogta labaad.

Waxaa xusid mudan in ku celcelinta Tarantool ay tahay mid dabacsan oo la habeyn karo waqtiga runtime. Nidaamyada kale, dhibaatooyin ayaa kacday. Tusaale ahaan, bedelida max_wal_senders iyo max_replication_slots ee PostgreSQL waxay u baahan tahay dib u bilaabista saaxiraha, taas oo xaaladaha qaarkood ay horseedi karto kala goynta xidhiidhada codsiga iyo DBMS.

Raadi oo waad heli doontaa.

Maxaynu u samayn waynay "sida dadka caadiga ah", laakiin waxaan dooranay hab aan caadi ahayn? Waxay kuxirantahay waxa loo arko caadi. Kuwo badan ayaa guud ahaan ka sameeya koox ka socota Mongo waxayna ku kala fidiyaan seddexda DC ee juqraafi-qaybsan.

Waqtigaas, waxaan horey u haysanay laba mashruuc oo Redis ah. Midka kowaad wuxuu ahaa kayd, kan labaadna wuxuu ahaa kayd joogto ah oo aan aad muhiim u ahayn. Aad bay ugu adkayd isaga, qayb ahaan qaladkayaga. Mararka qaarkood tiro aad u weyn ayaa furaha ku jiray, waqti ka waqtina goobta ayaa noqotay mid aan fiicneyn. Nidaamkan waxaan ku isticmaalnay nooca addoon-adoonsiga. Waxaana jiray xaalado badan oo ay wax ku dhaceen sayidkii oo ay ku soo noqnoqonayeen.

Taasi waa, Redis waxay u fiican tahay hawlaha dawlad la'aanta, maaha kuwo dawladeed. Mabda 'ahaan, waxa ay ogolaatay in la xalliyo mashaakilaadka intooda badan, laakiin waa haddii ay yihiin xalalka qiimaha muhiimka ah oo leh tusmo-tusyo. Laakiin Redis wakhtigaas aad buu uga xumaaday adkaysi iyo ku celcelin. Intaa waxaa dheer, waxaa jiray cabashooyin ku saabsan waxqabadka.

Waxaan ka fikirnay MySQL iyo PostgreSQL. Laakiin kan hore si uun nama qabsan, kan labaadna waa badeeco aad u casri ah laftiisa, mana habboona in adeegyo fudud lagu dhiso.
Waxaan isku daynay RIAK, Cassandra, xitaa xogta garaafyada. Kuwani waa dhammaan xalal sax ah oo aan ku habboonayn doorka qalab caalami ah oo loogu talagalay abuurista adeegyada.

Ugu dambayntii waxa aanu degnay Tarantool.

Waxaan u jeesannay markii ay ku jirtay nooca 1.6. Waxaan ku xiisaynnay sambabada qiimaha muhiimka ah iyo shaqeynta xogta macluumaadka ee xiriirka ah. Waxaa jira tusmooyinka sare, macaamil ganacsi iyo meelo bannaan, kuwani waa sida miisaska, laakiin ma fududa, waxaad ku kaydin kartaa tirooyin kala duwan oo tiirar ah. Laakiin muujinta dilaaga ah ee Tarantool waxay ahayd tusmooyinka sare oo ay weheliso qiimaha muhiimka ah iyo macaamilka.

Bulshada ku hadasha afka Ruushka ee u jawaaba, oo diyaar u ah inay ku caawiso wada sheekaysiga, ayaa sidoo kale door ka ciyaaray. Waxaan si firfircoon u isticmaalnay tan oo si toos ah ayaannu ugu nool nahay sheekada. Oo ha iloobin ku adkaysiga hufan iyada oo aan la helin khaladaad iyo khaladaad muuqda. Haddii aad u fiirsato taariikhdeena Tarantool, waxaa nagu dhacay xanuun badan iyo guul darrooyin ku saabsan ku celcelinta, laakiin waligeen ma lumin xogta khaladkeeda awgeed!

Hirgelintu waxay ku bilaabatay si adag

Waqtigaas, xirmadayada horumarinta ugu weyn waxay ahayd .NET, kaas oo aan lahayn xiriiriye Tarantool ah. Isla markiiba waxaan bilownay inaan wax ka samayno Go. Si fiican ayey ula shaqeysay Lua sidoo kale. Dhibaatada ugu weyn ee wakhtigaas waxay ahayd qaladka: in .NET wax walba waa ku fiican yihiin tan, laakiin intaa ka dib way adkeyd in la dhex galo aduunka Lua ee ku xiran, marka aadan haysan wax cillad ah marka laga reebo logs. Intaa waxaa dheer, sababa qaar ka mid ah soo noqnoqoshada ayaa si xilliyo ah u kala go'ay, sidaas darteed waxaan ku qasbanaaday in aan dhex galo qaab dhismeedka matoorka Tarantool. Sheekadu waxay ka caawisay tan, iyo ilaa xad, dukumentiyada; mararka qaarkood waxaan eegnay koodka. Waqtigaas, dukumeentiyadu waxay ahaayeen sidaas.

Marka, muddo dhowr bilood ah, waxaan ku guuleystey inaan madaxayga ku soo wareego oo aan natiijooyin wanaagsan ka helo la shaqaynta Tarantool. Waxaanu ku soo ururinay horumarka tixraaca ee git kaas oo ka caawiyay samaynta adeegyo yaryar oo cusub. Tusaale ahaan, markii hawl soo baxday: si loo abuuro microservice kale, horumariyuhu wuxuu eegay koodhka isha ee xalka tixraaca ee kaydka, waxayna qaadatay wax ka badan hal usbuuc si loo abuuro mid cusub.

Kuwani waxay ahaayeen waqtiyo gaar ah. Caadiyan, ka dib waxaad u kici kartaa maamulka miiska xiga oo weydii: "Isii mishiinka farsamada." Qiyaastii soddon daqiiqo ka dib baabuurka ayaa hore kula jiray. Adigaa isku xidhay, wax walbana rakibtay, taraafikadana waa laguu soo diray.

Maanta tani ma sii shaqeyn doonto: waxaad u baahan tahay inaad ku darto kormeerka iyo gelitaanka adeegga, ku daboosho shaqeynta imtixaannada, dalbo mashiinka farsamada ama gaarsiinta Kuber, iwm. Guud ahaan, way fiicnaan doontaa sidan, inkastoo ay qaadan doonto waqti dheer oo ay noqon doonto mid dhib badan.

Qaybi oo xukun. Waa maxay heshiiska Lua?

Waxa jirtay laba daran mid dooro: kooxaha qaar ayaa awoodi waayay in ay si isku hallayn ah u rogaan isbeddelada adeeg oo leh caqli badan Lua. Tan waxaa badanaa la socday adeeggu oo aan shaqaynayn.

Taasi waa, horumariyayaashu waxay diyaarinayaan nooc ka mid ah isbeddelka. Tarantool waxa ay bilaabaysaa socdaalka, laakiin nuqulku waxa uu weli wataa koodkii hore; Qaar ka mid ah DDL ama shay kale ayaa halkaas ku yimaada iyagoo ku celcelinaya, koodna si fudud ayuu u kala dhacayaa sababtoo ah xisaabta laguma darin. Natiijo ahaan, nidaamka cusboonaysiinta ee maamulayaasha ayaa lagu dhejiyay xaashida A4: joojinta ku celcelinta, cusboonaysii tan, daar ku celcelinta, dami halkan, ku cusboonaysii halkaas. qarow!

Natiijo ahaan, hadda waxaan inta badan isku daynaa inaanan waxba ku qaban Lua. Kaliya adeegso iproto (waa hab-maamuuska laba-geesoodka ah ee la macaamilka serverka), waana taas. Waxaa laga yaabaa in tani ay tahay aqoon la'aan ka mid ah horumarinta, laakiin marka laga eego aragtidan nidaamku waa mid adag.

Had iyo jeer si indho la'aan ah uma raacno qoraalkan. Maanta ma hayno madow iyo caddaan: ama wax kastaa waxay ku yaalliin Lua, ama wax walba waxay ku yaalliin Go. Waxaan horey u fahamnay sida aan isugu dari karno si aynaan ugu dambeyn dhibaatooyinka socdaalka hadhow.

Aaway Tarantool hadda?
Tarantool waxa loo isticmaalaa adeega xisaabinta qiimaha ugu dambeeya ee alaabta iyada oo la tixgalinayo kuuboonnada dhimista, oo sidoo kale loo yaqaan "Xidhiidhiye". Sidii aan horay u sheegay, hadda wuu ka fariistay: waxaa lagu beddelayaa adeeg cusub oo buug-yare ah oo leh qiime horay loo xisaabiyay, laakiin lix bilood ka hor dhammaan xisaabinta ayaa lagu sameeyay Promotizer. Markii hore, kala badh caqligeeda waxay ku qornayd Lua. Labo sano ka hor ayaa adeegga loo rogay goob wax lagu keydiyo, waxaana caqligu dib loo qoray Go, sababtoo ah farsamadii qiimo dhimista ayaa wax yar is beddeshay, adeeggiina waxqabad la’aan.

Mid ka mid ah adeegyada ugu muhiimsan waa astaanta isticmaalaha. Taasi waa, dhammaan isticmaalayaasha Wildberries waxay ku kaydsan yihiin Tarantool, waxaana jira ilaa 50 milyan oo iyaga ka mid ah. Nidaam lagu qaybiyay aqoonsiga isticmaalaha, oo loo qaybiyay dhowr DCs oo ku xiran adeegyada Go.
Sida laga soo xigtay RPS, Promoter ayaa mar ahaa hogaamiyaha, gaarey 6 kun oo codsi. Mar waxa aanu haynay 50-60 koobi. Hadda hogaamiyaha RPS waa profiles user, oo ku saabsan 12 kun. Adeeggani waxa uu isticmaalaa sharding gaar ah, oo loo qaybiyey kala duwan ee aqoonsiga user. Adeeggu wuxuu u adeegaa in ka badan 20 mashiin, laakiin tani aad bay u badan tahay, waxaan qorsheyneynaa inaan dhimno kheyraadka loo qoondeeyay, sababtoo ah awoodda 4-5 mishiin ayaa ku filan.

Adeegga fadhiga waa adeegyagii ugu horreeyay ee vshard iyo Cartridge. Dejinta vshard iyo cusboonaysiinta Cartridge waxay nooga baahan tahay xoogaa dadaal ah, laakiin ugu dambeyntii wax walba way shaqeeyeen.

Adeegga lagu soo bandhigo boorarka kala duwan ee mareegaha iyo arjiga mobilka ayaa ka mid ahaa kuwii ugu horeeyay ee si toos ah loogu sii daayo Tarantool. Adeegani waa mid caan ku ah xaqiiqda ah in uu jiro 6-7 sano, wali waa uu shaqeeyaa oo waligeed dib looma kicin. Ku celcelinta Master-master ayaa la isticmaalay. Wax weligii jabay ma jiraan.

Waxaa jira tusaale u adeegsiga Tarantool ee shaqada tixraaca degdega ah ee nidaamka bakhaarka si aad si dhakhso leh laba-laab ugu hubiso macluumaadka xaaladaha qaarkood. Waxaan isku daynay inaan u isticmaalno Redis tan, laakiin xogta ku jirta xusuusta ayaa qaadatay meel ka badan tan Tarantool.

Adeegyada liiska sugitaanka, isdiiwaangelinta macmiilka, sheekooyinka moodada ah ee hadda jira iyo alaabada dib loo dhigay ayaa sidoo kale la shaqeeya Tarantool. Adeegga ugu dambeeya ee xusuusta wuxuu qaataa ilaa 120 GB. Tani waa adeegga ugu dhammaystiran ee kuwa kor ku xusan.

gunaanad

Thanks to tusmooyinka sare oo ay weheliso qiimaha muhiimka ah iyo wax kala iibsiga, Tarantool waxay si fiican ugu habboon tahay qaab-dhismeedka ku salaysan adeeg-yaraha. Si kastaba ha ahaatee, waxa aanu la kulanay dhibaatooyin markii aanu isbedel ku samaynay adeegyada Lua - adeegyadu inta badan way joojiyaan shaqada. Waanu awoodi kari waynay inaan ka gudubno tan, muddo ka dib waxaan nimid isku darka kala duwan ee Lua iyo Go: waxaan ognahay halka laga isticmaalo hal luqad iyo halka laga isticmaalo mid kale.

Maxaa kale oo laga akhriyi mawduuca

Source: www.habr.com

Add a comment