Otu esi akwụsị ichegbu onwe ya wee malite ibi ndụ na-enweghị monolith

Otu esi akwụsị ichegbu onwe ya wee malite ibi ndụ na-enweghị monolith

Anyị niile hụrụ akụkọ n'anya. Ọ na-amasị anyị ịnọdụ ala gburugburu ọkụ na-ekwu maka mmeri anyị gara aga, agha, ma ọ bụ naanị ahụmịhe ọrụ anyị.

Taa bụ nnọọ ụbọchị dị otú ahụ. Ma ọ bụrụgodị na ịnọghị na ọkụ ugbu a, anyị nwere akụkọ maka gị. Akụkọ otu anyị siri malite ịrụ ọrụ na nchekwa na Tarantool.

N'otu oge, ụlọ ọrụ anyị nwere di na nwunye nke "monoliths" na otu "ụlọ elu" maka ihe niile, nke monoliths ndị a ji nwayọọ nwayọọ na-abịaru nso, na-egbochi ụgbọ elu nke ụlọ ọrụ anyị, mmepe anyị. Ma enwere nghọta doro anya: otu ụbọchị, anyị ga-akụri ụlọ a ike.

Ọ bụ ugbu a echiche na-emepe emepe nkewapụ ihe niile na onye ọ bụla, site na ngwá ọrụ na mgbagha azụmahịa. N'ihi ya, anyị, dịka ọmụmaatụ, nwere DC abụọ bụ ndị nwere onwe ha na ọkwa netwọk. Ma mgbe ahụ ihe niile dị nnọọ iche.

Taa, enwere ọtụtụ ngwaọrụ na ngwaọrụ maka ime mgbanwe n'ụdị CI / CD, K8S, wdg. N'oge "monolithic", anyị achọghị ọtụtụ okwu mba ọzọ. O zuru ezu iji dozie "nchekwa" na nchekwa data.

Ma oge gara n'ihu, ọnụ ọgụgụ nke arịrịọ na-aga n'ihu na ya, mgbe ụfọdụ na-agbapụ RPS karịa ike anyị. Na ntinye nke mba CIS n'ahịa, ibu dị na nchekwa data processor nke mbụ monolith adaghị n'okpuru 90%, na RPS nọgidere na larịị nke 2400. Ma ndị a abụghị nanị obere selectors, ma hefty gbara ajụjụ na a. ụyọkọ ndenye ego na JOIN nwere ike ịgba ọsọ ihe fọrọ nke nta ka ọ bụrụ ọkara nke data megide ndabere nke nnukwu IO.

Mgbe ahịa Black Friday zuru ezu malitere ịpụta na ebe a - na Wildberries bụ otu n'ime ndị mbụ jidere ha na Russia - ọnọdụ ahụ bịara dị mwute kpamkpam. A sị ka e kwuwe, ibu dị n'ụbọchị ndị dị otú ahụ na-abawanye ugboro atọ.
Oh, “oge monolithic” ndị a! Eji m n'aka na ị hụla ụdị ihe ahụ, ma ị ka na-aghọtaghị otú nke a nwere ike isi mee gị.

Kedu ihe ị nwere ike ime - ejiji bụ ihe dị na nkà na ụzụ. Ihe dị ka afọ 5 gara aga, anyị ga-atụgharị uche n'otu n'ime mods ndị a n'ụdị saịtị dị na NET na MS SQL nkesa, nke ejiri nlezianya chekwaa echiche niile nke saịtị ahụ n'onwe ya. Ejiri m ya nke ọma nke na ịhụ ụdị monolith dị otú ahụ wee bụrụ ogologo oge na ọ bụghị ihe ụtọ ma ọlị.
A obere digression.

N'ihe omume dị iche iche m na-ekwu, sị: "Ọ bụrụ na ị hụghị monolith, mgbe ahụ ị naghị eto!" Enwere m mmasị n'echiche gị maka okwu a, biko dee ya na nkwupụta.

Ụda égbè eluigwe

Ka anyị laghachi na "ọkụ ọkụ" anyị. Iji kesaa ibu nke ọrụ "monolithic", anyị kpebiri kewaa usoro ahụ na microservices dabere na teknụzụ opensource. N'ihi na, opekempe, ha dị ọnụ ala karịa. Ma anyị nwere nghọta 100% na anyị ga-abawanye (na ọtụtụ). A sị ka e kwuwe, ugbua n'oge ahụ, ọ ga-ekwe omume ịbanye n'ahịa nke mba ndị agbata obi, na ọnụ ọgụgụ nke ndebanye aha, yana ọnụ ọgụgụ nke iwu, malitere ịmalite ọbụna karị.

N'ịbụ onye nyochachara ndị mbụ ga-aga ịpụ na monolith gaa na microservices, anyị chọpụtara na 80% nke ederede na-abịa site na usoro ụlọ ọrụ azụ, na ịgụ site na ụlọ ọrụ n'ihu. Nke mbụ, nke a metụtara di na nwunye nke dị mkpa subsystems maka anyị - onye ọrụ data na a usoro maka ịgbakọ ikpeazụ na-eri nke ngwaahịa dabere na ozi banyere ndị ọzọ ahịa ego na Kupọns.

Etinyere. Ugbu a ọ na-atụ egwu iche n'echiche, ma na mgbakwunye na usoro subsystem ndị ahụ a kpọtụrụ aha n'elu, katalọgụ ngwaahịa, ụgbọ ahịa ndị ọrụ, usoro nyocha ngwaahịa, usoro nzacha maka katalọgụ ngwaahịa, na ụdị usoro nkwenye dị iche iche ewepụkwara na monolith anyị. Maka ọrụ nke onye ọ bụla n'ime ha, e nwere klas dị iche iche nke usoro a na-ahazi nke ọma, ma n'otu oge, ha niile bi n'otu "ụlọ".

Anyị mere atụmatụ ozugbo ịnyefe data gbasara ndị ahịa anyị na sistemụ sharded. Mwepụ nke ọrụ maka ịgbakọ ụgwọ ikpeazụ nke ngwaahịa chọrọ scalability dị mma maka ịgụ akwụkwọ, n'ihi na o kere ibu RPS kachasị ukwuu ma bụrụ ihe siri ike ime maka nchekwa data (ọtụtụ data na-etinye aka na nhazi nhazi).

N'ihi ya, anyị wepụtara atụmatụ dabara nke ọma na Tarantool.

N'oge ahụ, maka ọrụ nke microservices, a họọrọ atụmatụ maka ịrụ ọrụ na ọtụtụ ebe data na igwe mebere na ngwaike. Dị ka egosiri na ọnụ ọgụgụ ndị a, etinyere nhọrọ mmegharị Tarantool na ụdị nna ukwu na nna ukwu-ohu.

Otu esi akwụsị ichegbu onwe ya wee malite ibi ndụ na-enweghị monolith
Nhazi. Nhọrọ 1. Ọrụ onye ọrụ

N'oge ugbu a, e nwere 24 shards, nke ọ bụla n'ime ha nwere 2 ikpe (otu maka onye ọ bụla DC), niile na master-master mode.

N'elu nchekwa data bụ ngwa na-enweta oyiri nchekwa data. Ngwa na-arụ ọrụ na Tarantool site na ọba akwụkwọ omenala anyị, nke na-arụ ọrụ Tarantool Go interface ọkwọ ụgbọ ala. Ọ na-ahụ nsụgharị niile ma nwee ike ịrụ ọrụ na nna ukwu ịgụ na ide. N'ụzọ bụ isi, ọ na-emejuputa ihe nlereanya setịpụrụ oyiri, nke na-agbakwunye mgbagha maka ịhọrọ oyiri, ịmegharịgharị, ihe nbibi sekit na oke ọnụego.

N'okwu a, ọ ga-ekwe omume ịhazi amụma nhọrọ oyiri na ọnọdụ nke shards. Dị ka ihe atụ, roundrobin.

Otu esi akwụsị ichegbu onwe ya wee malite ibi ndụ na-enweghị monolith
Nhazi. Nhọrọ 2. Ọrụ maka ịgbakọ ụgwọ ikpeazụ nke ngwaahịa

Ọnwa ole na ole gara aga, ọtụtụ n'ime arịrịọ maka ịgbakọ ụgwọ ikpeazụ nke ngwaahịa gara ọrụ ọhụrụ, nke, n'ụkpụrụ, na-arụ ọrụ na-enweghị ọdụ data, ma oge ụfọdụ gara aga, a na-edozi ihe niile 100% site na ọrụ na Tarantool n'okpuru mkpuchi.

Ebe nchekwa data ọrụ nwere nna ukwu 4 ebe synchronizer na-anakọta data na nke ọ bụla n'ime ndị nna ukwu mmegharị a na-ekesa data ka ọ bụrụ naanị ịgụgharị. Nna-ukwu ọ bụla nwere ihe dị ka ụdị 15 dị otú ahụ.

Ma na nke mbụ ma ọ bụ na atụmatụ nke abụọ, ọ bụrụ na otu DC adịghị, ngwa nwere ike ịnweta data na nke abụọ.

Ọ dị mma ịmara na mmegharị na Tarantool na-agbanwe nke ọma na enwere ike ịhazi ya n'oge ọ na-agba ọsọ. Na usoro ndị ọzọ, ihe isi ike bilitere. Dịka ọmụmaatụ, ịgbanwe max_wal_senders na max_replication_slots paramita na PostgreSQL chọrọ ịmalitegharị ọkachamara, nke n'ọnọdụ ụfọdụ nwere ike ime ka ikewa njikọ n'etiti ngwa na DBMS.

Chọọ ma ị ga-ahụ!

Gịnị mere na anyị emeghị ya "dị ka ndị nkịtị", ma họrọ atypical ụzọ? Ọ dabere na ihe a na-ewere dị ka ihe nkịtị. Ọtụtụ ndị mmadụ na-emekarị ụyọkọ si Mongo wee gbasaa ya n'ofe DC nke kesara geo atọ.

N'oge ahụ, anyị enweelarị ọrụ Redis abụọ. Nke mbụ bụ cache, nke abụọ bụ nchekwa na-adịgide adịgide maka data adịghị oke egwu. O siiri ya ike nke ukwuu, n'ihi na anyị kpatara ya. Mgbe ụfọdụ, nnukwu mpịakọta na-adị na igodo ahụ, site n'oge ruo n'oge saịtị ahụ adịkwaghị mma. Anyị na-eji usoro a na ụdị nna ukwu-ohu. Na e nwere ọtụtụ ikpe ebe ihe mere nna ukwu na replication mebiri.

Ya bụ, Redis dị mma maka ọrụ ndị na-enweghị obodo, ọ bụghị nke steeti. N'ụkpụrụ, ọ nyere ohere idozi ọtụtụ nsogbu, mana naanị ma ọ bụrụ na ha bụ isi ihe ngwọta bara uru yana ụzọ ntụaka. Mana Redis n'oge ahụ nwere oke mwute site na nnọgidesi ike na mmegharịgharị. Na mgbakwunye, enwere mkpesa banyere arụmọrụ.

Anyị chere maka MySQL na PostgreSQL. Ma nke mbụ n'ụzọ ụfọdụ ejideghị anyị, nke abụọ bụ ngwaahịa ọkaibe n'onwe ya, ọ ga-abụkwa ihe na-ekwesịghị ekwesị iji wuo ọrụ dị mfe na ya.
Anyị nwara RIAK, Cassandra, ọbụlagodi nchekwa data eserese. Ihe ndị a niile bụ ezigbo niche ngwọta na-adabaghị maka ọrụ nke ngwa ọrụ zuru ụwa ọnụ maka ịmepụta ọrụ.

N'ikpeazụ, anyị biri na Tarantool.

Anyị tụgharịrị na ya mgbe ọ dị na ụdị 1.6. Anyị nwere mmasị na ya site na symbiosis nke isi-uru na ọrụ nke nchekwa data mmekọrịta. Enwere ndepụta nke abụọ, azụmahịa na oghere, ndị a dị ka tebụl, ma ọ bụghị dị mfe, ị nwere ike ịchekwa ọnụọgụ dị iche iche nke ogidi n'ime ha. Ma ihe na-egbu egbu nke Tarantool bụ ndepụta nke abụọ jikọtara ya na isi-uru na azụmahịa.

Ndị obodo na-asụ Russian na-anabata nke ọma, dị njikere inye aka na nkata, nyekwara aka. Anyị ji nke a na-arụsi ọrụ ike na-ebi ndụ ozugbo na nkata. Ma echefula banyere ịdịgidesi ike nke ọma na-enweghị ntụpọ na mmejọ doro anya. Ọ bụrụ na ị na-elele akụkọ ihe mere eme anyị na Tarantool, anyị nwere ọtụtụ ihe mgbu na ọdịda na mmeghari, mana ọ dịghị mgbe anyị tụfuru data n'ihi mmejọ ya!

Mmejuputa a malitere n'isi ike

N'oge ahụ, nchịkọta mmepe anyị bụ .NET, nke enweghị njikọ maka Tarantool. Anyị malitere ozugbo ime ihe na Go. Ọ na-arụkwa ọrụ nke ọma na Lua. Isi nsogbu n'oge ahụ bụ debugging: na .NET ihe niile dị mma na nke a, ma mgbe nke ahụ gasịrị, ọ siri ike ịbanye n'ime ụwa nke Lua agbakwunyere, mgbe ị na-enweghị nbipu ma e wezụga ndekọ. Na mgbakwunye, n'ihi ihe ụfọdụ, mmegharị ahụ na-ada kwa oge, yabụ m ga-abanye n'ime nhazi nke injin Tarantool. Mkparịta ụka ahụ nyere aka na nke a, na n'ókè dị nta, akwụkwọ ahụ; mgbe ụfọdụ anyị na-eleba anya na koodu. N'oge ahụ, akwụkwọ ahụ dị otú ahụ.

Yabụ, n'ime ọtụtụ ọnwa, ejisiri m ike nweta isi m wee nweta nsonaazụ dị mma site na ịrụ ọrụ na Tarantool. Anyị chịkọtara ihe nrụtụ aka na git nke nyere aka n'ịmepụta microservices ọhụrụ. Dịka ọmụmaatụ, mgbe ọrụ bilitere: iji mepụta microservice ọzọ, onye nrụpụta lere anya na koodu isi mmalite nke ngwọta ntụaka na ebe nchekwa ahụ, ọ were ihe karịrị otu izu iji mepụta nke ọhụrụ.

Oge ndị a bụ oge pụrụ iche. Dịka iwu, ị nwere ike ịgakwuru onye nchịkwa na tebụl na-esote wee jụọ: "Nye m igwe mebere." Mgbe ihe dị ka nkeji iri atọ gachara, ụgbọ ala ahụ adịlarị gị. Ị jikọọ onwe gị, tinye ihe niile, na okporo ụzọ ezigara gị.

Taa nke a agaghịzi arụ ọrụ: ịkwesịrị ịgbakwunye nlekota na ịbanye na ọrụ ahụ, kpuchie ọrụ ahụ na ule, nye igwe mebere ma ọ bụ nnyefe na Kuber, wdg. N'ozuzu, ọ ga-aka mma n'ụzọ dị otú a, ọ bụ ezie na ọ ga-ewe ogologo oge ma na-enwekwu nsogbu.

Kewaa na-achị. Kedu ihe na-eme na Lua?

Enwere nnukwu nsogbu: ụfọdụ ndị otu enweghị ike iji ntụkwasị obi wepụta mgbanwe na ọrụ nwere ọtụtụ ezi uche na Lua. Nke a na-esokarị ya na ọrụ anaghị arụ ọrụ.

Ya bụ, ndị mmepe na-akwadebe ụfọdụ ụdị mgbanwe. Tarantool na-amalite ime ọpụpụ, mana oyiri ka nwere koodu ochie; Ụfọdụ DDL ma ọ bụ ihe ọzọ na-abịarute ebe ahụ site na ntugharị, na koodu ahụ na-adaba n'ihi na echeghị ya. N'ihi ya, e debere usoro mmelite maka ndị nchịkwa na mpempe akwụkwọ A4: kwụsị imegharị, melite nke a, gbanye nsụgharị, gbanyụọ ebe a, melite ebe ahụ. Ụrọ abalị!

N'ihi ya, ugbu a, anyị na-agbalịkarị ime ihe ọ bụla na Lua. Naanị jiri iproto (usoro ọnụọgụ abụọ maka imekọrịta ihe na ihe nkesa), nke ahụ bụkwa ya. Ikekwe nke a bụ enweghị ihe ọmụma n'etiti ndị mmepe, ma site n'echiche a usoro dị mgbagwoju anya.

Ọ bụghị mgbe niile ka anyị na-agbaso edemede a n'amaghị ama. Taa, anyị enweghị oji na ọcha: ma ihe niile dị na Lua, ma ọ bụ ihe niile dị na Go. Anyị aghọtalarị otú anyị nwere ike isi jikọta ha ka anyị ghara inwe nsogbu ịkwaga mba ọzọ ma emechaa.

Ebee ka Tarantool dị ugbu a?
A na-eji Tarantool na-arụ ọrụ maka ịgbakọ ọnụ ahịa ikpeazụ nke ngwaahịa na-eburu n'uche Kupọns ego, nke a makwaara dị ka "Nkwalite". Dị ka m kwuru na mbụ, ọ na-ala ezumike nká ugbu a: a na-eji ọrụ katalọgụ ọhụrụ dochie ya na ọnụ ahịa eburu ụzọ gbakọọ, mana ọnwa isii gara aga, e mere mgbakọ niile na Promotizer. Na mbụ, ọkara nke ezi uche ya ka e dere na Lua. Afọ abụọ gara aga, a tụgharịrị ọrụ ahụ ka ọ bụrụ ebe nchekwa, ma degharịa echiche ahụ na Go, n'ihi na usoro nhazi nke ego gbanwere ntakịrị na ọrụ ahụ enweghị ọrụ.

Otu n'ime ọrụ kachasị mkpa bụ profaịlụ onye ọrụ. Ya bụ, a na-echekwa ndị ọrụ Wildberries niile na Tarantool, ma e nwere ihe dị ka nde 50. Usoro nke ejiri ID onye ọrụ na-ekesa, na-ekesa n'ọtụtụ DCs jikọtara na ọrụ Go.
Dị ka RPS si kwuo, Promoter bụ onye ndú, na-eru 6 puku arịrịọ. N'otu oge, anyị nwere 50-60. Ugbu a onye ndu na RPS bụ profaịlụ onye ọrụ, ihe dị ka puku 12. Ọrụ a na-eji sharding omenala, kewara site na ọkwa nke njirimara njirimara. Ọrụ ahụ na-eje ozi karịa igwe 20, mana nke a dị oke oke; anyị na-eme atụmatụ ibelata akụrụngwa ekenyela, n'ihi na ikike nke igwe 4-5 ezuru ya.

Ọrụ nnọkọ bụ ọrụ mbụ anyị na vshard na Cartridge. Ịtọlite ​​​​vshard na imelite Cartridge chọrọ mgbalị ụfọdụ n'aka anyị, mana n'ikpeazụ ihe niile mere.

Ọrụ maka igosipụta ọkọlọtọ dị iche iche na webụsaịtị yana na ngwa mkpanaka bụ otu n'ime ndị mbụ ewepụtara ozugbo na Tarantool. Ọrụ a bụ ihe a ma ama n'ihi na ọ dị afọ 6-7, ọ ka na-arụ ọrụ ma ọ dịghịkwa mgbe a maliteghachiri ya. Ejikwa ntugharị nna ukwu-master. Ọ nweghị ihe mebiri.

Enwere ihe atụ nke iji Tarantool maka ịrụ ọrụ ntụaka ngwa ngwa na sistemu ụlọ nkwakọba ihe iji nyochaa ozi ngwa ngwa ugboro abụọ n'ọnọdụ ụfọdụ. Anyị gbalịrị iji Redis maka nke a, mana data dị na ebe nchekwa weghaara ohere karịa Tarantool.

Ọrụ nke ndepụta echere, ndenye aha ndị ahịa, akụkọ ejiji ugbu a na ngwa ndị ewegharịrị na-arụkwa ọrụ na Tarantool. Ọrụ ikpeazụ na ebe nchekwa na-ewe ihe dịka 120 GB. Nke a bụ ọrụ zuru oke nke ndị dị n'elu.

nkwubi

Ekele maka ndeksi nke abụọ jikọtara ya na isi-uru na azụmahịa, Tarantool dabara nke ọma maka ụlọ ọrụ dabere na microservices. Agbanyeghị, anyị zutere ihe isi ike mgbe anyị na-atụgharị mgbanwe na ọrụ nwere ọtụtụ ezi uche na Lua - ndị ọrụ na-akwụsịkarị ịrụ ọrụ. Anyị enweghị ike imeri nke a, ka oge na-aga, anyị bịarutere n'ụdị dị iche iche nke Lua na Go: anyị maara ebe anyị ga-eji otu asụsụ na ebe anyị ga-eji asụsụ ọzọ.

Kedu ihe ọzọ ị ga-agụ na isiokwu ahụ

isi: www.habr.com

Tinye a comment