Momwe mungalekerere kudandaula ndikuyamba kukhala opanda monolith

Momwe mungalekerere kudandaula ndikuyamba kukhala opanda monolith

Tonse timakonda nkhani. Timakonda kukhala pamoto ndikukambirana za kupambana kwathu kwakale, nkhondo, kapena zomwe takumana nazo pantchito.

Lero ndi tsiku lotere. Ndipo ngakhale simuli pamoto pompano, tili ndi nkhani kwa inu. Nkhani ya momwe tinayambira kugwira ntchito ndi yosungirako pa Tarantool.

Kalekale, kampani yathu inali ndi "monoliths" angapo ndi "denga" limodzi kwa onse, omwe ma monoliths awa anali kuyandikira pang'onopang'ono, kuchepetsa kuthawa kwa kampani yathu, chitukuko chathu. Ndipo panali kumvetsetsa bwino: tsiku lina tidzagunda denga ili molimba.

Tsopano ndi malingaliro omwe alipo olekanitsa chilichonse ndi aliyense, kuchokera ku zida kupita kumalingaliro abizinesi. Zotsatira zake, ife, mwachitsanzo, tili ndi ma DC awiri omwe ali odziimira pawokha pa intaneti. Ndiyeno zonse zinali zosiyana kotheratu.

Masiku ano, pali zida ndi zida zambiri zosinthira mawonekedwe a CI/CD, K8S, etc. Mu nthawi ya "monolithic", sitinafune mawu ambiri akunja. Zinali zokwanira kungokonza "chosungira" mu database.

Koma nthawi idapita patsogolo, ndipo kuchuluka kwa zopempha kumapita patsogolo, nthawi zina kuwombera RPS kuposa momwe tingathere. Ndi kulowa kwa mayiko a CIS mumsika, katundu pa purosesa ya database ya monolith yoyamba siinagwe pansi pa 90%, ndipo RPS inakhalabe pamtunda wa 2400. macheke ndi ma JOIN omwe atha kuyendetsa pafupifupi theka la deta motsutsana ndi maziko a IO yayikulu.

Pamene kugulitsa kwathunthu kwa Black Friday kunayamba kuwonekera - ndipo Wildberries anali m'modzi mwa oyamba kuwagwira ku Russia - zinthu zidakhala zachisoni kwambiri. Ndipotu, katundu pa masiku amenewa amawonjezeka katatu.
O, β€œnthawi za monolithic” izi! Ndikukhulupirira kuti inunso munakumanapo ndi zimenezi, ndipo simungamvetsebe mmene zimenezi zingakuchitikireni.

Zomwe mungachite - mafashoni ndi obadwa muukadaulo. Pafupifupi zaka 5 zapitazo, tinayenera kuganiziranso chimodzi mwa ma modswa mwa mawonekedwe a malo omwe alipo pa .NET ndi seva ya MS SQL, yomwe inasunga mosamala malingaliro onse a malo omwewo. Ndinazisunga mosamala kwambiri kuti kuwona monolith yotere kunakhala nthawi yayitali komanso yosangalatsa.
Kutuluka pang'ono.

Pazochitika zosiyanasiyana ndimati: "ngati simunawone monolith, ndiye kuti simunakule!" Ndine chidwi ndi maganizo anu pa nkhaniyi, chonde lembani mu ndemanga.

Phokoso la Bingu

Tiyeni tibwerere ku "bonfire" wathu. Kuti tigawire kuchuluka kwa magwiridwe antchito a "monolithic", tidaganiza zogawa makinawa kukhala ma microservices kutengera ukadaulo wa opensource. Chifukwa, pang'ono, ndi otsika mtengo kukulitsa. Ndipo tinali ndi kumvetsetsa kwa 100% kuti tiyenera kukulitsa (ndi zambiri). Ndipotu, kale panthawiyo zinali zotheka kulowa m'misika ya mayiko oyandikana nawo, ndipo chiwerengero cha olembetsa, komanso chiwerengero cha malamulo, chinayamba kukula kwambiri.

Titasanthula oyambira oyamba kuchoka ku monolith kupita ku ma microservices, tidazindikira kuti 80% yolemba mwa iwo imachokera kumaofesi akumbuyo, ndikuwerenga kuchokera kuofesi yakutsogolo. Choyamba, izi zidakhudza magawo angapo ofunikira kwa ife - deta ya ogwiritsa ntchito ndi dongosolo lowerengera mtengo womaliza wa katundu potengera chidziwitso chowonjezera kuchotsera kwamakasitomala ndi makuponi.

Zolowera mkati. Tsopano ndizowopsa kuganiza, koma kuwonjezera pazigawo tating'ono tatchulazi, makatalogu azinthu, ngolo yogulitsira ogwiritsa ntchito, makina osakira zinthu, makina osefa pamakatalogu azinthu, ndi mitundu yosiyanasiyana yamakina amawu adachotsedwanso ku monolith yathu. Pakugwira ntchito kwa aliyense wa iwo, pali magulu osiyana a machitidwe opangidwa mochepa, koma kamodzi kamodzi onse amakhala mu "nyumba" imodzi.

Nthawi yomweyo tinakonzekera kusamutsa zambiri za makasitomala athu ku shard system. Kuchotsedwa kwa magwiridwe antchito kuwerengera mtengo womaliza wa katundu kumafunikira scalability yabwino yowerengera, chifukwa idapanga katundu wamkulu wa RPS ndipo inali yovuta kwambiri kuti ikwaniritse Nawonso achichepere (zambiri zambiri zimakhudzidwa ndi kuwerengera).

Zotsatira zake, tidabwera ndi chiwembu chomwe chikugwirizana bwino ndi Tarantool.

Pa nthawiyo, ntchito microservices anasankha ziwembu ntchito ndi malo angapo deta pa makina pafupifupi ndi hardware. Monga momwe ziwonetsedwera mu ziwerengero, njira zobwerezabwereza za Tarantool zidagwiritsidwa ntchito munjira zonse za master-master ndi master-kapolo.

Momwe mungalekerere kudandaula ndikuyamba kukhala opanda monolith
Zomangamanga. Njira 1. Utumiki wogwiritsa ntchito

Pakalipano, pali shards 24, iliyonse ili ndi zochitika za 2 (imodzi pa DC iliyonse), zonse zili mu master-master mode.

Pamwamba pa database pali mapulogalamu omwe amapeza zolemba za database. Mapulogalamu amagwira ntchito ndi Tarantool kudzera mulaibulale yathu yokhazikika, yomwe imagwiritsa ntchito mawonekedwe oyendetsa a Tarantool Go. Amawona zolemba zonse ndipo amatha kugwira ntchito ndi mbuye wake kuwerenga ndi kulemba. M'malo mwake, imagwiritsa ntchito mawonekedwe ofananira, omwe amawonjezera malingaliro pakusankha zofananira, kuyesanso, kuphwanya dera komanso malire.

Pankhaniyi, ndizotheka kukonza ndondomeko ya kusankha replica muzochitika za shards. Mwachitsanzo, roundrobin.

Momwe mungalekerere kudandaula ndikuyamba kukhala opanda monolith
Zomangamanga. Njira 2. Utumiki wowerengera mtengo womaliza wa katundu

Miyezi ingapo yapitayo, zopempha zambiri zowerengera mtengo womaliza wa katundu zidapita ku ntchito yatsopano, yomwe, imagwira ntchito popanda ma database, koma nthawi ina yapitayo zonse zidakonzedwa 100% ndi ntchito ndi Tarantool pansi pa hood.

Dongosolo lautumiki lili ndi ma masters 4 momwe synchronizer imasonkhanitsira deta, ndipo aliyense wa masters obwerezawa amagawira zidziwitso kuti zikhale zowerengera zokha. Mbuye aliyense ali ndi zofananira pafupifupi 15.

Kaya mu chiwembu choyamba kapena chachiwiri, ngati DC imodzi palibe, ntchitoyo imatha kulandira deta yachiwiri.

Ndizofunikira kudziwa kuti kubwereza mu Tarantool ndikosavuta ndipo kumatha kukhazikitsidwa panthawi yothamanga. Mu machitidwe ena, zovuta zinayamba. Mwachitsanzo, kusintha max_wal_senders ndi max_replication_slots magawo mu PostgreSQL kumafuna kuyambiranso kwa wizard, zomwe nthawi zina zimatha kuletsa kulumikizana pakati pa pulogalamuyo ndi DBMS.

Fufuzani ndipo mudzapeza!

Chifukwa chiyani sitinachite "monga anthu wamba", koma tidasankha njira yongoyerekeza? Zimatengera zomwe zimaonedwa ngati zachilendo. Anthu ambiri amapanga gulu kuchokera ku Mongo ndikufalitsa ma DC atatu omwe amagawidwa.

Panthawiyo, tinali ndi ntchito ziwiri za Redis. Yoyamba inali cache, ndipo yachiwiri inali kusungirako kosalekeza kwa deta yosafunikira kwambiri. Zinali zovuta kwa iye, mwina chifukwa cha vuto lathu. Nthawi zina ma voliyumu akuluakulu anali mfungulo, ndipo nthawi ndi nthawi malowo amakhala osakhazikika. Tinagwiritsa ntchito dongosololi mu mtundu wa master-slave. Ndipo panali zochitika zambiri pamene chinachake chinachitika kwa mbuye ndipo kubwereza kunasokonekera.

Ndiko kuti, Redis ndiyabwino pantchito zopanda malire, osati zonenepa. M'malo mwake, zimalola kuthetsa mavuto ambiri, koma pokhapokha ngati anali mayankho amtengo wapatali ndi ma index awiri. Koma Redis panthawiyo anali wachisoni kwambiri ndi kulimbikira komanso kubwerezabwereza. Kuphatikiza apo, panali madandaulo okhudza magwiridwe antchito.

Tinaganizira za MySQL ndi PostgreSQL. Koma choyamba sichinagwirizane nafe, ndipo chachiwiri ndi chinthu chamakono mwachokha, ndipo sikungakhale koyenera kupanga ntchito zosavuta pa izo.
Tinayesa RIAK, Cassandra, ngakhale database ya ma graph. Izi zonse ndi njira zabwino zomwe sizinali zoyenera kugwiritsa ntchito chida chapadziko lonse lapansi popanga ntchito.

Pamapeto pake tinakhazikika pa Tarantool.

Tinatembenukira kwa izo pamene zinali mu version 1.6. Tidachita chidwi ndi symbiosis yamtengo wapatali komanso magwiridwe antchito a database yaubale. Pali ma index achiwiri, zochitika ndi malo, awa ali ngati matebulo, koma osati ophweka, mukhoza kusunga manambala osiyanasiyana amizere mmenemo. Koma gawo lakupha la Tarantool linali ma index achiwiri ophatikizidwa ndi chinsinsi chamtengo wapatali komanso kusinthana.

Anthu omvera olankhula Chirasha, okonzeka kuthandiza pa macheza, nawonso adathandizira. Tidagwiritsa ntchito izi mwachangu ndikukhala molunjika pamacheza. Ndipo musaiwale za kulimbikira kwabwino popanda zolakwa zowonekera ndi zolakwika. Ngati muyang'ana mbiri yathu ndi Tarantool, tinali ndi zowawa zambiri ndi zolephera ndi kubwerezabwereza, koma sitinataye deta chifukwa cha vuto lake!

Kukhazikitsa kunayamba movutirapo

Panthawiyo, gawo lathu lalikulu lachitukuko linali .NET, komwe kunalibe cholumikizira cha Tarantool. Nthawi yomweyo tinayamba kuchita chinachake mu Go. Zinagwiranso ntchito bwino ndi Lua nayenso. Vuto lalikulu pa nthawiyo linali ndi debugging: mu .NET zonse ndi zabwino ndi izi, koma pambuyo pake zinali zovuta kulowa mu dziko la ophatikizidwa Lua, pamene mulibe debugging kupatula mitengo. Komanso, pazifukwa zina kubwereza nthawi zina anagwa, kotero ndinayenera fufuzani mu dongosolo la injini Tarantool. Macheza adathandizira izi, ndipo pang'ono, zolemba; nthawi zina tinkayang'ana pa code. Pa nthawiyo, zolembazo zinali choncho.

Chifukwa chake, m'miyezi ingapo, ndidakwanitsa kuwongolera mutu wanga ndikupeza zotsatira zabwino pogwira ntchito ndi Tarantool. Tidapanga zomwe zachitika mu git zomwe zidathandizira kupanga ma microservices atsopano. Mwachitsanzo, ntchito itayamba: kupanga microservice ina, wopanga mapulogalamuwo adayang'ana gwero lachidziwitso chazomwe zili m'malo osungiramo zinthu, ndipo sizinatenge nthawi yoposa sabata kuti apange yatsopano.

Izi zinali nthawi zapadera. Conventionally, ndiye inu mukhoza kupita kwa admin pa tebulo lotsatira ndi kufunsa: "Ndipatseni makina enieni." Pafupifupi mphindi makumi atatu galimotoyo inali ndi inu kale. Munadzilumikiza nokha, kuyika zonse, ndipo magalimoto adatumizidwa kwa inu.

Lero izi sizigwiranso ntchito: muyenera kuwonjezera kuyang'anira ndi kudula mitengo pautumiki, kuphimba magwiridwe antchito ndi mayeso, kuyitanitsa makina enieni kapena kutumiza ku Kuber, ndi zina zambiri. Kawirikawiri, zidzakhala bwino motere, ngakhale kuti zidzatenga nthawi yaitali komanso zovuta kwambiri.

Gawani ndikulamulira. Nanga bwanji Lua?

Panali vuto lalikulu: magulu ena sanathe kusinthiratu zosintha zamautumiki okhala ndi malingaliro ambiri ku Lua. Izi nthawi zambiri zinkatsagana ndi ntchito yosagwira ntchito.

Ndiko kuti, opanga akukonzekera mtundu wina wa kusintha. Tarantool imayamba kusamuka, koma chofananacho chikadali ndi code yakale; DDL ina kapena china chake chimafika pamenepo kudzera kubwereza, ndipo kachidindoyo kamangowonongeka chifukwa sichikuganiziridwa. Zotsatira zake, njira yosinthira oyang'anira idayikidwa pa pepala la A4: siyani kubwereza, sinthani izi, yatsani kubwereza, zimitsani apa, sinthani pamenepo. Zowopsa!

Zotsatira zake, tsopano nthawi zambiri timayesetsa kusachita chilichonse ku Lua. Ingogwiritsani ntchito iproto (protocol ya binary polumikizana ndi seva), ndipo ndi momwemo. Mwinamwake uku ndiko kusowa kwa chidziwitso pakati pa omanga, koma kuchokera pano dongosololi ndi lovuta.

Sikuti nthawi zonse timatsatira mwachimbulimbuli zolemba izi. Masiku ano tilibe zakuda ndi zoyera: mwina zonse zili mu Lua, kapena zonse zili mu Go. Timamvetsetsa kale momwe tingawaphatikizire kuti tisamadzavutike ndi kusamuka pambuyo pake.

Kodi Tarantool ili kuti?
Tarantool imagwiritsidwa ntchito powerengera mtengo womaliza wa katundu potengera makuponi ochotsera, omwe amadziwikanso kuti "Promoter". Monga ndidanenera kale, tsopano akupuma pantchito: akusinthidwa ndi ntchito yatsopano yamakalata ndi mitengo yowerengeka kale, koma miyezi isanu ndi umodzi yapitayo ziwerengero zonse zidapangidwa mu Promotizer. M'mbuyomu, theka la malingaliro ake adalembedwa mu Lua. Zaka ziwiri zapitazo, ntchitoyi idasinthidwa kukhala malo osungiramo zinthu, ndipo malingaliro adalembedwanso mu Go, chifukwa makina ochotserako adasintha pang'ono ndipo ntchitoyo idasowa.

Chimodzi mwazinthu zofunikira kwambiri ndi mbiri ya ogwiritsa ntchito. Ndiko kuti, ogwiritsa ntchito onse a Wildberries amasungidwa ku Tarantool, ndipo pali pafupifupi 50 miliyoni a iwo.
Malinga ndi RPS, Promoter nthawi ina anali mtsogoleri, akufikira zopempha 6 zikwi. Panthawi ina tinali ndi makope 50-60. Tsopano mtsogoleri wa RPS ndi mbiri ya ogwiritsa ntchito, pafupifupi zikwi za 12. Utumiki uwu umagwiritsa ntchito sharding mwambo, wogawidwa ndi ma ID a ogwiritsa ntchito. Utumikiwu umagwiritsa ntchito makina opitilira 20, koma izi ndizochulukirapo; tikukonzekera kuchepetsa zomwe tapatsidwa, chifukwa makina 4-5 ndiwokwanira.

Session Service ndi ntchito yathu yoyamba pa vshard ndi Cartridge. Kukhazikitsa vshard ndi kukonzanso Cartridge kumafuna khama kwa ife, koma pamapeto pake zonse zidayenda bwino.

Ntchito yowonetsa zikwangwani zosiyanasiyana patsamba la webusayiti komanso mu pulogalamu yam'manja inali imodzi mwazoyamba kutulutsidwa mwachindunji pa Tarantool. Utumikiwu ndi wodziwika chifukwa ndi zaka 6-7, ukugwirabe ntchito ndipo sunayambenso kuyambiranso. Kubwereza kwa master-master kunagwiritsidwa ntchito. Palibe chomwe chinaswekapo.

Pali chitsanzo chogwiritsa ntchito Tarantool kuti mugwiritse ntchito mwachangu m'malo osungiramo zinthu kuti mufufuze mwachangu zambiri nthawi zina. Tidayesa kugwiritsa ntchito Redis pa izi, koma zomwe zili m'makumbukidwe zidatenga malo ambiri kuposa Tarantool.

Ntchito za mndandanda wodikirira, zolembetsa zamakasitomala, nkhani zamakono komanso zinthu zomwe zasinthidwa zimagwiranso ntchito ndi Tarantool. Ntchito yomaliza kukumbukira imatenga pafupifupi 120 GB. Uwu ndiye utumiki wokwanira wazomwe zili pamwambapa.

Pomaliza

Chifukwa cha ma index achiwiri ophatikizidwa ndi fungulo-mtengo komanso kusinthana, Tarantool ndiyoyenererana ndi zomangamanga zokhazikitsidwa ndi ma microservices. Komabe, tidakumana ndi zovuta potulutsa zosintha zamautumiki ndi malingaliro ambiri ku Lua - mautumiki nthawi zambiri amasiya kugwira ntchito. Sitinathe kugonjetsa izi, ndipo m'kupita kwa nthawi tinafika kumagulu osiyanasiyana a Lua ndi Go: timadziwa komwe tingagwiritsire ntchito chinenero chimodzi komanso komwe tingagwiritsire ntchito china.

Chinanso choti muwerenge pamutuwu

Source: www.habr.com

Kuwonjezera ndemanga