{"id":92806,"date":"2020-08-31T07:42:03","date_gmt":"2020-08-31T05:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita"},"modified":"2020-08-31T07:42:03","modified_gmt":"2020-08-31T05:42:03","slug":"kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","title":{"rendered":"Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolitin","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolitin\" src=\"\/wp-content\/uploads\/2020\/08\/eb6ab7fd08eeebd8cdad89b0e4e6588e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nT\u00eb gjith\u00eb ne i duam historit\u00eb. Na p\u00eblqen t\u00eb rr\u00ebfejm\u00eb p\u00ebrfitimet, betejat ose thjesht p\u00ebrvojat tona kur jemi ulur pran\u00eb zjarrit.<\/p>\n<p>Sot \u00ebsht\u00eb nj\u00eb dit\u00eb e till\u00eb. Edhe n\u00ebse nuk jeni pran\u00eb zjarrit, ne kemi nj\u00eb histori p\u00ebr ju. Nj\u00eb histori p\u00ebr m\u00ebnyr\u00ebn se si filluam t\u00eb punojm\u00eb me depozit\u00ebn n\u00eb Tarantool.<\/p>\n<p>Dikur, n\u00eb kompanin\u00eb ton\u00eb kishte disa 'monolite' dhe nj\u00eb 'tavan' q\u00eb i kufizonte k\u00ebta monolit\u00eb, duke ngadal\u00ebsuar fluturimin e kompanis\u00eb son\u00eb dhe zhvillimin ton\u00eb. Kishim nj\u00eb kuptim t\u00eb qart\u00eb: nj\u00eb dit\u00eb do t\u00eb p\u00ebrballemi me k\u00ebt\u00eb tavani.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTani ideologjia jon\u00eb \u00ebsht\u00eb t\u00eb gjith\u00eb dhe gjith\u00e7ka ndar\u00eb, duke filluar nga pajisjet dhe duke p\u00ebrfunduar me logjik\u00ebn e biznesit. Si rezultat, tani kemi dy DC, thuajse t\u00eb pavarur n\u00eb nivelin rrjet. Por at\u00ebher\u00eb \u00e7do gj\u00eb ishte krejt ndryshe.<\/p>\n<p>Sot ka shum\u00eb mjete dhe m\u00ebnyra p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime, si CI\/CD, K8S dhe t\u00eb tjer\u00eb. N\u00eb koh\u00ebn e 'monolit\u00ebve', nuk na duheshin aq shum\u00eb fjal\u00eb t\u00eb huaja. Mjaftonte t\u00eb rregullonim 'depozit\u00ebn' n\u00eb baz\u00eb.<\/p>\n<p>Por koha kalonte, dhe numri i k\u00ebrkesave po rritej, duke d\u00ebrguar RPS her\u00eb pas here m\u00eb lart se kapaciteti yn\u00eb. N\u00eb daljen n\u00eb tregun e vendeve t\u00eb CIS, ngarkesa n\u00eb procesorin e DB t\u00eb monolitit t\u00eb par\u00eb nuk zbret n\u00ebn 90%, nd\u00ebrsa RPS q\u00ebndronte n\u00eb nivelin 2400. Dhe k\u00ebto nuk ishin thjesht k\u00ebrkesa t\u00eb vogla, por k\u00ebrkesa t\u00eb m\u00ebdha me shum\u00eb kontroll dhe JOIN, q\u00eb mund t\u00eb kalonin thuajse gjysm\u00ebn e t\u00eb dh\u00ebnave n\u00eb nj\u00eb sfond t\u00eb madh IO.<\/p>\n<p>Kur filluan t\u00eb shfaqen zbritjet n\u00eb 'Black Friday', dhe Wildberries ishte nj\u00eb nga t\u00eb par\u00ebt q\u00eb i organizoi ato n\u00eb Rusi, situata filloi t\u00eb b\u00ebhej shum\u00eb e zymt\u00eb. Ngarkesa n\u00eb k\u00ebto dit\u00eb rritet trefish.<br \/>\nO sa mir\u00eb q\u00eb ishin ato 'monolit\u00eb! Jam i sigurt q\u00eb dhe ju jeni ndeshur me di\u00e7ka t\u00eb till\u00eb dhe akoma nuk kuptoni si ndodhi kjo me ju.<\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebsh - moda u takon dhe teknologjive. Para rreth 5 vjet\u00ebsh, na duhej t\u00eb rishikonim nj\u00eb nga k\u00ebto moda, nj\u00eb sit t\u00eb nd\u00ebrtuar n\u00eb .NET dhe MS SQL-server, i cili ruante me kujdes t\u00eb gjith\u00eb logjik\u00ebn e funksionimit t\u00eb sitit. E ruante aq mir\u00eb, saq\u00eb ndarja e k\u00ebtij monoliti rezultoi t\u00eb ishte nj\u00eb k\u00ebnaq\u00ebsi e gjat\u00eb dhe e komplikuar.<br \/>\nNj\u00eb shk\u00ebputje e vog\u00ebl. <\/p>\n<p>N\u00eb ngjarje t\u00eb ndryshme, un\u00eb them: \"n\u00ebse nuk e keni prishur monolitin, at\u00ebher\u00eb nuk jeni rritur!\" M\u00eb intereson mendimi juaj p\u00ebr k\u00ebt\u00eb, ju lutem ndajn\u00eb at\u00eb n\u00eb komentet.<\/p>\n<h3>Dhe ra shkuma<\/h3>\n<p>\nT\u00eb kthehemi te \"zjarri\" yn\u00eb. P\u00ebr t\u00eb shp\u00ebrndar\u00eb ngarkes\u00ebn e funksionalitetit \"monolit\", ne vendos\u00ebm ta ndajm\u00eb sistemin n\u00eb mikrosh\u00ebrbime, t\u00eb bazuar n\u00eb teknologji opensource. Sepse, t\u00eb pakt\u00ebn, shkall\u00ebzimi i tyre \u00ebsht\u00eb m\u00eb i leht\u00eb. Dhe ne ishim t\u00eb vet\u00ebdijsh\u00ebm q\u00eb do t\u00eb duhej t\u00eb shkall\u00ebzonim (dhe shum\u00eb) me 100%. Sepse q\u00eb at\u00ebher\u00eb arrit\u00ebm t\u00eb hyjm\u00eb n\u00eb tregjet e kombeve fqinje, dhe numri i regjistrimeve, ashtu si dhe numri i porosive, filloi t\u00eb rritet edhe m\u00eb shum\u00eb.<\/p>\n<p>Pas analizimit t\u00eb kandidat\u00ebve t\u00eb par\u00eb p\u00ebr daljen nga monoliti n\u00eb mikrosh\u00ebrbime, kuptuam se n\u00eb 80% t\u00eb rasteve sh\u00ebnimi n\u00eb to \u00ebsht\u00eb 99% nga sistemet back office, nd\u00ebrsa leximi \u00ebsht\u00eb nga p\u00ebrpar\u00ebsit\u00eb. Kjo lidhej kryesisht me dy nga n\u00ebn-sistemet e r\u00ebnd\u00ebsishme p\u00ebr ne \u2014 t\u00eb dh\u00ebnat e p\u00ebrdoruesve dhe sistemi i kalkulimit t\u00eb \u00e7mimit p\u00ebrfundimtar t\u00eb produkteve n\u00eb baz\u00eb t\u00eb informacionit mbi zbritjet e klient\u00ebve dhe kupon\u00ebt.<\/p>\n<p>Si nj\u00eb k\u00ebndv\u00ebshtrim. Tani \u00ebsht\u00eb tmerrsh\u00ebm t\u00eb mendoj, por p\u00ebrve\u00e7 n\u00ebn-sistemeve t\u00eb p\u00ebrmendura m\u00eb sip\u00ebr, nga monoliti yn\u00eb gjithashtu u ndan\u00eb katalog\u00ebt e produkteve, karroca e p\u00ebrdoruesit, sistemi i k\u00ebrkimit t\u00eb produkteve, sistemi i filtrimit t\u00eb katalogjeve t\u00eb produkteve dhe lloje t\u00eb ndryshme sistemesh rekomandimi. P\u00ebr secilin prej tyre ekzistojn\u00eb klasa t\u00eb ve\u00e7anta t\u00eb sistemeve t\u00eb ngushta, por dikur t\u00eb gjitha ato jetonin n\u00eb nj\u00eb \"sht\u00ebpiz\u00eb\". <\/p>\n<p>Ne kishim planifikuar t\u00eb nxirrnim t\u00eb dh\u00ebnat p\u00ebr klient\u00ebt tan\u00eb menj\u00ebher\u00eb n\u00eb nj\u00eb sistem t\u00eb sharduar. Megjithat\u00eb, funksionaliteti q\u00eb lidhet me kalkulimin e \u00e7mimit p\u00ebrfundimtar t\u00eb produkteve k\u00ebrkonte nj\u00eb shkall\u00ebzim t\u00eb mir\u00eb p\u00ebr leximin, sepse ajo krijonte ngarkes\u00ebn m\u00eb t\u00eb madhe n\u00eb RPS dhe ishte m\u00eb e komplikuar n\u00eb ekzekutim p\u00ebr baz\u00ebn (shum\u00eb t\u00eb dh\u00ebna jan\u00eb t\u00eb involvuar n\u00eb procesin e kalkulimeve). <\/p>\n<p>Si rezultat, ne krijuam nj\u00eb skem\u00eb q\u00eb p\u00ebrshtatej mir\u00eb me Tarantool.<\/p>\n<p>N\u00eb ato koh\u00eb, p\u00ebr pun\u00ebn e mikrosh\u00ebrbimeve u zgjodh\u00ebn skemat p\u00ebr t\u00eb punuar me disa Qendra t\u00eb t\u00eb Dh\u00ebnave n\u00eb makina virtuale dhe harduerike. Si\u00e7 tregohet n\u00eb ilustrime, u zbatuan opsione t\u00eb replikimit Tarantool n\u00eb m\u00ebnyr\u00eb master-master, si dhe master-slave. <\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolitin\" src=\"\/wp-content\/uploads\/2020\/08\/b7bf3d6646ec9f6a8f8af3a539adede1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arkitektura. Opsioni 1. Sh\u00ebrbimi i p\u00ebrdoruesve<\/i><\/p>\n<p>N\u00eb k\u00ebt\u00eb moment ka 24 sharda, n\u00eb \u00e7do nj\u00eb prej t\u00eb cilave ka 2 instanca (nj\u00eb p\u00ebr \u00e7do DC), t\u00eb gjitha n\u00eb modalitetin master-master.<\/p>\n<p>N\u00eb krye t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave jan\u00eb aplikacionet q\u00eb i referohen replika t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave. Aplikacionet punojn\u00eb me Tarantool p\u00ebrmes bibliotek\u00ebs son\u00eb t\u00eb personalizuar, e cila implementon nd\u00ebrfaqen e shoferit Go p\u00ebr Tarantool. Ajo sheh t\u00eb gjitha replikat dhe mund t\u00eb punoj\u00eb me masterin p\u00ebr lexim dhe shk writingim. N\u00eb thelb, ajo implementon modelin e grupit t\u00eb replikave, n\u00eb t\u00eb cilin \u00ebsht\u00eb shtuar logjistika e zgjedhjes s\u00eb replikave, realizimi i p\u00ebrpjekjeve t\u00eb p\u00ebrs\u00ebritura, kthesa e qarkut dhe kufizimi i norm\u00ebs.<\/p>\n<p>Ka nj\u00eb mund\u00ebsi p\u00ebr t\u00eb konfiguruar politik\u00ebn e zgjedhjes s\u00eb replik\u00ebs n\u00eb kontekstin e shardit. P\u00ebr shembull, me rrotullim dykah\u00ebsh.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolitin\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arkitektura. Opsioni 2. Sh\u00ebrbimi i llogaritjes s\u00eb \u00e7mimit p\u00ebrfundimtar t\u00eb produktit.<\/i><\/p>\n<p>Disa muaj m\u00eb par\u00eb, pjesa m\u00eb e madhe e k\u00ebrkesave p\u00ebr llogaritjen e \u00e7mimit p\u00ebrfundimtar t\u00eb produkteve u transferua n\u00eb nj\u00eb sh\u00ebrbim t\u00eb ri, i cili n\u00eb parim punon pa baz\u00eb t\u00eb dh\u00ebnash, por ndonj\u00ebher\u00eb m\u00eb par\u00eb t\u00eb gjitha 100% u p\u00ebrpunuan nga sh\u00ebrbimi me Tarantool n\u00ebn kapak.<\/p>\n<p>Baza e t\u00eb dh\u00ebnave t\u00eb sh\u00ebrbimit p\u00ebrb\u00ebhet nga 4 mastera, n\u00eb t\u00eb cilat sinkronizatori mbledh t\u00eb dh\u00ebnat, dhe \u00e7do master nga k\u00ebto shp\u00ebrndan t\u00eb dh\u00ebna n\u00eb replikat readonly p\u00ebrmes replikimit. \u00c7do master ka rreth 15 prej k\u00ebtyre replikave.<\/p>\n<p>Si n\u00eb skem\u00ebn e par\u00eb ashtu edhe n\u00eb at\u00eb t\u00eb dyt\u00eb, n\u00eb rast t\u00eb pamund\u00ebsis\u00eb s\u00eb nj\u00eb DC, aplikacioni mund t\u00eb marr\u00eb t\u00eb dh\u00ebna nga i dyti.<\/p>\n<p>Vlen t\u00eb p\u00ebrmendet se n\u00eb Tarantool replikimi \u00ebsht\u00eb mjaft fleksib\u00ebl dhe konfigurohet n\u00eb runtime. N\u00eb sistemet e tjera kan\u00eb ndodhur v\u00ebshtir\u00ebsi. P\u00ebr shembull, me ndryshimin e parametrave max_wal_senders dhe max_replication_slots n\u00eb PostgreSQL, k\u00ebrkohet rinisja e masterit, e cila n\u00eb disa raste mund t\u00eb shkaktoj\u00eb nd\u00ebrprerje t\u00eb lidhjeve midis aplikacionit dhe DBMS.<\/p>\n<h3>K\u00ebrkoni dhe do ta gjeni!<\/h3>\n<p>\nPse nuk e b\u00ebm\u00eb \"si njer\u00ebz normal\", por zgjodh\u00ebm nj\u00eb m\u00ebnyr\u00eb jotipike? Duke par\u00eb se \u00e7far\u00eb e konsiderojm\u00eb normal. Shum\u00eb thjesht b\u00ebjn\u00eb nj\u00eb grup nga Mongo dhe e shp\u00ebrndajn\u00eb at\u00eb n\u00eb tre DC t\u00eb shp\u00ebrndar\u00eb gjeografikisht.<\/p>\n<p>N\u00eb at\u00eb koh\u00eb ne kishim tashm\u00eb dy projekte n\u00eb Redis. E para ishte cache, nd\u00ebrsa e dyta p\u00ebrb\u00ebnte nj\u00eb depozit\u00eb t\u00eb p\u00ebrhershme p\u00ebr t\u00eb dh\u00ebnat jo aq kritike. Kjo e fundit na dha disa v\u00ebshtir\u00ebsi, pjes\u00ebrisht p\u00ebr fajin ton\u00eb. Ndonj\u00ebher\u00eb nj\u00eb sasi e konsiderueshme t\u00eb dh\u00ebnash ruheshin n\u00eb \u00e7el\u00ebs, dhe nga koha n\u00eb koh\u00eb, faqja e internetit ndiheshin keq. Ky sistem e p\u00ebrdor\u00ebm n\u00eb variantin master-slave. Dhe kishte shum\u00eb raste kur ndodhte di\u00e7ka me masterin dhe replikimi thyhej. <\/p>\n<p>Pra ndodhi q\u00eb Redis ishte i mir\u00eb p\u00ebr detyrat stateless dhe jo p\u00ebr ato stateful. N\u00eb parim, ai e zgjidhi shumic\u00ebn e problemeve, por vet\u00ebm n\u00ebse ishin zgjidhje key-value me disa indekse. Megjithat\u00eb, n\u00eb at\u00eb koh\u00eb, Redis kishte probleme t\u00eb m\u00ebdha me persistenc\u00ebn dhe replikimin. Po ashtu, pati ankesat p\u00ebr performanc\u00ebn.<\/p>\n<p>Menduam p\u00ebr MySQL dhe PostgreSQL. Por e para nuk ishte e p\u00ebrshtatshme p\u00ebr ne, nd\u00ebrsa e dyta \u00ebsht\u00eb nj\u00eb produkt mjaft i avancuar dhe do t\u00eb ishte e pap\u00ebrshtatshme t\u00eb nd\u00ebrtosh sh\u00ebrbime t\u00eb thjeshta mbi t\u00eb.<br \/>\nProvuan RIAK, Cassandra, madje dhe nj\u00eb baz\u00eb t\u00eb dh\u00ebnash grafike. T\u00eb gjitha k\u00ebto jan\u00eb zgjidhje t\u00eb mjaftueshme p\u00ebr ni\u0161a, q\u00eb nuk p\u00ebrputheshin p\u00ebr rolin e nj\u00eb instrumenti universale p\u00ebr krijimin e sh\u00ebrbimeve.<\/p>\n<p>N\u00eb fund, u ndal\u00ebm te Tarantool.<\/p>\n<p>Ne e kontaktuam at\u00eb kur ishte n\u00eb versionin 1.6. Na interesoi simbioza e key-value dhe funksionalitetit t\u00eb nj\u00eb baze t\u00eb dh\u00ebnash relacional. Ka indekse t\u00eb dyta, transaksione dhe hap\u00ebsira, q\u00eb jan\u00eb si tabela, por jo t\u00eb thjeshta, mund t\u00eb ruajm\u00eb n\u00eb to nj\u00eb num\u00ebr t\u00eb ndrysh\u00ebm kolonash. Por karakteristika killer e Tarantool ishte indeksi i dyt\u00eb n\u00eb kombinim me key-value dhe transaksionalitetin.<\/p>\n<p>Po ashtu, luajti nj\u00eb rol komuniteti t\u00eb p\u00ebrgjegjsh\u00ebm n\u00eb gjuh\u00ebn ruse, t\u00eb gatsh\u00ebm p\u00ebr t\u00eb ndihmuar n\u00eb chat. Ne e shfryt\u00ebzuam k\u00ebt\u00eb aktivisht dhe jetuam n\u00eb chat. Dhe nuk duhet t\u00eb harrojm\u00eb p\u00ebr nj\u00eb persistenc\u00eb t\u00eb mir\u00eb pa gabime t\u00eb dukshme dhe probleme. N\u00eb historin\u00eb ton\u00eb me Tarantool, pat\u00ebm shum\u00eb dhimbje dhe komplikacionesh me replikimin, por nuk humb\u00ebm asnj\u00ebher\u00eb t\u00eb dh\u00ebna p\u00ebr shkakun e tij!<\/p>\n<h3>Zbatimi filloi v\u00ebshtir\u00eb<\/h3>\n<p>\nN\u00eb at\u00eb koh\u00eb, staku yn\u00eb kryesor i zhvillimit ishte .NET, p\u00ebr t\u00eb cilin nuk kishte nj\u00eb lidh\u00ebs p\u00ebr Tarantool. Ne filluam menj\u00ebher\u00eb t\u00eb b\u00ebnim di\u00e7ka n\u00eb Go. Po ashtu, Lua doli t\u00eb ishte mjaft e mir\u00eb. Problemi kryesor n\u00eb at\u00eb koh\u00eb ishte me debugin: n\u00eb .NET gjith\u00e7ka ishte e shk\u00eblqyer, nd\u00ebrsa pas k\u00ebsaj t\u00eb kthehesh n\u00eb bot\u00ebn e Lua embeded, kur nuk ke asgj\u00eb tjet\u00ebr ve\u00e7 logjeve, ishte e v\u00ebshtir\u00eb. Po ashtu, replikimi, ndonj\u00ebher\u00eb, u shemb papritur, dhe na duhej t\u00eb kuptonim struktur\u00ebn e motorit Tarantool. Chat ndihmoi n\u00eb k\u00ebt\u00eb, n\u00eb nj\u00eb mas\u00eb m\u00eb t\u00eb vog\u00ebl \u2014 dokumentacioni, ndonj\u00ebher\u00eb shihnim kodin. N\u00eb at\u00eb koh\u00eb dokumentacioni nuk ishte shum\u00eb i mir\u00eb.<\/p>\n<p>K\u00ebshtu, p\u00ebr disa muaj arrit\u00ebm t\u00eb grumbullojm\u00eb p\u00ebrvoj\u00eb dhe t\u00eb arrijm\u00eb rezultate t\u00eb k\u00ebnaqshme n\u00eb pun\u00ebn me Tarantool. Kemi organizuar n\u00eb git praktikat standarte q\u00eb ndihmuan n\u00eb krijimin e mikrosh\u00ebrbimeve t\u00eb reja. P\u00ebr shembull, kur na dilte puna: t\u00eb krijonim nj\u00eb mikrosh\u00ebrbim tjet\u00ebr, zhvilluesi shikonte kodin burimor t\u00eb zgjidhjes standarde n\u00eb depo, dhe krijimi i nj\u00eb t\u00eb ri zgjaste maksimalisht nj\u00eb jav\u00eb. <\/p>\n<p>Ishin koh\u00eb t\u00eb ve\u00e7anta. N\u00eb m\u00ebnyr\u00eb t\u00eb zakonshme, at\u00ebher\u00eb mund t\u00eb afroheshe te admini n\u00eb tryez\u00ebn ngjitur dhe t\u00eb k\u00ebrkoje: \"M\u00eb jap nj\u00eb virtuale\". Pas rreth tridhjet\u00eb minutash, makina ishte tashm\u00eb te ti. Ti vet\u00eb lidhe, installove gjith\u00e7ka, dhe t\u00eb drejtonin trafik p\u00ebr t\u00eb.<\/p>\n<p>Sot nuk funksionon k\u00ebshtu m\u00eb: duhet t\u00eb vendos\u00ebsh monitorimin e sh\u00ebrbimit, regjistrimin, t\u00eb mbulosh funksionalitetin me prova, t\u00eb porositesh nj\u00eb virtuale ose nj\u00eb instalim n\u00eb Kubernetes, etj. N\u00eb p\u00ebrgjith\u00ebsi, kjo do t\u00eb jet\u00eb m\u00eb mir\u00eb, megjithat\u00eb m\u00eb e gjat\u00eb dhe m\u00eb e mundimshme.<\/p>\n<h3>Ndaje dhe sundo. Si \u00ebsht\u00eb puna me Lua?<\/h3>\n<p>\nIshte nj\u00eb dilem\u00eb serioze: disa ekipe nuk arrinin t\u00eb implementonin me besueshm\u00ebri ndryshimet n\u00eb sh\u00ebrbim me nj\u00eb sasi t\u00eb madhe logjike n\u00eb Lua. Shpeshher\u00eb kjo shoq\u00ebrohej me pasiguri t\u00eb sh\u00ebrbimit. <\/p>\n<p>Do thot\u00eb q\u00eb zhvilluesit p\u00ebrgatisin nj\u00eb ndryshim. Tarantool fillon t\u00eb kryej\u00eb migrimin, nd\u00ebrsa replika ende ka kodin e vjet\u00ebr; atje mb\u00ebrrin p\u00ebrmes replikimit ndonj\u00eb DDL, di\u00e7ka tjet\u00ebr, dhe kodi thjesht shembet, sepse nuk \u00ebsht\u00eb marr\u00eb parasysh. Si rezultat, procedura e p\u00ebrdit\u00ebsimit p\u00ebr administrator\u00ebt ishte shkruar n\u00eb nj\u00eb flet\u00eb A4: ndalo replikimin, p\u00ebrdit\u00ebsoje k\u00ebt\u00eb, aktivizo replikimin, fik aty, p\u00ebrdit\u00ebso atje. Fushat\u00eb! <\/p>\n<p>Si rezultat, tani m\u00eb shpesh p\u00ebrpiqemi t\u00eb mos b\u00ebjm\u00eb asgj\u00eb n\u00eb Lua. Thjesht me ndihm\u00ebn e iproto (protokolli i binar\u00ebve p\u00ebr nd\u00ebrveprimin me serverin), dhe kjo \u00ebsht\u00eb gjith\u00e7ka. Ndoshta, kjo \u00ebsht\u00eb nj\u00eb mang\u00ebsi e njohurive t\u00eb zhvilluesve, por nga kjo pik\u00ebpamje sistemi \u00ebsht\u00eb i komplikuar.<\/p>\n<p>Ne nuk e ndjekim gjithmon\u00eb verb\u00ebrisht k\u00ebt\u00eb skenar. Sot nuk kemi t\u00eb zez\u00eb dhe t\u00eb bardh\u00eb: ose gjith\u00e7ka n\u00eb Lua, ose gjith\u00e7ka n\u00eb Go. Ne tashm\u00eb e kuptojm\u00eb si t\u00eb kombinojm\u00eb, p\u00ebr t\u00eb mos pasur m\u00eb von\u00eb probleme me migrimin.<\/p>\n<p>Ku ndodhet tani Tarantool?<br \/>\nTarantool p\u00ebrdoret n\u00eb sh\u00ebrbimin e llogaritjes s\u00eb \u00e7mimit final t\u00eb artikujve duke marr\u00eb parasysh kuponat e zbritjeve, i njohur si \"Promotizer\". Si\u00e7 e p\u00ebrmenda m\u00eb par\u00eb, tani ai po t\u00ebrhiqet nga tregu: nj\u00eb sh\u00ebrbim i ri katalogu me \u00e7mime t\u00eb parakalkuluara e z\u00ebvend\u00ebson, por gjasht\u00eb muaj m\u00eb par\u00eb t\u00eb gjitha llogaritjet b\u00ebheshin n\u00eb \"Promotizer\". Nj\u00ebher\u00eb, gjysma e logjik\u00ebs s\u00eb tij ishte shkruar n\u00eb Lua. Dy vjet m\u00eb par\u00eb, sh\u00ebrbimi u b\u00eb nj\u00eb depo, dhe logjik\u00ebn e rinovuan n\u00eb Go, sepse mekanika e pun\u00ebs me zbritjet ndryshoi pak dhe sh\u00ebrbimit i mungonte performanca. <\/p>\n<p>Nj\u00eb nga sh\u00ebrbimet m\u00eb kritike \u00ebsht\u00eb profili i p\u00ebrdoruesit. Pra, t\u00eb gjith\u00eb p\u00ebrdoruesit e Wildberries ruhen n\u00eb Tarantool, dhe jan\u00eb rreth 50 milion. Nj\u00eb sistem i ndar\u00eb sipas ID p\u00ebrdoruesi, i shp\u00ebrndar\u00eb n\u00eb disa qendra t\u00eb t\u00eb dh\u00ebnave me lidhje n\u00eb sh\u00ebrbimet Go. <br \/>\nDikur, lideri n\u00eb RPS ishte \"Promotizer\", duke arritur deri n\u00eb 6,000 k\u00ebrkesa. N\u00eb nj\u00eb moment, kishim 50-60 ekzemplar\u00eb. Tani, lideri sipas RPS \u00ebsht\u00eb profili i p\u00ebrdoruesve, duke arritur rreth 12,000. N\u00eb k\u00ebt\u00eb sh\u00ebrbim p\u00ebrdoret ndarje e personalizuar me ndarje sipas intervaleve t\u00eb ID p\u00ebrdoruesve. Sh\u00ebrbimi sh\u00ebrben mbi 20 makineri, por kjo \u00ebsht\u00eb shum\u00eb, planifikojm\u00eb t\u00eb zvog\u00eblojm\u00eb burimet e dedikuara, sepse i mjaftojn\u00eb kapacitetet e 4-5 makinerive.<\/p>\n<p>Sh\u00ebrbimi i sesioneve \u00ebsht\u00eb sh\u00ebrbimi yn\u00eb i par\u00eb n\u00eb vshard dhe Cartridge. Konfigurimi i vshard dhe p\u00ebrdit\u00ebsimi i Cartridge k\u00ebrkuan nga ne disa burime pune, por n\u00eb fund gjith\u00e7ka doli si\u00e7 duhej.<\/p>\n<p>Sh\u00ebrbimi p\u00ebr shfaqjen e bannerave t\u00eb ndryshme n\u00eb faqen e internetit dhe n\u00eb aplikacionin n\u00eb celular ishte nj\u00eb nga t\u00eb par\u00ebt q\u00eb u publikuan menj\u00ebher\u00eb n\u00eb Tarantool. Ky sh\u00ebrbim \u00ebsht\u00eb interesant sepse \u00ebsht\u00eb rreth 6-7 vje\u00e7, ai \u00ebsht\u00eb akoma n\u00eb funksion dhe nuk \u00ebsht\u00eb rinisur asnj\u00ebher\u00eb. U p\u00ebrdor replikimi master-master. Asnj\u00ebher\u00eb nuk ka d\u00ebshtuar.<\/p>\n<p>Ka nj\u00eb shembull t\u00eb p\u00ebrdorimit t\u00eb Tarantool p\u00ebr funksionalitetin e regjistrave t\u00eb shpejt\u00eb n\u00eb sistemin e magazinimit, p\u00ebr t\u00eb kontrolluar shpejt informacionin n\u00eb disa raste. Provuan t\u00eb p\u00ebrdorin Redis p\u00ebr k\u00ebt\u00eb q\u00ebllim, por t\u00eb dh\u00ebnat n\u00eb memorie zinin m\u00eb shum\u00eb hap\u00ebsir\u00eb sesa n\u00eb Tarantool.<\/p>\n<p>Sh\u00ebrbimet e list\u00ebs s\u00eb pritjes, abonimeve t\u00eb klient\u00ebve, storieve t\u00eb njohura tani dhe artikujve t\u00eb vonuar gjithashtu punojn\u00eb me Tarantool. Ky sh\u00ebrbim z\u00eb rreth 120 GB n\u00eb memorie. Ky \u00ebsht\u00eb sh\u00ebrbimi m\u00eb voluminoz nga ato t\u00eb p\u00ebrmendura m\u00eb par\u00eb. <\/p>\n<h3>P\u00ebrfundim<\/h3>\n<p>\nFal\u00eb indeksit t\u00eb dyt\u00eb n\u00eb kombinim me key-value dhe transaksionet, Tarantool \u00ebsht\u00eb jasht\u00ebzakonisht e p\u00ebrshtatshme p\u00ebr arkitekturat e bazuara n\u00eb mikros\u0435\u0440\u0432ice. Megjithat\u00eb, ne u p\u00ebrball\u00ebm me v\u00ebshtir\u00ebsi kur implementuam ndryshime n\u00eb sh\u00ebrbimet me shum\u00eb logjik\u00eb n\u00eb Lua \u2014 sh\u00ebrbimet shpesh ndalonin s\u00eb funksionuari. Ne nuk arrijm\u00eb ta zgjidhim k\u00ebt\u00eb, dhe me kalimin e koh\u00ebs kemi arritur n\u00eb kombinime t\u00eb ndryshme t\u00eb Lua dhe Go: e dim\u00eb se ku duhet t\u00eb p\u00ebrdorim nj\u00eb gjuh\u00eb dhe ku tjetra.<\/p>\n<p><b>\u00c7far\u00eb tjet\u00ebr t\u00eb lexoni mbi k\u00ebt\u00eb tem\u00eb<\/b><\/p>\n<ul>\n<li>Krijojm\u00eb nga e para nj\u00eb aplikacion me ngarkes\u00eb t\u00eb lart\u00eb n\u00eb Tarantool <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/510440\/\">habr.com\/ru\/company\/mailru\/blog\/510440<\/a><\/noindex><\/li>\n<li>Zgjedhje e besueshme lideri n\u00eb Tarantool Cartridge <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/513912\/\">habr.com\/ru\/company\/mailru\/blog\/513912<\/a><\/noindex><\/li>\n<li>Kanal Telegram Tarantool me lajme p\u00ebr produktin <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantool_news\">t.me\/tarantool_news<\/a><\/noindex><\/li>\n<li>Diskuto Tarantool n\u00eb bised\u00ebn e komunitetit <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantoolru\">t.me\/tarantoolru<\/a><\/noindex><\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516932\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0441\u0438\u0434\u044f \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0431\u044b\u043b\u044b\u0445 \u043f\u043e\u0431\u0435\u0434\u0430\u0445, \u0441\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e \u0441\u0432\u043e\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u043d\u044c. \u0418 \u043f\u0443\u0441\u0442\u044c \u0432\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0443 \u043a\u043e\u0441\u0442\u0440\u0430, \u043d\u043e \u0437\u0430\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0441. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u043d\u0430 Tarantool. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92807,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92806","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-31T05:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolit | ProHoster","description":"T\u00eb gjith\u00eb ne i duam historit\u00eb.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u0442\u044c \u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430 | ProHoster","og:description":"\u0412\u0441\u0435 \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0438.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-perestat-bespokoitsya-i-nachat-zhit-bez-monolita","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-31T05:42:03+00:00","article:modified_time":"2020-08-31T05:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92806","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:01:23","updated":"2022-10-01 20:28:38","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/92806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=92806"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/92806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/92807"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=92806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=92806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=92806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}