Mokhoa oa ho khaotsa ho tšoenyeha le ho qala ho phela ntle le monolith

Mokhoa oa ho khaotsa ho tšoenyeha le ho qala ho phela ntle le monolith

Kaofela re rata lipale. Re rata ho lula re pota-potile mollo le ho bua ka tlhōlo ea rona ea nakong e fetileng, lintoa kapa phihlelo ea rona ea mosebetsi.

Kajeno ke letsatsi le joalo feela. Mme leha o se mollong hona joale, re na le pale bakeng sa hau. Pale ea kamoo re qalileng ho sebetsa le polokelo Tarantool.

Ka nako e 'ngoe, k'hamphani ea rona e ne e e-na le "monoliths" tse' maloa le "siling" e le 'ngoe bakeng sa bohle, tseo monoliths tsena li neng li ntse li atamela butle-butle, li fokotsa ho fofa ha k'hamphani ea rona, tsoelo-pele ea rona. 'Me ho ne ho e-na le kutloisiso e hlakileng: ka letsatsi le leng re tla otla siling ena ka thata.

Hona joale ke mohopolo o teng oa ho arola ntho e 'ngoe le e' ngoe le motho e mong le e mong, ho tloha ho thepa ho ea ho logic ea khoebo. Ka lebaka leo, rona, ka mohlala, re na le li-DC tse peli tse batlang li ikemetse boemong ba marang-rang. 'Me joale tsohle li ne li fapane ka ho feletseng.

Kajeno, ho na le lisebelisoa tse ngata le lisebelisoa tsa ho etsa liphetoho ka mokhoa oa CI/CD, K8S, joalo-joalo. Nakong ea "monolithic", re ne re sa hloke mantsoe a mangata a tsoang linaheng tse ling. Ho ne ho lekane ho lokisa "polokelo" sebakeng sa polokelo ea litaba.

Empa nako e ile ea ea pele, 'me palo ea likopo e ile ea tsoela pele hammoho le eona, ka linako tse ling e thunya RPS ho feta bokhoni ba rona. Ka ho kena ha linaha tsa CIS 'marakeng, mojaro ho processor ea database ea monolith ea pele ha ea ka ea oela ka tlase ho 90%,' me RPS e ile ea lula e le boemong ba 2400. 'Me tsena e ne e se feela likhetho tse nyenyane, empa lipotso tse boima tse nang le licheke le JOIN tse ka tsamaisang hoo e batlang e le halofo ea data khahlano le bokamorao ba IO e kholo.

Ha thekiso e feletseng ea Black Friday e qala ho hlaha sebakeng seo - 'me Wildberries e ne e le e mong oa ba pele ba ho ba tšoara Russia - boemo bo ile ba e-ba masoabi ka ho feletseng. Etsoe, mojaro matsatsing a joalo o eketseha ka makhetlo a mararo.
Oh, "linako tsena tsa monolithic"! Ke kholisehile hore le uena u kile ua hlaheloa ke ntho e tšoanang, ’me u ntse u sa utloisise hore na sena se ka u etsahalla joang.

Seo u ka se etsang - feshene ke tlhaho ea theknoloji. Hoo e ka bang lilemo tse 5 tse fetileng, re ile ra tlameha ho nahana hape ka e 'ngoe ea li-mods tsena ka mokhoa oa sebaka se teng ho .NET le seva sa MS SQL, se bolokileng ka hloko lintlha tsohle tsa sebaka ka boeona. Ke ile ka e boloka ka hloko hoo ho bona monolith e joalo e ileng ea e-ba nako e telele le e seng monate ho hang.
Ho kgeloha hanyane.

Liketsahalong tse fapa-fapaneng ke re: "haeba u sa bone monolith, joale ha ua ka ua hōla!" Ke thahasella maikutlo a hau tabeng ena, ke kopa u e ngole maikutlong.

Molumo oa lialuma

Ha re khutleleng ho "bonfire" ea rona. Ho tsamaisa mosebetsi oa "monolithic", re nkile qeto ea ho arola sistimi ka li-microservices ho latela mahlale a opensource. Hobane, bonyane, li theko e tlase ho sekala. Mme re ne re na le kutlwisiso ya 100% hore re tla tlameha ho hola (le haholo). Ha e le hantle, e se e ntse e le ka nako eo ho ne ho khoneha ho kena limmarakeng tsa linaha tsa boahelani, 'me palo ea ho ngolisoa, hammoho le palo ea litaelo, e ile ea qala ho hōla ka matla le ho feta.

Ha re se re hlahlobile likhetho tsa pele tsa ho tloha monolith ho ea ho li-microservices, re hlokometse hore 80% ea mongolo ho bona o tsoa litsamaisong tsa liofisi tse ka morao, le ho bala ho tsoa ofising e ka pele. Pele ho tsohle, sena se ne se amehile ka litsamaiso tse 'maloa tsa bohlokoa bakeng sa rona - data ea mosebelisi le sistimi ea ho bala litšenyehelo tsa ho qetela tsa thepa ho latela tlhaiso-leseling e mabapi le litheolelo tse eketsehileng tsa bareki le litlankane.

E kentsoeng ka hare. Hona joale hoa tšosa ho nahana, empa ho phaella ho li-subsystems tse boletsoeng ka holimo, li-catalogs tsa lihlahisoa, koloi ea ho reka ea basebelisi, mokhoa oa ho batla lihlahisoa, mokhoa oa ho sefa bakeng sa li-catalogs tsa lihlahisoa, le mefuta e fapaneng ea mekhoa ea likhothaletso le eona e ile ea tlosoa monolith ea rona. Bakeng sa ts'ebetso ea e 'ngoe le e' ngoe ea tsona, ho na le lihlopha tse arohaneng tsa litsamaiso tse entsoeng ka mokhoa o moqotetsane, empa ka nako e 'ngoe kaofela ba ne ba lula "ntlong" e le 'ngoe.

Re ile ra rera hang-hang ho fetisetsa lintlha tse mabapi le bareki ba rona ho sistimi e sharded. Ho tlosoa ha ts'ebetso bakeng sa ho bala litšenyehelo tsa ho qetela tsa thepa ho ne ho hloka scalability e ntle bakeng sa ho bala, hobane e thehile mojaro o moholo ka ho fetisisa oa RPS 'me e ne e le thata ka ho fetisisa ho e kenya ts'ebetsong bakeng sa database (data e ngata e ameha ts'ebetsong ea ho bala).

Ka lebaka leo, re ile ra tla le leano le lumellanang hantle le Tarantool.

Ka nako eo, bakeng sa ts'ebetso ea li-microservices, ho ile ha khethoa merero ea ho sebetsa le litsi tse 'maloa tsa data ho mechini ea sebele le ea hardware. Joalo ka ha ho bonts'itsoe lipalong, likhetho tsa phetisetso ea Tarantool li ile tsa sebelisoa ka mekhoa ea master-master le master-slave.

Mokhoa oa ho khaotsa ho tšoenyeha le ho qala ho phela ntle le monolith
Meaho. Kgetho 1. Tshebeletso ya mosebedisi

Hona joale, ho na le li-shards tse 24, tseo e 'ngoe le e' ngoe e nang le maemo a 2 (e le 'ngoe bakeng sa DC e' ngoe le e 'ngoe), kaofela ka mokhoa oa master-master.

Ka holim'a polokelo ea polokelo ho na le lits'ebetso tse fihlellang likopi tsa database. Likopo li sebetsa le Tarantool ka laeborari ea rona ea tloaelo, e sebelisang sebopeho sa mokhanni oa Tarantool Go. O bona lipapiso tsohle 'me o khona ho sebetsa le mong'a hae ho bala le ho ngola. Ha e le hantle, e sebelisa mohlala oa replica set, o eketsang mabaka a ho khetha likopi, ho etsa liteko hape, sekhechana sa potoloho le moeli oa sekhahla.

Tabeng ena, hoa khoneha ho lokisa leano la khetho ea replica maemong a shards. Ka mohlala, roundrobin.

Mokhoa oa ho khaotsa ho tšoenyeha le ho qala ho phela ntle le monolith
Meaho. Khetho ea 2. Tšebeletso ea ho bala litšenyehelo tsa ho qetela tsa thepa

Likhoeli tse 'maloa tse fetileng, boholo ba likopo tsa ho bala litšenyehelo tsa ho qetela tsa thepa li ile tsa ea tšebeletsong e ncha, eo, ha e le hantle, e sebetsang ntle le li-database, empa nakong e fetileng ntho e' ngoe le e 'ngoe e ne e sebetsoa ka 100% ka tšebeletso e nang le Tarantool tlas'a hood.

Setsi sa polokelo ea lits'ebeletso se na le masters a 4 moo synchronizer e bokellang data, 'me e mong le e mong oa litsebi tsena tsa ho pheta-pheta o aba lintlha ho likopi tse baloang feela. Mong'a e mong le e mong o na le likopi tse ka bang 15 tse joalo.

Ebang ke morerong oa pele kapa oa bobeli, haeba DC e le 'ngoe e sa fumanehe, kopo e ka fumana data ho ea bobeli.

Ho bohlokoa ho hlokomela hore ho pheta-pheta ho Tarantool ho bonolo ebile ho ka hlophisoa ka nako ea ho sebetsa. Litsamaisong tse ling, ho ile ha hlaha mathata. Ka mohlala, ho fetola max_wal_senders le max_replication_slots parameters ho PostgreSQL ho hloka ho qala hape ha wizate, eo maemong a mang e ka lebisang ho khaoha ha likhokahano pakeng tsa kopo le DBMS.

Batla 'me u tla fumana!

Ke hobane'ng ha re sa ka ra e etsa "joaloka batho ba tloaelehileng", empa re khethile tsela e sa tloaelehang? E itšetlehile ka se nkoang se tloaelehile. Ba bangata ka kakaretso ba etsa sehlopha ho tloha Mongo ebe ba se hasanya ho li-DC tse tharo tse ajoang ke geo.

Ka nako eo, re ne re se re ntse re e-na le merero e 'meli ea Redis. Ea pele e ne e le cache, 'me ea bobeli e ne e le polokelo e tsitsitseng bakeng sa data e seng ea bohlokoa haholo. Ho ne ho le thata haholo ho eena, karolo e 'ngoe ka lebaka la phoso ea rona. Ka linako tse ling ho ne ho e-na le meqolo e meholo haholo, 'me nako le nako setša se ne se fokola. Re sebelisitse sistimi ena ho mofuta oa master-slave. 'Me ho ne ho e-na le linyeoe tse ngata moo ntho e' ngoe e ileng ea etsahala ho monghali le ho pheta-pheta ho ile ha senyeha.

Ka mantsoe a mang, Redis e loketse mesebetsi e sa reroang, eseng ea maemo. Ha e le hantle, e ne e lumella ho rarolla mathata a mangata, empa hafeela e ne e le tharollo ea bohlokoa ka li-index. Empa Redis ka nako eo o ne a hloname haholo ka ho phehella le ho pheta-pheta. Ho feta moo, ho bile le litletlebo mabapi le tšebetso.

Re ile ra nahana ka MySQL le PostgreSQL. Empa ea pele ka tsela e itseng ha ea ka ea re tšoara, 'me ea bobeli ke sehlahisoa se rarahaneng ka boeona,' me e ka ba ho sa lokelang ho haha ​​litšebeletso tse bonolo ho eona.
Re lekile RIAK, Cassandra, esita le database ea graph. Tsena kaofela ke litharollo tsa niche tse neng li sa tšoanele karolo ea sesebelisoa se akaretsang sa ho theha lits'ebeletso.

Qetellong re ile ra lula Tarantool.

Re ile ra retelehela ho eona ha e ne e le mofuta oa 1.6. Re ne re e thahasella ka symbiosis ea bohlokoa-boleng le ts'ebetso ea database ea likamano. Ho na le li-index tsa bobeli, litšebelisano le libaka, tsena li tšoana le litafole, empa ha li bonolo, u ka boloka lipalo tse fapaneng tsa likholomo ho tsona. Empa tšobotsi e bolaeang ea Tarantool e ne e le li-index tsa bobeli tse kopantsoeng le bohlokoa ba bohlokoa le transactionality.

Sechaba se arabelang se buang Serussia, se itokiselitseng ho thusa moqoqong, le sona se ile sa phetha karolo. Re sebelisitse sena ka mafolofolo mme re phela ka kotloloho moqoqong. Hape u se ke ua lebala ka mekhoa e metle e phehellang ntle le liphoso le liphoso tse hlakileng. Haeba u sheba nalane ea rona le Tarantool, re ne re e-na le bohloko bo boholo le mefokolo ka ho pheta-pheta, empa ha ho mohla re kileng ra lahleheloa ke data ka lebaka la phoso ea eona!

Ts'ebetsong e qalile hampe

Ka nako eo, sephutheloana sa rona se seholo sa nts'etsopele e ne e le .NET, eo ho eona ho neng ho se na sehokelo sa Tarantool. Hang-hang re ile ra qala ho etsa ho hong ho Go. E ile ea sebetsa hantle le Lua hape. Bothata bo ka sehloohong ka nako eo e ne e le ho lokisa liphoso: ho .NET ntho e 'ngoe le e' ngoe e ntle ka sena, empa ka mor'a moo ho ne ho le thata ho kena lefatšeng la Lua e kentsoeng, ha u se na debugging ntle le lifate. Ho phaella moo, ka mabaka a itseng ho pheta-pheta nako le nako ho ne ho senyeha, kahoo ke ile ka tlameha ho phunya ka har'a mohaho oa enjene ea Tarantool. Puisano e thusitse ho sena, mme ho isa tekanyong e nyane, litokomane; ka linako tse ling re ne re sheba khoutu. Ka nako eo, litokomane li ne li le joalo-joalo.

Kahoo, nakong ea likhoeli tse 'maloa, ke ile ka khona ho potoloha le ho fumana liphetho tse ntle ka ho sebetsa le Tarantool. Re hlophisitse nts'etsopele ea litšupiso ho git e thusitseng ho theha li-microservices tse ncha. Ka mohlala, ha mosebetsi o hlaha: ho theha microservice e 'ngoe, moqapi o ile a sheba mohloli oa mohloli oa tharollo ea litšupiso sebakeng sa polokelo,' me ha hoa ka ha nka nako e fetang beke ho theha e ncha.

Tsena e ne e le linako tse khethehileng. Ka mokhoa o ts'oanang, o ka nyolohela ho motsamaisi tafoleng e latelang mme o botse: "Mphe mochini o sebetsang." Metsotso e ka bang mashome a mararo hamorao koloi e ne e se e na le uena. U ile ua ikamahanya, ua kenya tsohle, 'me sephethephethe se rometsoe ho uena.

Kajeno sena ha se sa tla hlola se sebetsa: o hloka ho eketsa ho beha leihlo le ho rema lits'ebeletso, ho koahela ts'ebetso ka liteko, ho odara mochini o sebetsang kapa ho isa ho Kuber, jj. Ka kakaretso, ho tla ba molemo ka tsela ena, le hoja ho tla nka nako e telele le ho ba le mathata a mangata.

Arola 'me u buse. O sebetsana le eng ka Lua?

Ho ne ho e-na le bothata bo tebileng: lihlopha tse ling li ne li sitoa ho fana ka liphetoho tšebeletsong e nang le mabaka a mangata Lua. Hangata sena se ne se tsamaea le tšebeletso e sa sebetseng.

Ke hore, bahlahisi ba lokisetsa phetoho ea mofuta o itseng. Tarantool e qala ho falla, empa setšoantšo se ntse se e-na le khoutu ea khale; DDL e 'ngoe kapa ntho e' ngoe e fihla moo ka ho pheta-pheta, 'me khoutu e oela feela hobane e sa eloa hloko. Ka lebaka leo, ts'ebetso ea ntlafatso ea batsamaisi e ne e behiloe leqepheng la A4: emisa ho pheta-pheta, ntlafatsa sena, bulela ho pheta-pheta, tima mona, ntlafatsa moo. Toro e tšosang!

Ka lebaka leo, hona joale hangata re leka ho se etse letho Lua. Sebelisa feela iproto (protocol ea binary bakeng sa ho sebelisana le seva), 'me ke phetho. Mohlomong sena ke ho hloka tsebo har'a bahlahisi, empa ho latela pono ena tsamaiso e rarahane.

Ha se kamehla re latelang mongolo ona ka bofofu. Kajeno ha re na botsho le bosweu: ekaba tsohle di ho Lua, kapa tsohle di ho Go. Re se re ntse re utloisisa hore na re ka li kopanya joang e le hore re se ke ra qetella re e-na le mathata a ho falla hamorao.

Tarantool e hokae hona joale?
Tarantool e sebelisoa tšebeletsong bakeng sa ho bala litšenyehelo tsa ho qetela tsa thepa ho nahanela li-coupons tsa theolelo, tse tsejoang hape e le "Promoter". Joalokaha ke boletse pejana, hona joale o tlohela mosebetsi: o nkeloa sebaka ke tšebeletso e ncha ea lethathamo la litheko ka litheko tse baliloeng pele, empa likhoeling tse tšeletseng tse fetileng lipalo tsohle li entsoe ho Promotizer. Pele, halofo ea mabaka a eona a ne a ngotsoe ka Selua. Lilemong tse peli tse fetileng, tšebeletso e ile ea fetoloa sebaka sa polokelo, 'me mohopolo o ile oa ngoloa hape ho Go, hobane mechine ea litheolelo e ne e fetohile hanyenyane mme tšebeletso e ne e haelloa ke ts'ebetso.

E 'ngoe ea litšebeletso tsa bohlokoa ka ho fetisisa ke boemo ba mosebedisi. Ke hore, basebelisi bohle ba Wildberries ba bolokiloe Tarantool, 'me ho na le ba ka bang limilione tse 50. Sistimi e sharded ka ID ea mosebedisi, e ajoang ho pholletsa le DC tse 'maloa tse amanang le lits'ebeletso tsa Go.
Ho ea ka RPS, Promoter e kile ea e-ba moetapele, a finyella likōpo tse likete tse 6. Ka nako e 'ngoe re ne re e-na le likopi tse 50-60. Hona joale moeta-pele oa RPS ke litlaleho tsa basebelisi, tse ka bang likete tse 12. Tšebeletso ena e sebelisa sharding e tloaelehileng, e arotsoe ka mefuta ea li-ID tsa basebelisi. Ts'ebeletso e sebeletsa mechini e fetang 20, empa ena e ngata haholo; re rera ho fokotsa lisebelisoa tse fanoeng, hobane matla a mechini e 4-5 e lekane bakeng sa eona.

Tšebeletso ea Session ke tšebeletso ea rona ea pele ho vshard le Cartridge. Ho theha vshard le ho nchafatsa Cartridge ho ne ho hloka boiteko bo itseng ho rona, empa qetellong tsohle li ile tsa sebetsa.

Ts'ebeletso ea ho bonts'a lifolakha tse fapaneng webosaeteng le ts'ebelisong ea mehala e bile e 'ngoe ea tsa pele tse lokollotsoeng ka kotloloho ho Tarantool. Ts'ebeletso ena e bohlokoa hobane e na le lilemo tse 6-7, e ntse e sebetsa 'me ha e e-so ka e tsosolosoa. Ho ile ha sebelisoa phetiso ea master-master. Ha ho letho le kileng la robeha.

Ho na le mohlala oa ho sebelisa Tarantool bakeng sa ts'ebetso e potlakileng ea litšupiso tsamaisong ea polokelo ho hlahloba lintlha habeli maemong a mang. Re lekile ho sebelisa Redis bakeng sa sena, empa data e mohopolong e nkile sebaka se seholo ho feta Tarantool.

Litšebeletso tsa lenane la ba emetseng, lipeeletso tsa bareki, lipale tsa hajoale le thepa e chechisitsoeng li sebetsa le Tarantool. Tšebeletso ea ho qetela ea memori e nka hoo e ka bang 120 GB. Ena ke tšebeletso e pharaletseng ka ho fetisisa ho tse ka holimo.

fihlela qeto e

Ka lebaka la li-index tsa bobeli tse kopantsoeng le boleng ba bohlokoa le transactionality, Tarantool e loketse meralo e thehiloeng ho microservices. Leha ho le joalo, re ile ra kopana le mathata ha re etsa liphetoho litšebeletsong tse nang le kelello e ngata Lua - hangata litšebeletso li ile tsa khaotsa ho sebetsa. Ha rea ​​ka ra khona ho hlōla sena, ’me ha nako e ntse e ea re ile ra fihla mefuteng e sa tšoaneng ea Selua le Go: re tseba moo re ka sebelisang puo e ’ngoe le hore na re ka sebelisa e ’ngoe hokae.

Ke eng hape eo u lokelang ho e bala ka sehlooho

Source: www.habr.com

Eketsa ka tlhaloso