Mar a chuireas tu stad air dragh agus tòiseachadh a 'fuireach às aonais monolith

Mar a chuireas tu stad air dragh agus tòiseachadh a 'fuireach às aonais monolith

Tha sinn uile dèidheil air sgeulachdan. Is toil leinn a bhith a’ suidhe timcheall an teine ​​agus a’ bruidhinn mu na buadhan a bh’ againn san àm a dh’ fhalbh, na blàran, no dìreach ar n-eòlas obrach.

Is e dìreach latha mar sin a th’ ann an-diugh. Agus eadhon mura h-eil thu aig an teine ​​an-dràsta, tha sgeulachd againn dhut. An sgeulachd air mar a thòisich sinn ag obair le stòradh air Tarantool.

Uair dhe na h-uairean, bha "monoliths" no dhà aig a 'chompanaidh againn agus aon "mullach" dha na h-uile, ris an robh na monoliths sin a' tighinn gu slaodach ach gu cinnteach, a 'cuingealachadh itealaich ar companaidh, ar leasachadh. Agus bha tuigse shoilleir ann: aon latha buailidh sinn am mullach seo gu cruaidh.

Is e a-nis an ideòlas gnàthach a bhith a’ sgaradh a h-uile càil agus a h-uile duine, bho uidheamachd gu loidsig gnìomhachais. Mar thoradh air an sin, tha dà DC againn, mar eisimpleir, a tha gu ìre mhòr neo-eisimeileach aig ìre lìonra. Agus an uairsin bha a h-uile dad gu tur eadar-dhealaichte.

An-diugh, tha tòrr innealan agus innealan ann airson atharrachaidhean a dhèanamh ann an cruth CI / CD, K8S, msaa. Anns an ùine “monolithic”, cha robh feum againn air uimhir de dh’ fhaclan cèin. Bha e gu leòr dìreach an “stòradh” san stòr-dàta a cheartachadh.

Ach ghluais ùine air adhart, agus chaidh an àireamh de dh'iarrtasan air adhart còmhla ris, uaireannan a' losgadh RPS nas fhaide na ar comasan. Nuair a thàinig dùthchannan CIS a-steach don mhargaidh, cha do thuit an luchd air pròiseasar stòr-dàta a’ chiad monolith fo 90%, agus dh’ fhan RPS aig ìre 2400. Agus cha b’ e dìreach luchd-taghaidh beaga a bh’ annta, ach ceistean mòra le a dòrlach de sgrùdaidhean agus JOIN a dh’ fhaodadh ruith faisg air leth den dàta an aghaidh cùl-raon IO mòr.

Nuair a thòisich reic làn-chuimseach Dihaoine Dubh a 'nochdadh air an t-sealladh - agus b' e Wildberries aon den chiad fheadhainn a chùm iad san Ruis - dh'fhàs an suidheachadh gu tur brònach. Às deidh na h-uile, bidh an luchd air na làithean sin a 'meudachadh trì tursan.
O, na “amannan monolithic” seo! Tha mi cinnteach gu bheil thu air eòlas fhaighinn air rudeigin coltach ris, agus chan urrainn dhut fhathast tuigsinn ciamar a dh’ fhaodadh seo tachairt dhut.

Dè as urrainn dhut a dhèanamh - tha fasan dualach do theicneòlas. Mu 5 bliadhna air ais, bha againn ri ath-bheachdachadh air aon de na mòdan sin ann an cruth làrach a bha ann mar-thà air frithealaiche .NET agus MS SQL, a bha gu faiceallach a’ stòradh loidsig na làraich fhèin gu lèir. Chùm mi e cho faiceallach is gun robh e na thoileachas fada agus gun a bhith furasta a bhith a’ sàbhadh a leithid de monolith.
Briseadh beag.

Aig diofar thachartasan bidh mi ag ràdh: "mura faca tu monolith, cha do dh'fhàs thu!" Tha ùidh agam do bheachd air a’ chùis seo, feuch an sgrìobh thu e anns na beachdan.

Fuaim Tàirneanach

Tillidh sinn chun “teine-teine” againn. Gus an luchd de ghnìomhachd “monolithic” a sgaoileadh, chuir sinn romhainn an siostam a roinn ann am meanbh-sheirbheisean stèidhichte air teicneòlasan opensource. Air sgàth, aig a 'char as lugha, tha iad nas saoire a thaobh sgèile. Agus bha tuigse 100% againn gum feumadh sinn sgèile (agus tòrr). Às deidh na h-uile, mar-thà aig an àm sin bha e comasach a dhol a-steach do mhargaidhean dhùthchannan faisg air làimh, agus thòisich an àireamh de chlàraidhean, a bharrachd air an àireamh de òrdughan, a ’fàs eadhon nas làidire.

An dèidh sgrùdadh a dhèanamh air a 'chiad thagraichean airson falbh bhon monolith gu microservices, thuig sinn gu bheil 80% den sgrìobhadh annta a' tighinn bho shiostaman cùl-oifis, agus a 'leughadh bhon oifis aghaidh. An toiseach, bha seo a’ buntainn ri dà fho-shiostam cudromach dhuinn - dàta luchd-cleachdaidh agus siostam airson cosgais deireannach bathar obrachadh a-mach stèidhichte air fiosrachadh mu lasachaidhean agus cùpain a bharrachd do luchd-ceannach.

Indented. A-nis tha e eagallach smaoineachadh, ach a bharrachd air na fo-shiostaman gu h-àrd, chaidh catalogan toraidh, cairt ceannach luchd-cleachdaidh, siostam sgrùdaidh toraidh, siostam sìolaidh airson catalogan toraidh, agus diofar sheòrsaichean de shiostaman molaidh a thoirt air falbh bhon monolith againn. Airson obrachadh gach aon dhiubh, tha clasaichean fa leth de shiostaman a tha air an dealbhadh gu sònraichte, ach aon uair bha iad uile a 'fuireach ann an aon "taigh".

Bha sinn an dùil sa bhad dàta mu ar teachdaichean a ghluasad chun t-siostam sharded. Le bhith a 'toirt air falbh gnìomhachd airson a bhith a' cunntadh cosgais deireannach bathar bha feum air scalability math airson leughadh, oir chruthaich e an luchd RPS as motha agus b 'e an rud as duilghe a chuir an gnìomh airson an stòr-dàta (tha tòrr dàta an sàs anns a' phròiseas àireamhachaidh).

Mar thoradh air an sin, thàinig sinn suas le sgeama a tha a’ freagairt gu math ri Tarantool.

Aig an àm sin, airson obrachadh microservices, chaidh sgeamaichean airson obrachadh le grunn ionadan dàta air innealan brìgheil agus bathar-cruaidh a thaghadh. Mar a chithear anns na figearan, chaidh roghainnean ath-riochdachadh Tarantool a chuir an sàs ann am modhan maighstir-mhaighstir agus maighstir-tràille.

Mar a chuireas tu stad air dragh agus tòiseachadh a 'fuireach às aonais monolith
Ailtireachd. Roghainn 1. Seirbheis luchd-cleachdaidh

Aig an àm seo, tha 24 shards ann, gach fear le 2 eisimpleir (aon airson gach DC), uile ann am modh maighstir-mhaighstir.

A bharrachd air an stòr-dàta tha aplacaidean a gheibh cothrom air mac-samhail stòr-dàta. Bidh tagraidhean ag obair le Tarantool tron ​​​​leabharlann àbhaisteach againn, a bhios a’ cur an gnìomh eadar-aghaidh draibhear Tarantool Go. Chì i a h-uile mac-samhail agus faodaidh i obrachadh leis a’ mhaighstir airson leughadh agus sgrìobhadh. Gu bunaiteach, bidh e a’ buileachadh a’ mhodail seata mac-samhail, a chuireas ris loidsig airson a bhith a’ taghadh mac-samhail, a’ coileanadh ath-dhearbhadh, inneal-brisidh agus crìoch reata.

Anns a 'chùis seo, tha e comasach am poileasaidh taghaidh mac-samhail a rèiteachadh ann an co-theacsa shards. Mar eisimpleir, roundrobin.

Mar a chuireas tu stad air dragh agus tòiseachadh a 'fuireach às aonais monolith
Ailtireachd. Roghainn 2. Seirbheis airson obrachadh a-mach cosgais deireannach bathar

O chionn beagan mhìosan, chaidh a 'mhòr-chuid de na h-iarrtasan airson cosgais deireannach bathair a thomhas gu seirbheis ùr, a tha, ann am prionnsabal, ag obair gun stòran-dàta, ach o chionn ùine air ais chaidh a h-uile càil a phròiseasadh 100% le seirbheis le Tarantool fon chochall.

Tha an stòr-dàta seirbheis air a dhèanamh suas de 4 maighstirean anns am bi an sioncronaiche a’ cruinneachadh dàta, agus bidh gach maighstir ath-riochdachadh sin a’ sgaoileadh dàta gu mac-samhail a-mhàin. Tha timcheall air 15 mac-samhail den leithid aig gach maighstir.

An dàrna cuid sa chiad no san dàrna sgeama, mura h-eil aon DC ri fhaighinn, faodaidh an tagradh dàta fhaighinn san dàrna fear.

Is fhiach a bhith mothachail gu bheil ath-riochdachadh ann an Tarantool gu math sùbailte agus faodar a rèiteachadh aig àm ruith. Ann an siostaman eile, dh'èirich duilgheadasan. Mar eisimpleir, le bhith ag atharrachadh nam paramadairean max_wal_senders agus max_replication_slots ann am PostgreSQL feumar an draoidh ath-thòiseachadh, a dh’ fhaodadh ann an cuid de chùisean leantainn gu bhith a’ sgaradh cheanglaichean eadar an tagradh agus an DBMS.

Faighnich agus gheibh thu!

Carson nach do rinn sinn e “mar dhaoine àbhaisteach”, ach thagh sinn dòigh neo-àbhaisteach? Tha e an urra ris na tha air a mheas àbhaisteach. Mar as trice bidh mòran dhaoine a’ dèanamh cruinneachadh à Mongo agus ga sgaoileadh thairis air trì DCan air an cuairteachadh le geo.

Aig an àm sin, bha dà phròiseact Redis againn mu thràth. B’ e tasgadan a bh’ anns a’ chiad fhear, agus bha an dàrna fear na stòradh leantainneach airson dàta nach robh ro dheatamach. Bha e gu math duilich leis, gu ìre tro ar coire. Aig amannan bha àireamhan gu math mòr anns an iuchair, agus bho àm gu àm dh’ fhàs an làrach tinn. Chleachd sinn an siostam seo anns an dreach maighstir-tràille. Agus bha mòran chùisean ann far an do thachair rudeigin don mhaighstir agus chaidh ath-riochdachadh sìos.

Is e sin, tha Redis math airson gnìomhan gun stàit, chan e feadhainn stàiteil. Ann am prionnsabal, leig e le bhith a 'fuasgladh a' mhòr-chuid de dhuilgheadasan, ach a-mhàin nam b 'e fuasglaidhean prìomh-luach a bh' annta le paidhir chlàran-amais. Ach bha Redis aig an àm sin gu math brònach le seasmhachd agus ath-riochdachadh. A bharrachd air an sin, bha gearanan ann mu choileanadh.

Bha sinn a’ smaoineachadh mu dheidhinn MySQL agus PostgreSQL. Ach cha do ghabh a’ chiad fhear againn dòigh air choireigin, agus tha an dàrna fear na thoradh caran sòlaimte ann fhèin, agus bhiodh e neo-iomchaidh seirbheisean sìmplidh a thogail air.
Dh'fheuch sinn RIAK, Cassandra, eadhon stòr-dàta graf. Tha iad sin uile nam fuasglaidhean meadhanach sònraichte nach robh freagarrach airson dreuchd inneal coitcheann coitcheann airson seirbheisean a chruthachadh.

Mu dheireadh shocraich sinn air Tarantool.

Thionndaidh sinn thuige nuair a bha e ann an dreach 1.6. Bha ùidh againn ann le symbiosis prìomh luach agus gnìomhachd stòr-dàta dàimh. Tha clàran-amais àrd-sgoile, gnothaichean agus àiteachan ann, tha iad sin mar chlàran, ach chan eil iad sìmplidh, is urrainn dhut diofar àireamhan de cholbhan a stòradh annta. Ach b’ e am feart marbhtach de Tarantool clàran-amais àrd-sgoile còmhla ri prìomh luach agus gnìomhachd.

Bha pàirt aig a’ choimhearsnachd fhreagarrach Ruiseanach, a bha deiseil airson cuideachadh le cabadaich, cuideachd. Chleachd sinn seo gu gnìomhach agus bidh sinn beò gu dìreach sa chat. Agus na dì-chuimhnich mu sheasmhachd reusanta às aonais blunders agus mearachdan follaiseach. Ma choimheadas tu air an eachdraidh againn le Tarantool, bha tòrr pian agus fàilligidhean againn le ath-riochdachadh, ach cha do chaill sinn dàta a-riamh air sgàth a choire!

Thòisich buileachadh gu math duilich

Aig an àm sin, b’ e .NET am prìomh stac leasachaidh againn, ris nach robh ceangal ann airson Tarantool. Thòisich sinn sa bhad a’ dèanamh rudeigin ann an Go. Dh’obraich e gu math le Lua cuideachd. B 'e am prìomh dhuilgheadas aig an àm sin le debugging: ann an .NET tha a h-uile dad math le seo, ach às deidh sin bha e duilich a dhol a-steach do shaoghal Lua freumhaichte, nuair nach eil debugging agad ach a-mhàin logaichean. A bharrachd air an sin, airson adhbhar air choireigin thuit ath-riochdachadh bho àm gu àm, agus mar sin bha agam ri sgrùdadh a dhèanamh air structar an einnsean Tarantool. Chuidich an còmhradh le seo, agus gu ìre nas lugha, na sgrìobhainnean; uaireannan choimhead sinn air a’ chòd. Aig an àm sin, bha na sgrìobhainnean cho fìor.

Mar sin, thairis air grunn mhìosan, fhuair mi air mo cheann a thoirt timcheall agus toraidhean math fhaighinn bho bhith ag obair le Tarantool. Chuir sinn ri chèile leasachaidhean iomraidh ann an git a chuidich le cruthachadh meanbh-sheirbheisean ùra. Mar eisimpleir, nuair a dh ’èirich gnìomh: gus microservice eile a chruthachadh, choimhead an leasaiche air còd stòr an fhuasglaidh iomraidh anns an stòr, agus cha tug e barrachd air seachdain gus fear ùr a chruthachadh.

B’ e amannan sònraichte a bha seo. Gu gnàthach, dh’ fhaodadh tu a dhol suas chun rianaire aig an ath bhòrd agus faighneachd: “Thoir dhomh inneal brìgheil.” Mu thrithead mionaid às deidh sin bha an càr leat mu thràth. Cheangail thu thu fhèin, chuir thu a-steach a h-uile càil, agus chaidh trafaic a chuir thugad.

An-diugh chan obraich seo tuilleadh: feumaidh tu sgrùdadh agus logadh a chuir ris an t-seirbheis, còmhdach a dhèanamh air gnìomhachd le deuchainnean, òrdachadh inneal brìgheil no lìbhrigeadh gu Kuber, msaa. San fharsaingeachd, bidh e nas fheàrr san dòigh seo, ged a bheir e nas fhaide agus bidh e nas duilghe.

Roinn agus riaghladh. Dè an gnothach a th’ aig Lua?

Bha fìor dhileab ann: cha robh cuid de sgiobaidhean comasach air atharrachaidhean a chuir air adhart gu seirbheis le mòran loidsig ann an Lua. Gu math tric bha an t-seirbheis an cois seo nach robh ag obair.

Is e sin, tha an luchd-leasachaidh ag ullachadh atharrachadh de sheòrsa air choreigin. Bidh Tarantool a 'tòiseachadh a' dèanamh an imrich, ach tha am mac-samhail fhathast leis an t-seann chòd; Bidh cuid de DDL no rudeigin eile a’ ruighinn an sin tro ath-riochdachadh, agus tha an còd dìreach a’ tuiteam às a chèile leis nach eilear a’ toirt aire dha. Mar thoradh air an sin, chaidh am modh ùrachaidh airson an luchd-rianachd a chuir a-mach air duilleag A4: stad air ath-riochdachadh, ùraich seo, tionndaidh air ath-riochdachadh, cuir dheth an seo, ùraich an sin. Trom-oidhche!

Mar thoradh air an sin, a-nis bidh sinn gu tric a’ feuchainn ri dad a dhèanamh ann an Lua. Dìreach cleachd iproto (pròtacal binary airson eadar-obrachadh leis an fhrithealaiche), agus sin agad e. Is dòcha gur e seo dìth eòlais am measg an luchd-leasachaidh, ach bhon t-sealladh seo tha an siostam iom-fhillte.

Chan eil sinn daonnan a 'leantainn an sgriobt seo gu dall. An-diugh chan eil dubh is geal againn: an dara cuid tha a h-uile dad ann an Lua, no tha a h-uile dad ann an Go. Tha sinn mu thràth a’ tuigsinn mar as urrainn dhuinn an cur còmhla gus nach bi duilgheadasan imrich againn nas fhaide air adhart.

Càite a bheil Tarantool a-nis?
Tha Tarantool air a chleachdadh san t-seirbheis gus cosgais deireannach bathar obrachadh a-mach a’ toirt aire do chùpain lasachaidh, ris an canar cuideachd “Promoter”. Mar a thuirt mi na bu thràithe, tha e a-nis a’ leigeil dheth a dhreuchd: tha seirbheis catalog ùr ga chur na àite le prìsean ro-àireamhaichte, ach sia mìosan air ais chaidh a h-uile àireamhachadh a dhèanamh ann an Promotizer. Roimhe sin, chaidh leth den loidsig aige a sgrìobhadh ann an Lua. Dà bhliadhna air ais, chaidh an t-seirbheis a thionndadh gu bhith na ghoireas stòraidh, agus chaidh an loidsig ath-sgrìobhadh ann an Go, leis gu robh meacanaig lasachaidhean air atharrachadh beagan agus cha robh coileanadh san t-seirbheis.

Is e aon de na seirbheisean as deatamaiche am pròifil neach-cleachdaidh. Is e sin, tha a h-uile neach-cleachdaidh Wildberries air a stòradh ann an Tarantool, agus tha timcheall air 50 millean dhiubh sin Siostam air a sharded le ID neach-cleachdaidh, air a sgaoileadh thairis air grunn DCan ceangailte ri seirbheisean Go.
A rèir RPS, bha an neach-adhartachaidh uaireigin na cheannard, a 'ruigsinn 6 mìle iarrtas. Aig aon àm bha 50-60 leth-bhreac againn. A-nis is e an stiùiriche ann an RPS pròifilean luchd-cleachdaidh, timcheall air mìle 12. Bidh an t-seirbheis seo a’ cleachdadh sharding àbhaisteach, air a roinn le raointean de IDan neach-cleachdaidh. Tha an t-seirbheis a 'frithealadh barrachd air 20 innealan, ach tha seo cus; tha sinn an dùil lùghdachadh a dhèanamh air na goireasan a tha air an riarachadh, oir tha comas 4-5 innealan gu leòr air a shon.

Is e seirbheis seisean a’ chiad sheirbheis againn air vshard agus Cartridge. Bha feum againn air beagan oidhirp bhuainn a bhith a’ stèidheachadh vshard agus ag ùrachadh Cartridge, ach aig a’ cheann thall dh’ obraich a h-uile càil a-mach.

B’ e an t-seirbheis airson diofar bhrataichean a thaisbeanadh air an làrach-lìn agus san tagradh gluasadach aon den chiad fheadhainn a chaidh fhoillseachadh gu dìreach air Tarantool. Tha an t-seirbheis seo sònraichte leis gu bheil e 6-7 bliadhna a dh'aois, tha e fhathast ag obair agus cha deach ath-thòiseachadh a-riamh. Chaidh mac-samhail maighstir-sgoile a chleachdadh. Cha do bhris dad a-riamh.

Tha eisimpleir ann de bhith a’ cleachdadh Tarantool airson gnìomhachd iomraidh sgiobalta ann an siostam taigh-bathair gus fiosrachadh a sgrùdadh gu sgiobalta ann an cuid de chùisean. Dh'fheuch sinn ri Redis a chleachdadh airson seo, ach ghabh an dàta mar chuimhneachan barrachd àite na Tarantool.

Bidh seirbheisean liosta feitheimh, fo-sgrìobhaidhean teachdaiche, sgeulachdan fasanta an-dràsta agus bathar air a chuir dheth cuideachd ag obair le Tarantool. Bheir an t-seirbheis mu dheireadh ann an cuimhne suas mu 120 GB. Is e seo an t-seirbheis as coileanta den fheadhainn gu h-àrd.

co-dhùnadh

Taing do chlàran-amais àrd-sgoile còmhla ri prìomh luach agus gnìomhachd, tha Tarantool gu math freagarrach airson ailtireachd stèidhichte air microservices. Ach, bha duilgheadasan againn nuair a bha sinn a’ sgaoileadh atharrachaidhean air seirbheisean le tòrr loidsig ann an Lua - gu tric sguir na seirbheisean ag obair. Cha b’ urrainn dhuinn faighinn seachad air seo, agus thar ùine thàinig sinn gu measgachadh eadar-dhealaichte de Lua and Go: tha fios againn càite an cleachd sinn aon chànan agus càite an cleachd sinn cànan eile.

Dè eile a leughas tu air a’ chuspair

Source: www.habr.com

Cuir beachd ann