Yadda za a daina damuwa da fara rayuwa ba tare da monolith ba

Yadda za a daina damuwa da fara rayuwa ba tare da monolith ba

Dukkanmu muna son labarai. Muna son zama a kusa da wuta kuma mu yi magana game da nasarorinmu na baya, yaƙe-yaƙe, ko kuma kawai ƙwarewar aikinmu.

Yau irin wannan rana ce kawai. Kuma ko da ba ku cikin wuta a yanzu, muna da labari a gare ku. Labarin yadda muka fara aiki tare da ajiya akan Tarantool.

A wani lokaci, kamfaninmu yana da "monoliths" guda biyu da kuma "rufi" ɗaya ga kowa, wanda waɗannan monoliths suka kasance a hankali amma tabbas suna gabatowa, yana iyakance jirgin kamfaninmu, ci gabanmu. Kuma akwai fahimtar fahimta: wata rana za mu buga wannan rufin da wuya.

Yanzu ita ce akidar da ta mamaye ta na raba komai da kowa, daga kayan aiki zuwa dabarun kasuwanci. Sakamakon haka, mu, alal misali, muna da DCs guda biyu waɗanda ke da a zahiri masu zaman kansu a matakin hanyar sadarwa. Sannan komai ya sha bamban.

A yau, akwai kayan aiki da kayan aiki da yawa don yin canje-canje a cikin nau'in CI / CD, K8S, da dai sauransu. A lokacin “monolithic”, ba mu buƙatar kalmomin waje da yawa. Ya isa kawai don gyara "ajiya" a cikin bayanan.

Amma lokaci ya ci gaba, kuma adadin buƙatun ya ci gaba tare da shi, wani lokaci yana harbi RPS fiye da ƙarfinmu. Tare da shigar da ƙasashen CIS a cikin kasuwa, nauyin da ke kan na'urar sarrafa bayanai na monolith na farko bai faɗi ƙasa da 90% ba, kuma RPS ya kasance a matakin 2400. Kuma waɗannan ba kawai ƙananan zaɓaɓɓu ba ne, amma manyan tambayoyi masu yawa tare da gungun cak da JOINs waɗanda zasu iya gudana kusan rabin bayanan akan bangon babban IO.

Lokacin da cikakken tallace-tallace na Black Friday ya fara bayyana a wurin - kuma Wildberries na ɗaya daga cikin na farko da ya riƙe su a Rasha - lamarin ya zama bakin ciki gaba daya. Bayan haka, nauyin irin waɗannan kwanaki yana ƙaruwa sau uku.
Oh, waɗannan "lokutan monolithic"! Na tabbata kun fuskanci wani abu makamancin haka, kuma har yanzu ba za ku iya fahimtar yadda hakan zai iya faruwa da ku ba.

Abin da za ku iya yi - fashion yana da mahimmanci a cikin fasaha. Kimanin shekaru 5 da suka gabata, dole ne mu sake yin tunanin ɗayan waɗannan mods a cikin hanyar da ke akwai akan NET da uwar garken MS SQL, wanda a hankali ya adana duk dabaru na rukunin yanar gizon da kansa. Na kiyaye shi a hankali cewa ganin irin wannan monolith ya zama mai tsawo kuma ba mai sauƙi ba ne.
Karamin digression.

A lokuta daban-daban na ce: "Idan ba ku ga monolith ba, to, ba ku girma!" Ina sha'awar ra'ayin ku game da wannan batu, da fatan za a rubuta shi a cikin sharhi.

Sautin Tsawa

Mu koma ga “wutar wuta”. Don rarraba nauyin ayyukan "monolithic", mun yanke shawarar raba tsarin zuwa ƙananan ayyuka bisa ga fasahar buɗe ido. Domin, a mafi ƙanƙanta, suna da arha don sikelin. Kuma muna da fahimtar 100% cewa dole ne mu haɓaka (da yawa). Bayan haka, riga a wancan lokacin yana yiwuwa a shiga kasuwannin kasashe makwabta, kuma adadin rajista, da kuma adadin umarni, ya fara girma sosai.

Bayan nazarin ’yan takara na farko don tashi daga monolith zuwa microservices, mun gane cewa 80% na rubuce-rubucen a cikin su sun fito ne daga tsarin ofis na baya, da kuma karatu daga ofishin gaba. Da farko, wannan ya shafi wasu ma'aurata masu mahimmancin tsarin mu - bayanan mai amfani da tsarin ƙididdige farashin kaya na ƙarshe dangane da ƙarin rangwamen abokin ciniki da takaddun shaida.

Ciki Yanzu yana da ban tsoro a yi tunanin, amma ban da tsarin da aka ambata a sama, kasidar samfur, keken siyayya mai amfani, tsarin neman samfur, tsarin tacewa don kasidar samfur, da nau'ikan tsarin shawarwari iri-iri kuma an cire su daga monolith namu. Don aikin kowane ɗayansu, akwai nau'ikan nau'ikan nau'ikan tsarin kunkuntar, amma sau ɗaya a lokaci guda duk suna zaune a cikin "gidan".

Nan da nan muka shirya don canja wurin bayanai game da abokan cinikinmu zuwa tsarin sharded. Kawar da ayyuka don ƙididdige farashin ƙarshe na kaya yana buƙatar ƙima mai kyau don karantawa, saboda ya haifar da mafi girman nauyin RPS kuma ya kasance mafi wuyar aiwatarwa don bayanan bayanai (yawancin bayanai suna shiga cikin tsarin lissafin).

A sakamakon haka, mun fito da wani makirci wanda ya dace da Tarantool.

A wannan lokacin, don aikin microservices, an zaɓi tsarin aiki tare da cibiyoyin bayanai da yawa akan na'urori masu kama da kayan aiki. Kamar yadda aka nuna a cikin alkaluma, an yi amfani da zaɓukan kwafin Tarantool a cikin nau'ikan master-master da master-slave.

Yadda za a daina damuwa da fara rayuwa ba tare da monolith ba
Gine-gine. Zabin 1. Sabis na mai amfani

A halin yanzu, akwai shards 24, kowannensu yana da lokuta 2 (ɗaya ga kowane DC), duk a cikin yanayin master-master.

A saman rumbun adana bayanai akwai aikace-aikacen da ke samun damar kwafin bayanai. Aikace-aikace suna aiki tare da Tarantool ta hanyar ɗakin karatu na al'ada, wanda ke aiwatar da ƙirar direban Tarantool Go. Ta ga duk kwafi kuma tana iya aiki tare da maigidan don karantawa da rubutu. Mahimmanci, yana aiwatar da tsarin saitin kwafi, wanda ke ƙara dabaru don zaɓar kwafi, yin gyare-gyare, mai watsewar kewayawa da iyakacin ƙima.

A wannan yanayin, yana yiwuwa a saita manufofin zaɓin kwafi a cikin mahallin shards. Alal misali, zagaye.

Yadda za a daina damuwa da fara rayuwa ba tare da monolith ba
Gine-gine. Zaɓin 2. Sabis don ƙididdige farashin ƙarshe na kaya

Bayan 'yan watanni da suka wuce, yawancin buƙatun don ƙididdige farashin ƙarshe na kaya sun tafi zuwa sabon sabis, wanda, bisa ga ka'ida, yana aiki ba tare da bayanan bayanai ba, amma wani lokaci da suka wuce duk abin da aka sarrafa 100% ta hanyar sabis tare da Tarantool a ƙarƙashin hular.

Rukunin bayanan sabis ɗin ya ƙunshi masters guda 4 waɗanda masu daidaitawa ke tattara bayanai a cikinsu, kuma kowane ɗayan waɗannan masters ɗin kwafi suna rarraba bayanai zuwa kwafin karatu kawai. Kowane maigidan yana da irin wannan kwafi kusan 15.

Ko dai a cikin na farko ko na biyu, idan babu DC guda ɗaya, aikace-aikacen na iya karɓar bayanai a cikin na biyu.

Ya kamata a lura cewa maimaitawa a cikin Tarantool yana da sauƙi kuma ana iya daidaita shi a lokacin aiki. A cikin wasu tsarin, matsaloli sun taso. Misali, canza max_wal_senders da max_replication_slots sigogi a PostgreSQL yana buƙatar sake kunna wizard, wanda a wasu lokuta na iya haifar da yanke haɗin kai tsakanin aikace-aikacen da DBMS.

Ku nema za ku samu!

Me ya sa ba mu yi shi "kamar mutane na al'ada", amma mun zaɓi hanyar da ba ta dace ba? Ya dogara da abin da ake la'akari da al'ada. Mutane da yawa gabaɗaya suna yin gungu daga Mongo kuma suna yada shi a cikin DCs masu rarraba geo-geo guda uku.

A lokacin, mun riga mun sami ayyukan Redis guda biyu. Na farko cache ne, kuma na biyu ma'adana ce mai dorewa don bayanan da ba su da mahimmanci. Yana da wuya a tare da shi, wani bangare saboda laifinmu. Wani lokaci babban kundin yana cikin maɓalli, kuma daga lokaci zuwa lokaci shafin ya zama mara lafiya. Mun yi amfani da wannan tsarin a cikin sigar master-bawa. Kuma akwai lokuta da yawa inda wani abu ya faru da maigidan kuma ya karye.

Wato, Redis yana da kyau ga ayyuka marasa ƙasa, ba na jihohi ba. A ka'ida, ya ba da damar warware yawancin matsalolin, amma idan sun kasance mafita mai mahimmanci tare da fihirisa biyu. Amma Redis a lokacin ya yi baƙin ciki sosai tare da dagewa da maimaitawa. Bugu da kari, an sami korafe-korafe game da aikin.

Mun yi tunani game da MySQL da PostgreSQL. Amma na farko ko ta yaya bai kama mu ba, kuma na biyu shine samfuri mai inganci a cikin kansa, kuma ba zai dace ba don gina ayyuka masu sauƙi a kai.
Mun gwada RIAK, Cassandra, har ma da bayanan hoto. Waɗannan duk ingantattun mafita ne waɗanda ba su dace da aikin kayan aikin gamayya na duniya don ƙirƙirar ayyuka ba.

A ƙarshe mun zauna akan Tarantool.

Mun juya zuwa gare shi lokacin da yake cikin sigar 1.6. Mun kasance da sha'awar shi ta hanyar symbiosis na maɓalli-darajar da ayyuka na bayanan bayanai. Akwai firikwensin sakandare, ma'amaloli da sarari, waɗannan kamar tebur ne, amma ba mai sauƙi ba, zaku iya adana lambobi daban-daban na ginshiƙai a cikinsu. Amma fasalin kisa na Tarantool shine maƙasudin na biyu haɗe tare da mahimmanci-daraja da ma'amala.

Al'ummar masu jin harshen Rashanci, suna shirye don taimakawa cikin taɗi, suma sun taka rawa. Mun yi amfani da wannan sosai kuma muna rayuwa kai tsaye a cikin taɗi. Kuma kar ka manta game da nacewa mai kyau ba tare da kurakurai da kurakurai ba. Idan ka kalli tarihin mu tare da Tarantool, muna da zafi da kasawa tare da maimaitawa, amma ba mu taɓa rasa bayanai ba saboda laifin sa!

Aiwatar da aiki ya fara aiki mai wahala

A wancan lokacin, babban tarin ci gaban mu shine .NET, wanda babu mai haɗawa don Tarantool. Nan take muka fara yin wani abu a cikin Go. Ya yi aiki da kyau tare da Lua kuma. Babban matsalar a wancan lokacin ita ce ta gyara kuskure: a cikin NET duk abin da yake da kyau tare da wannan, amma bayan haka yana da wuya a nutse cikin duniyar Lua da aka saka, lokacin da ba ku da gyara sai dai gundumomi. Bugu da kari, saboda wasu dalilai kwafi lokaci-lokaci ya fadi, don haka dole ne in zurfafa cikin tsarin injin Tarantool. Tattaunawar ta taimaka da wannan, kuma a ɗan ƙarami, takaddun; wani lokacin muna duba lambar. A lokacin, takardun sun kasance haka-haka.

Don haka, a cikin watanni da yawa, na sami damar samun kaina a kusa da samun kyakkyawan sakamako daga aiki tare da Tarantool. Mun tattara abubuwan ci gaba a cikin git waɗanda suka taimaka tare da ƙirƙirar sabbin ƙananan sabis. Misali, lokacin da wani aiki ya taso: don ƙirƙirar wani microservice, mai haɓakawa ya kalli lambar tushe na bayanin bayani a cikin ma'ajiyar, kuma bai ɗauki fiye da mako guda don ƙirƙirar sabo ba.

Waɗannan lokuta ne na musamman. A al'ada, za ku iya zuwa wurin admin a tebur na gaba kuma ku tambayi: "Ba ni injin kama-da-wane." Kusan mintuna talatin motar ta riga ku. Kun haɗa kanku, kun shigar da komai, kuma an aika muku da zirga-zirga.

A yau wannan ba zai ƙara aiki ba: kuna buƙatar ƙara saka idanu da shiga cikin sabis ɗin, rufe aikin tare da gwaje-gwaje, oda injin kama-da-wane ko isarwa zuwa Kuber, da sauransu. Gabaɗaya, zai zama mafi kyau ta wannan hanya, kodayake zai ɗauki lokaci mai tsawo kuma ya fi damuwa.

Raba da mulki. Meye batun Lua?

Akwai matsala mai tsanani: wasu ƙungiyoyi sun kasa aiwatar da canje-canje ga sabis tare da dabaru masu yawa a cikin Lua. Wannan yawanci yana tare da sabis ɗin baya aiki.

Wato, masu haɓakawa suna shirya wani nau'in canji. Tarantool ya fara yin ƙaura, amma kwafi har yanzu yana tare da tsohuwar lambar; Wasu DDL ko wani abu dabam suna zuwa wurin ta hanyar kwafi, kuma lambar kawai ta faɗi saboda ba a la'akari da ita. A sakamakon haka, an tsara tsarin sabuntawa don masu gudanarwa a kan takardar A4: dakatar da maimaitawa, sabunta wannan, kunna maimaitawa, kashe a nan, sabuntawa a can. Mafarkin dare!

A sakamakon haka, yanzu muna yawan ƙoƙarin yin komai a Lua. Kawai yi amfani da iproto (ka'idar binary don hulɗa tare da uwar garken), kuma shi ke nan. Wataƙila wannan rashin ilimi ne a tsakanin masu haɓakawa, amma daga wannan ra'ayi tsarin yana da rikitarwa.

Ba koyaushe muke bin wannan rubutun a makance ba. Yau ba mu da baki da fari: ko dai komai yana cikin Lua, ko kuma duk abin yana cikin Go. Mun riga mun fahimci yadda za mu iya haɗa su don kada mu ƙare da matsalolin ƙaura daga baya.

Ina Tarantool yanzu?
Ana amfani da Tarantool a cikin sabis ɗin don ƙididdige farashin ƙarshe na kaya yin la'akari da takaddun rangwame, wanda kuma aka sani da "Mai haɓakawa". Kamar yadda na fada a baya, yanzu yana ritaya: ana maye gurbinsa da sabon sabis na kasida tare da farashin da aka riga aka ƙidaya, amma watanni shida da suka gabata an yi duk lissafin a Promotizer. A baya, an rubuta rabin hikimarsa a cikin Lua. Shekaru biyu da suka wuce, an mayar da sabis ɗin zuwa wurin ajiya, kuma an sake rubuta ma'anar a Go, saboda injiniyoyi na rangwamen sun ɗan canza kaɗan kuma sabis ɗin ya rasa aiki.

Ɗaya daga cikin mafi mahimmancin sabis shine bayanin martabar mai amfani. Wato, duk masu amfani da Wildberries ana adana su a cikin Tarantool, kuma akwai kusan miliyan 50. Tsarin da aka raba ta ID mai amfani, wanda aka rarraba a cikin yawancin DCs da ke da alaƙa da ayyukan Go.
A cewar RPS, Promoter ya kasance sau ɗaya jagora, ya kai buƙatun 6 dubu. A wani lokaci muna da kwafin 50-60. Yanzu jagora a cikin RPS shine bayanan mai amfani, kimanin dubu 12. Wannan sabis ɗin yana amfani da sharding na al'ada, wanda aka raba ta jeri na ID na mai amfani. Sabis ɗin yana hidima fiye da inji 20, amma wannan yana da yawa; muna shirin rage albarkatun da aka ware, saboda ƙarfin injin 4-5 ya ishe shi.

Sabis ɗin zama shine sabis ɗinmu na farko akan vshard da Cartridge. Saita vshard da sabunta Cartridge yana buƙatar ɗan ƙoƙari daga gare mu, amma a ƙarshe komai ya yi aiki.

Sabis don nuna banners daban-daban akan gidan yanar gizon kuma a cikin aikace-aikacen wayar hannu shine ɗayan na farko da aka saki kai tsaye akan Tarantool. Wannan sabis ɗin sananne ne saboda gaskiyar cewa yana da shekaru 6-7, har yanzu yana aiki kuma ba a taɓa sake kunna shi ba. An yi amfani da kwafi na Master-Master. Babu wani abu da ya taɓa karye.

Akwai misali na amfani da Tarantool don aikin tunani mai sauri a cikin tsarin sito don bincika bayanai da sauri sau biyu a wasu lokuta. Mun yi ƙoƙarin amfani da Redis don wannan, amma bayanan da ke cikin ƙwaƙwalwar ajiya sun ɗauki sarari fiye da Tarantool.

Sabis na jerin jira, biyan kuɗin abokin ciniki, labarun gaye a halin yanzu da kayan da aka jinkirta suma suna aiki tare da Tarantool. Sabis na ƙarshe a ƙwaƙwalwar ajiya yana ɗaukar kusan 120 GB. Wannan shine mafi cikakken sabis na sama.

ƙarshe

Godiya ga fihirisar sakandare haɗe tare da maɓalli-daraja da ma'amala, Tarantool ya dace da gine-ginen tushen microservices. Koyaya, mun gamu da matsaloli lokacin fitar da canje-canje ga ayyuka tare da dabaru masu yawa a cikin Lua - ayyukan galibi suna daina aiki. Ba mu iya shawo kan wannan ba, kuma bayan lokaci mun zo ga haɗuwa daban-daban na Lua da Go: mun san inda za mu yi amfani da harshe ɗaya da kuma inda za mu yi amfani da wani.

Me kuma za a karanta a kan batun

source: www.habr.com

Add a comment