Nzira yekurega sei kunetseka uye kutanga kurarama pasina monolith

Nzira yekurega sei kunetseka uye kutanga kurarama pasina monolith

Tese tinoda nyaya. Isu tinoda kugara takatenderedza moto tichitaura nezvekukunda kwedu kwakapfuura, hondo, kana kungoziva kwedu basa.

Nhasi izuva rakadaro. Uye kunyangwe usiri pamoto izvozvi, tine nyaya yako. Nyaya yekuti takatanga sei kushanda nekuchengetedza paTarantool.

Pane imwe nguva, kambani yedu yaive ne "monoliths" akati wandei uye imwe "ceiling" kune vese, uko mamonoliths aya aiswedera zvishoma nezvishoma, achidzikamisa kubhururuka kwekambani yedu, budiriro yedu. Uye paiva nekunzwisisa kwakajeka: rimwe zuva ticharova iyi sirin'i zvakaoma.

Ikozvino ndiyo pfungwa iripo yekuparadzanisa zvese nemunhu wese, kubva kumidziyo kuenda kune bhizinesi logic. Nekuda kweizvozvo, isu, semuenzaniso, tine maDC maviri anozvimiririra padanho retiweki. Zvino zvinhu zvose zvakanga zvakasiyana zvachose.

Nhasi, kune akawanda maturusi uye maturusi ekuita shanduko muchimiro cheCI/CD, K8S, nezvimwe. Munguva ye "monolithic", takanga tisingadi mazwi akawanda ekunze. Zvakanga zvakakwana kungoruramisa "kuchengetedza" mudhatabhesi.

Asi nguva yakaenderera mberi, uye nhamba yezvikumbiro yakaenderera mberi pamwe chete nayo, dzimwe nguva ichipfura RPS kupfuura zvatinokwanisa. Nekupinda kwenyika dzeCIS mumusika, mutoro uri padhatabhesi processor yekutanga monolith haina kuwira pasi pe90%, uye RPS yakaramba iri pamwero we 2400. Uye aya akanga asiri madiki anosarudza, asi mibvunzo yakakura ine boka remacheki uye maJOIN anogona kumhanya ingangoita hafu yedata achipesana nekumashure kweIO hombe.

Apo kutengesa kwakazara kweBlack Friday kwakatanga kuonekwa panzvimbo - uye Wildberries yaiva imwe yekutanga kuvabata muRussia - mamiriro acho akasuruvara zvachose. Mushure mezvose, mutoro pamazuva akadaro unowedzera katatu.
Oo, idzi "nguva dzemonolithic"! Ndine chokwadi chekuti wakasangana nechinhu chakafanana, uye hausati wanzwisisa kuti izvi zvingaitika sei kwauri.

Chii chaungaite - fashoni inowanikwa mune tekinoroji. Anenge makore 5 apfuura, taifanira kufunga zvakare imwe yeiyi mods muchimiro chenzvimbo iripo pane .NET uye MS SQL server, iyo yakanyatso chengetedza zvese zvinonzwisisika zvesaiti pachayo. Ndakaichengeta nekungwarira zvekuti kuona monolith yakadaro yakave yakareba uye isiri nyore mafaro.
Kusimuka kudiki.

Pazviitiko zvakasiyana-siyana ndinoti: "kana usina kuona monolith, saka hauna kukura!" Ndiri kufarira maonero enyu panyaya iyi, ndapota nyorai mumashoko.

Inzwi Rokutinhira

Ngatidzokere ku "bonfire" yedu. Kugovera mutoro we "monolithic" mashandiro, isu takasarudza kupatsanura sisitimu kuita mamicroservices zvichienderana neakavhurika tekinoroji. Nekuti, pazvishoma, zvakachipa kuyera. Uye isu takanga tine 100% kunzwisisa kuti taizofanira kuyera (uye yakawanda). Mushure mezvose, kare panguva iyoyo zvaive zvichibvira kupinda mumisika yenyika dzakapoteredza, uye nhamba yekunyora, pamwe chete nenhamba yemirairo, yakatanga kukura zvakanyanya.

Taongorora vamiriri vekutanga kubva ku monolith kuenda ku microservices, takaona kuti 80% yekunyora mavari inobva kuback office system, uye kuverenga kubva kuhofisi yekumberi. Chekutanga, izvi zvine chekuita akati wandei akakosha masisitimu kwatiri - data remushandisi uye hurongwa hwekuverenga mutengo wekupedzisira wezvinhu zvichibva paruzivo rwezvekuwedzera kuderedzwa kwevatengi uye makuponi.

Indented. Ikozvino zvinotyisa kufungidzira, asi mukuwedzera kune ma subsystems ataurwa pamusoro, zvinyorwa zvechigadzirwa, mushandisi ngoro yekutenga, chigadzirwa chekutsvaga sisitimu, sefa yekusefa yemakatalogi ezvigadzirwa, uye akasiyana marudzi ekurudziro masisitimu akabviswawo kubva kune yedu monolith. Nokuda kwekushanda kweumwe neumwe wavo, kune makirasi akaparadzana ezvirongwa zvakashongedzwa zvishoma, asi pane imwe nguva vose vaigara mune imwe "imba".

Isu takabva taronga kuendesa data nezve vatengi vedu kune sharded system. Kubviswa kwekushanda kwekuverenga mutengo wekupedzisira wezvinhu kunoda scalability yakanaka yekuverenga, nekuti yakagadzira iyo yakakura RPS mutoro uye ndiyo yakanyanya kuoma kuita kune dhatabhesi (yakawanda data inobatanidzwa mukuverenga maitiro).

Nekuda kweizvozvo, takauya nechirongwa chinoenderana neTarantool.

Panguva iyoyo, yekushanda kwe microservices, zvirongwa zvekushanda neanoverengeka data data pa virtual uye hardware michina yakasarudzwa. Sezvinoratidzwa muhuwandu, sarudzo dzekudzokorora dzeTarantool dzakashandiswa mune zvese tenzi-tenzi uye tenzi-muranda modes.

Nzira yekurega sei kunetseka uye kutanga kurarama pasina monolith
Architecture. Sarudzo 1. Basa remushandisi

Parizvino pane 24 shards, imwe neimwe ine 2 zviitiko (imwe yega yega DC), ese ari master-master mode.

Pamusoro pe database pane maapplication anowana database replicas. Zvishandiso zvinoshanda neTarantool kuburikidza neraibhurari yedu yetsika, iyo inoshandisa iyo Tarantool Go mutyairi interface. Anoona mifananidzo yose uye anogona kushanda natenzi kuverenga nokunyora. Chaizvoizvo, inoshandisa iyo replica set modhi, iyo inowedzera pfungwa yekusarudza replicas, kuita retries, yedunhu breaker uye muganho wechiyero.

Muchiitiko ichi, zvinokwanisika kugadzirisa replica sarudzo yemitemo mumamiriro ezvinhu e shards. Somuenzaniso, roundrobin.

Nzira yekurega sei kunetseka uye kutanga kurarama pasina monolith
Architecture. Sarudzo 2. Basa rekuverenga mutengo wekupedzisira wezvinhu

Mwedzi mishomanana yapfuura, zvizhinji zvezvikumbiro zvekuverenga mutengo wekupedzisira wezvinhu zvakaenda kune rimwe basa idzva, iro, chaizvoizvo, rinoshanda pasina databases, asi imwe nguva yapfuura zvinhu zvose zvakagadziriswa 100% nebasa neTarantool pasi pehodhi.

Iyo sevhisi dhatabhesi ine 4 masters umo synchronizer inounganidza data, uye imwe neimwe yeaya ekudzokorora masters anogovera data kuti iverenge chete replicas. Tenzi wega wega ane angangoita gumi neshanu replicas.

Pamwe mune yekutanga kana yechipiri chirongwa, kana imwe DC isingawanikwe, application inogona kugamuchira data mune yechipiri.

Izvo zvakakosha kucherechedza kuti kudzokorora muTarantool inoshanduka uye inogona kugadzirwa panguva yekumhanya. Mune mamwe maitiro, matambudziko akamuka. Semuenzaniso, kushandura max_wal_senders uye max_replication_slots parameters muPostgreSQL inoda kutangwazve kwewizard, izvo mune dzimwe nguva zvinogona kutungamirira kukupatsanurwa kwekubatana pakati pekushandisa neDBMS.

Tsvaga uye uchawana!

Sei isu tisina kuzviita "sevanhuwo zvavo", asi takasarudza nzira yeatypical? Zvinobva pane zvinonzi zvakajairika. Vanhu vazhinji vanowanzogadzira sumbu kubva kuMongo voriparadzira kune matatu geo-akagoverwa DCs.

Panguva iyoyo, takanga tatova nemapurojekiti maviri eRedis. Yekutanga yaive cache, uye yechipiri yaive yakaramba ichichengetera data isiri yakanyanya kunetsa. Zvakanga zvakaoma kwaari, pamwe nemhosva yedu. Pane dzimwe nguva mavhoriyamu makuru zvikuru akanga ari mukiyi, uye nguva nenguva nzvimbo yacho yakava isina kunaka. Isu takashandisa iyi sisitimu mune tenzi-muranda vhezheni. Uye pakanga paine zviitiko zvakawanda apo chimwe chinhu chakaitika kuna tenzi uye kudzokorora kwakaputsika.

Ndokureva kuti, Redis yakanakira mabasa asingatauriki, kwete ane chirevo. Muchidimbu, yaibvumira kugadzirisa matambudziko mazhinji, asi chete kana aive akakosha-kukosha mhinduro nembiri yema indexes. Asi Redis panguva iyoyo akanga akasuruvara zvikuru nekutsungirira uye kudzokorora. Pamusoro pezvo, pakanga paine zvichemo pamusoro pekuita.

Takafunga nezve MySQL uye PostgreSQL. Asi yekutanga neimwe nzira haina kubata nesu, uye yechipiri chigadzirwa chakaomarara pachacho, uye zvingave zvisina kukodzera kuvaka masevhisi akareruka pairi.
Takaedza RIAK, Cassandra, kunyange dhatabhesi regirafu. Aya ese akanyatsoita niche mhinduro dzaive dzisina kukodzera basa rechishandiso chepasirese chekugadzira masevhisi.

Pakupedzisira takagara paTarantool.

Takatendeukira kwairi payaive muvhezheni 1.6. Isu taifarira mairi neiyo symbiosis yekiyi-kukosha uye kushanda kweiyo hukama database. Iko kune yechipiri indexes, kutengeserana uye nzvimbo, izvi zvakafanana nematafura, asi zvisiri nyore, unogona kuchengeta nhamba dzakasiyana dzemakoramu mazviri. Asi iyo inouraya chimiro cheTarantool yaive yechipiri indexes yakasanganiswa nekiyi-kukosha uye transactionality.

Nharaunda inoteerera inotaura chiRussian, yakagadzirira kubatsira mukutaura, yakaitawo basa. Isu takashandisa izvi nekushingairira uye tinogara zvakananga mukutaura. Uye usakanganwa pamusoro pehuremekedzo inopfuurira pasina zvikanganiso zviri pachena uye zvikanganiso. Kana iwe ukatarisa nhoroondo yedu neTarantool, takava nemarwadzo mazhinji uye kukundikana nekudzokorora, asi isu hatina kumborasikirwa nedata nekuda kwekukanganisa kwayo!

Kuita kwakatanga kwakaipa

Panguva iyoyo, yedu huru yekuvandudza stack yaive .NET, iyo pakanga pasina chekubatanidza cheTarantool. Takabva tatanga kuita chimwe chinhu muGo. Yakashanda zvakanaka naLua zvakare. Dambudziko guru panguva iyoyo raiva nekugadzirisa: mu.NET zvinhu zvose zvakanaka neizvi, asi mushure mezvo zvakanga zvakaoma kunyura munyika yeLua yakamisikidzwa, kana usina debugging kunze kwematanda. Uye zvakare, nekuda kwechimwe chikonzero kudzokorora nguva nenguva kwakaparara, saka ndaifanira kunyura muchimiro cheinjini yeTarantool. Kukurukurirana kwakabatsira neizvi, uye kusvika padiki, zvinyorwa; dzimwe nguva taitarisa kodhi. Panguva iyoyo, zvinyorwa zvaive zvakadaro.

Saka, mukufamba kwemwedzi yakati wandei, ndakakwanisa kutenderedza musoro wangu uye kuwana mibairo yakanaka kubva mukushanda neTarantool. Isu takanyora mareferensi ekuvandudza mu git iyo yakabatsira nekugadzirwa kwema microservices matsva. Semuenzaniso, pakaitika basa: kugadzira imwe microservice, mugadziri akatarisa iyo kodhi kodhi yereferensi mhinduro mune repository, uye hazvina kutora inopfuura vhiki kugadzira imwe itsva.

Idzi dzaive nguva dzakakosha. Sezvineiwo, ipapo unogona kukwira kune admin patafura inotevera wobvunza kuti: "Ndipe muchina chaiwo." Kwapera maminitsi angangosvika makumi matatu motokari yatove nemi. Wakazvibatanidza, wakaisa zvese, uye traffic yakatumirwa kwauri.

Nhasi izvi hazvichashande: iwe unofanirwa kuwedzera kutarisa uye kutema matanda kune sevhisi, kuvhara mashandiro acho nemiedzo, odha chaiyo muchina kana kuendesa kuKuber, nezvimwe. Kazhinji, zvichava nani nenzira iyi, kunyange zvazvo zvichatora nguva yakareba uye zvichinyanya kunetsa.

Gurai uye mutonge. Chii chinonzi Lua?

Paive nedambudziko rakakura: zvimwe zvikwata hazvina kukwanisa kuburitsa shanduko kusevhisi ine pfungwa dzakawanda muLua. Izvi zvaiwanzoperekedzwa neshumiro isingashande.

Ndiko kuti, vagadziri vari kugadzirira imwe mhando yekuchinja. Tarantool inotanga kuita kutama, asi replica ichiri nekodhi yekare; Imwe DDL kana chimwe chinhu chinosvika ipapo kuburikidza nekudzokorora, uye iyo kodhi inongodonha nekuti haina kuverengerwa. Nekuda kweizvozvo, maitiro ekuvandudza evatariri akaiswa paA4 pepa: mira kudzokorora, gadziridza izvi, vhura kudzokorora, dzima pano, gadziridza ipapo. Hope dzakaipa!

Somugumisiro, iye zvino tinowanzoedza kuita chinhu muLua. Ingoshandisa iproto (binary protocol yekudyidzana neserver), uye ndizvozvo. Zvichida uku ndiko kushayikwa kweruzivo pakati pevagadziri, asi kubva pakuona iyi hurongwa hwakaoma.

Hatiwanzoteedzere chinyorwa ichi neupofu. Nhasi hatina dema nechena: zvese zviri muLua, kana zvese zviri muGo. Isu tatonzwisisa kuti tingazvibatanidza sei kuitira kuti tisazopedzisira tasangana nematambudziko ekutama gare gare.

Tarantool iripi izvozvi?
Tarantool inoshandiswa musevhisi kuverenga mutengo wekupedzisira wezvinhu uchifunga nezve kuderedzwa makuponi, anozivikanwawo se "Promoter". Sezvandambotaura, iye zvino ari kuenda pamudyandigere: ari kutsiviwa nekatorike nyowani sevhisi nemitengo yakaverengerwa, asi mwedzi mitanhatu yapfuura maverengero ese akaitwa muPromotizer. Kare, hafu yepfungwa dzayo yakanyorwa muLua. Makore maviri apfuura, sevhisi yakashandurwa kuita nzvimbo yekuchengetera, uye pfungwa yakanyorwazve muGo, nekuti makanika ezvidzikiso akange achinja zvishoma uye sevhisi yakashaya kuita.

Imwe yeanonyanya kukosha masevhisi ndeye mushandisi chimiro. Ndiko kuti, vese vashandisi veWildberries vanochengetwa muTarantool, uye kune vangangoita mamirioni makumi mashanu.
Sekureva kweRPS, Promoter aimbove mutungamiri, achisvika zviuru zvitanhatu zvikumbiro. Pane imwe nguva takanga tine 6-50 makopi. Iye zvino mutungamiri muRPS ndiwo mapurogiramu evashandisi, anenge zviuru gumi nezviviri. Iyo sevhisi inoshandisa michina inodarika makumi maviri, asi izvi zvakawandisa; isu tinoronga kudzikisa zviwanikwa zvakagoverwa, nekuti huwandu hwemichina 60-12 hwakakwana pazviri.

Sevhisi sevhisi ndiyo yedu yekutanga sevhisi pa vshard uye Cartridge. Kumisikidza vshard uye kugadzirisa Cartridge kwaida kushanda nesimba kubva kwatiri, asi pakupedzisira zvese zvakabuda.

Iyo sevhisi yekuratidzira mabhenji akasiyana pawebhusaiti uye mune nharembozha yaive imwe yekutanga kuburitswa yakananga paTarantool. Iyi sevhisi inozivikanwa nekuti iine makore 6-7, ichiri kushanda uye haisati yambotangwazve. Master-master replication yakashandiswa. Hapana chakambotyoka.

Pane muenzaniso wekushandisa Tarantool yekukurumidza kutarisisa mashandiro mune yekuchengetera system kukurumidza kaviri-kutarisa ruzivo mune dzimwe nguva. Takaedza kushandisa Redis kune izvi, asi iyo data mundangariro yakatora yakawanda nzvimbo kupfuura Tarantool.

Iwo masevhisi erunyorwa rwekumirira, kunyoreswa kwevatengi, parizvino nyaya dzefashoni uye zvinhu zvakamisikidzwa zvinoshandawo neTarantool. Yekupedzisira sevhisi mundangariro inotora inenge 120 GB. Iri ndiro basa rakazara rezviri pamusoro.

mhedziso

Kutenda kune yechipiri indexes yakasanganiswa nekiyi-kukosha uye transactionality, Tarantool inonyatso kukodzera kune microservices-based architectures. Nekudaro, isu takasangana nematambudziko pakuburitsa shanduko kumasevhisi ane akawanda mantiki muLua - masevhisi aiwanzomira kushanda. Hatina kukwanisa kukunda izvi, uye nekufamba kwenguva takasvika kumisanganiswa yakasiyana yeLua neGo: tinoziva kupi kwekushandisa mumwe mutauro uye kwekushandisa mumwe.

Chii chimwe chekuverenga pamusoro penyaya

Source: www.habr.com

Voeg