{"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 monolit","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 monolit\" 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 tregojm\u00eb p\u00ebrfitimet, luft\u00ebrat tona apo thjesht p\u00ebrvojat tona duke u ulur pran\u00eb zjarrit.<\/p>\n<p>Sot \u00ebsht\u00eb nj\u00eb nga ato dit\u00eb. Edhe n\u00ebse nuk jeni pran\u00eb nj\u00eb zjarri, ne kemi nj\u00eb histori p\u00ebr ju. Nj\u00eb histori p\u00ebr m\u00ebnyr\u00ebn se si filluam t\u00eb punojm\u00eb me ruajtjen n\u00eb Tarantool.<\/p>\n<p>Nj\u00eb her\u00eb e nj\u00eb koh\u00eb, n\u00eb kompanin\u00eb ton\u00eb kishte disa \"monolite\" dhe nj\u00eb \"tavan\" p\u00ebr t\u00eb gjith\u00eb, t\u00eb cilit k\u00ebto monolite i afrohen ngadal\u00eb, duke e kufizuar fluturimin e kompanis\u00eb ton\u00eb dhe zhvillimin ton\u00eb. Kishim nj\u00eb kuptim t\u00eb qart\u00eb: nj\u00eb dit\u00eb do t\u00eb p\u00ebrballeshim me k\u00ebt\u00eb tavane.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSot, ideologjia jon\u00eb \u00ebsht\u00eb ndarja e gjith\u00e7kaje, duke filluar nga pajisjet deri tek logjika e biznesit. Si rezultat, ne, p\u00ebr shembull, kemi dy Qendra t\u00eb T\u00eb Dh\u00ebnave, pothuajse t\u00eb pavarura n\u00eb nivelin rrjetor. N\u00eb at\u00eb koh\u00eb, gjith\u00e7ka ishte krejt ndryshe.<\/p>\n<p>Sot ka shum\u00eb mjete dhe burime p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime si CI\/CD, K8S etj. N\u00eb koh\u00ebn \"monolite\", nuk kishim nevoj\u00eb p\u00ebr kaq shum\u00eb fjal\u00eb t\u00eb huaja. Mjaftonte t\u00eb rregulloje thjesht \"ruajtjen\" n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave.<\/p>\n<p>Por koha kalonte p\u00ebrpara, dhe numri i k\u00ebrkesave rritej me t\u00eb. Kur hynim n\u00eb tregun e vendeve t\u00eb CIS, ngarkesa n\u00eb CPU t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave t\u00eb monolit t\u00eb par\u00eb nuk u ul kurr\u00eb n\u00ebn 90%, nd\u00ebrsa RPS q\u00ebndronte n\u00eb 2400. Dhe k\u00ebto nuk ishin thjesht k\u00ebrkesa t\u00eb vogla, por k\u00ebrkesa t\u00eb m\u00ebdha me shum\u00eb verifikime dhe JOIN-e, t\u00eb cilat mund t\u00eb kalonin pothuajse gjysm\u00ebn e t\u00eb dh\u00ebnave n\u00eb nj\u00eb sfond t\u00eb madh IO.<\/p>\n<p>Kur u shfaq\u00ebn shitjet me zbritje n\u00eb \"Black Friday\", - dhe Wildberries filloi t'i organizonte ato nj\u00eb nga t\u00eb par\u00ebt n\u00eb Rusi, situata u b\u00eb krejt\u00ebsisht e trishtuar. Sepse ngarkesa n\u00eb ato dit\u00eb rritej tri her\u00eb.<br \/>\nAh, ato \"koha monolite\"! Jam i sigurt q\u00eb edhe ju keni hasur n\u00eb di\u00e7ka t\u00eb till\u00eb, dhe ende nuk mund ta kuptoni se si mund t'ju ndodhte kjo.<\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebjm\u00eb - moda \u00ebsht\u00eb e pranishme edhe n\u00eb teknologji. Rreth pes\u00eb vjet m\u00eb par\u00eb, na u desh t\u00eb rishqyrtonim nj\u00eb nga k\u00ebto moda n\u00eb form\u00ebn e nj\u00eb uebfaqeje n\u00eb .NET dhe MS SQL Server, e cila ruante me kujdes gjith\u00eb logjik\u00ebn e funksionimit t\u00eb vet. E ruante kaq me kujdes, saq\u00eb ndarja e nj\u00eb monoliti t\u00eb till\u00eb dukej si nj\u00eb k\u00ebnaq\u00ebsi e gjat\u00eb dhe tep\u00ebr e v\u00ebshtir\u00eb.<br \/>\nNj\u00eb shp\u00ebrthim i vog\u00ebl. <\/p>\n<p>N\u00eb ngjarje t\u00eb ndryshme them: \"n\u00ebse nuk keni ndar\u00eb nj\u00eb monolit, do thot\u00eb se nuk keni ecur p\u00ebrpara!\" Interesi juaj n\u00eb k\u00ebt\u00eb tem\u00eb, ju lutem shkruani n\u00eb komentet.<\/p>\n<h3>Dhe ra goditja<\/h3>\n<p>\nKthehemi te \"zjarri\" yn\u00eb. P\u00ebr t\u00eb shp\u00ebrndar\u00eb ngarkes\u00ebn e funksionalitetit \"monolit\", ne vendos\u00ebm t\u00eb ndajm\u00eb sistemin n\u00eb mikrosh\u00ebrbime, t\u00eb bazuar n\u00eb teknologji opensource. Sepse, s\u00eb paku, shkalla e tyre \u00ebsht\u00eb m\u00eb e lir\u00eb. Dhe kishim 100% t\u00eb qart\u00eb se do t\u00eb duhej t\u00eb shkall\u00ebzonim (dhe mjaft). Sepse, q\u00eb at\u00ebher\u00eb ishim n\u00eb gjendje t\u00eb hynim n\u00eb tregjet e vendeve 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 pretendent\u00ebve t\u00eb par\u00eb p\u00ebr daljen nga monoliti n\u00eb mikrosh\u00ebrbime, kuptuam se n\u00eb 80% prej tyre, sh\u00ebnimi n\u00eb to 99% vinte nga sistemet back office, nd\u00ebrsa leximi - nga fronti. Kjo i p\u00ebrkiste kryesisht dy n\u00ebn-sistemeve t\u00eb r\u00ebnd\u00ebsishme p\u00ebr ne - t\u00eb dh\u00ebnave t\u00eb p\u00ebrdoruesve dhe sistemit p\u00ebr llogaritjen e \u00e7mimit p\u00ebrfundimtar t\u00eb produkteve n\u00eb baz\u00eb t\u00eb informacionit mbi zbritjet e klient\u00ebve dhe kupon\u00ebt.<\/p>\n<p>P\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb shp\u00ebrthim. Tani \u00ebsht\u00eb e frikshme t\u00eb imagjinoni, por p\u00ebrve\u00e7 n\u00ebn-sistemeve t\u00eb p\u00ebrmendura m\u00eb sip\u00ebr, nga monoliti yn\u00eb u larguan gjithashtu katalog\u00ebt e produkteve, karroca e p\u00ebrdoruesve, sistemi i k\u00ebrkimit t\u00eb produkteve, sistemi i filtrimit t\u00eb katalog\u00ebve t\u00eb produkteve dhe nj\u00eb s\u00ebr\u00eb sistemesh rekomandimi. P\u00ebr t\u00eb punuar p\u00ebr secilin prej tyre ka klasa t\u00eb ve\u00e7anta sistemesh t\u00eb ngushta, por nj\u00eb her\u00eb ata t\u00eb gjith\u00eb jetonin n\u00eb nj\u00eb \"sht\u00ebpi\". <\/p>\n<p>Plani yn\u00eb ishte q\u00eb t\u00eb nxirrnim t\u00eb dh\u00ebnat p\u00ebr klient\u00ebt tan\u00eb n\u00eb nj\u00eb sistem t\u00eb ndar\u00eb. Nd\u00ebrsa funksionaliteti p\u00ebr llogaritjen e \u00e7mimit p\u00ebrfundimtar t\u00eb produkteve k\u00ebrkonte shkall\u00ebzim t\u00eb mir\u00eb p\u00ebr leximin, pasi krijonte ngarkes\u00ebn m\u00eb t\u00eb madhe t\u00eb RPS dhe ishte m\u00eb e v\u00ebshtir\u00eb p\u00ebr t'u realizuar p\u00ebr baz\u00ebn (shum\u00eb t\u00eb dh\u00ebna ishin t\u00eb angazhuara n\u00eb procesin e llogaritjes). <\/p>\n<p>Si rezultat, na lindi nj\u00eb skem\u00eb q\u00eb kombinonte mir\u00eb me Tarantool.<\/p>\n<p>N\u00eb at\u00eb koh\u00eb, p\u00ebr pun\u00ebn e mikrosh\u00ebrbimeve u zgjodh\u00ebn skema t\u00eb pun\u00ebs me disa Qendra t\u00eb T\u00eb Dh\u00ebnave n\u00eb makinat virtuale dhe ato fizike. Si\u00e7 tregohet n\u00eb ilustrime, u p\u00ebrdor\u00ebn opsione t\u00eb replikimit n\u00eb Tarantool si n\u00eb m\u00ebnyr\u00ebn master-master, ashtu edhe 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 monolit\" src=\"\/wp-content\/uploads\/2020\/08\/b7bf3d6646ec9f6a8f8af3a539adede1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arkitektura. Variant 1. Sh\u00ebrbimi i p\u00ebrdoruesve<\/i><\/p>\n<p>Aktualisht kjo \u00ebsht\u00eb 24 shard-e, n\u00eb secilin prej t\u00eb cilave ka 2 instanca (nj\u00eb p\u00ebr \u00e7do Qend\u00ebr t\u00eb T\u00eb Dh\u00ebnave), t\u00eb gjitha n\u00eb m\u00ebnyr\u00ebn master-master.<\/p>\n<p>N\u00ebn DB ndodhen aplikacione q\u00eb komunikojn\u00eb me replikat e DB. Aplikacionet funksionojn\u00eb me Tarantool p\u00ebrmes bibliotek\u00ebs son\u00eb t\u00eb personalizuar, q\u00eb implementon nd\u00ebrfaqen e drejtorit Go p\u00ebr Tarantool. Ajo sheh t\u00eb gjitha replikat dhe mund t\u00eb punoj\u00eb me masterin p\u00ebr lexim dhe shkrim. N\u00eb thelb, implementon modelin e grupit t\u00eb replikave, n\u00eb t\u00eb cilin \u00ebsht\u00eb shtuar logjika e zgjedhjes s\u00eb replikave, ekzekutimit t\u00eb p\u00ebrpjekjeve t\u00eb rip\u00ebrs\u00ebritura, circuit breaker dhe limitimin e norm\u00ebs.<\/p>\n<p>Po ashtu, ka mund\u00ebsin\u00eb p\u00ebr t\u00eb konfiguruar politik\u00ebn e zgjedhjes s\u00eb replik\u00ebs n\u00eb nivelin e shardit. P\u00ebr shembull, me metoda t\u00eb rast\u00ebsishme.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb ndaloni s\u00eb shqet\u00ebsuari dhe t\u00eb filloni t\u00eb jetoni pa monolit\" src=\"\/wp-content\/uploads\/2020\/08\/6dc36fa54e3d01bd51f879fccdfd8e0b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Arkitektura. Opcioni 2. Sh\u00ebrbimi p\u00ebr llogaritjen e \u00e7mimit fundor t\u00eb produktit<\/i><\/p>\n<p>Disa muaj m\u00eb par\u00eb, shumica e k\u00ebrkesave p\u00ebr llogaritjen e \u00e7mimit fundor t\u00eb produkteve kaluan n\u00eb nj\u00eb sh\u00ebrbim t\u00eb ri, i cili n\u00eb parim funksionon pa baz\u00eb t\u00eb dh\u00ebnash, por nj\u00eb koh\u00eb m\u00eb par\u00eb, 100% e k\u00ebrkesave u p\u00ebrpunuan nga sh\u00ebrbimi me Tarantool n\u00eb sfond.<\/p>\n<p>DB e sh\u00ebrbimit ka 4 mastera, n\u00eb t\u00eb cilat sinkronizuesi mbledh t\u00eb dh\u00ebnat, dhe secili nga k\u00ebta mastera me replikimin shp\u00ebrndan t\u00eb dh\u00ebnat n\u00eb replikat readonly. \u00c7do master ka rreth 15 t\u00eb till\u00eb replikash.<\/p>\n<p>N\u00eb t\u00eb dy skemat, n\u00eb rast t\u00eb pap\u00ebrfshirjes s\u00eb nj\u00eb DC, aplikacioni mund t\u00eb marr\u00eb t\u00eb dh\u00ebna nga e dyta.<\/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 sisteme t\u00eb tjera, ka pasur v\u00ebshtir\u00ebsi. P\u00ebr shembull, p\u00ebr t\u00eb ndryshuar parametrat max_wal_senders dhe max_replication_slots n\u00eb PostgreSQL \u00ebsht\u00eb e nevojshme t\u00eb rinisni masterin, q\u00eb n\u00eb disa raste mund t\u00eb \u00e7oj\u00eb n\u00eb nd\u00ebrprerjen e lidhjeve nd\u00ebrmjet aplikacionit dhe DB.<\/p>\n<h3>K\u00ebrkoni dhe do t\u00eb gjeni!<\/h3>\n<p>\nPse nuk e b\u00ebm\u00eb \u00absi njer\u00ebzit normal\u00eb\u00bb, por zgjodh\u00ebm nj\u00eb qasje jo t\u00eb zakonshme? Varet se \u00e7far\u00eb e konsideroni normal. Shum\u00eb e b\u00ebjn\u00eb nj\u00eb grup nga Mongo dhe e shp\u00ebrndajn\u00eb at\u00eb n\u00eb tri DC t\u00eb shp\u00ebrndara gjeografikisht.<\/p>\n<p>N\u00eb at\u00eb koh\u00eb, ne kishim tashm\u00eb dy projekte mbi Redis. E para \u2014 cache, dhe e dyta ishte nj\u00eb ruajt\u00ebs i vazhduesh\u00ebm p\u00ebr t\u00eb dh\u00ebna q\u00eb nuk ishin shum\u00eb kritike. Me k\u00ebt\u00eb t\u00eb fundit kishte v\u00ebshtir\u00ebsi, p\u00ebr pjes\u00eb t\u00eb cil\u00ebs k\u00ebrkesat. Ndonj\u00ebher\u00eb volume t\u00eb m\u00ebdha ishin n\u00eb \u00e7el\u00ebs, dhe her\u00eb pas here faqja shfaqte probleme. Kjo sistem ishte p\u00ebrdorur n\u00eb variantin master-slave. Kishte shum\u00eb raste kur ndodhte di\u00e7ka me masterin dhe replikimi prishej. <\/p>\n<p>Pra, Redis \u00ebsht\u00eb i mir\u00eb p\u00ebr detyrat stateless, jo p\u00ebr ato stateful. N\u00eb thelb, ai lejonte zgjidhjen e shumic\u00ebs s\u00eb detyrave, por vet\u00ebm n\u00ebse ishin zgjidhje key-value me disa indekse. Por n\u00eb at\u00eb koh\u00eb, Redis kishte probleme me peristenc\u00ebn dhe replikimin. P\u00ebr m\u00eb tep\u00ebr, kishte ankesa p\u00ebr performanc\u00ebn.<\/p>\n<p>Kishim menduar p\u00ebr MySQL dhe PostgreSQL. Por i pari nuk ishte mir\u00ebpritur nga ne, nd\u00ebrsa i dyti \u00ebsht\u00eb nj\u00eb produkt mjaft i sofistikuar, dhe nd\u00ebrtimi i sh\u00ebrbimeve t\u00eb thjeshta mbi t\u00eb do t\u00eb ishte joefektiv.<br \/>\nProvuam RIAK, Cassandra, madje edhe nj\u00eb DB grafike. E gjith\u00eb kjo \u00ebsht\u00eb mjaft niche dhe nuk i p\u00ebrshtatej rolit si nj\u00eb mjet universale p\u00ebr krijimin e sh\u00ebrbimeve.<\/p>\n<p>N\u00eb fund, vendos\u00ebm p\u00ebr Tarantool.<\/p>\n<p>Ne i kemi drejtuar asaje kur ishte n\u00eb versionin 1.6. Na t\u00ebrhoqi kombinimi i key-value me funksionalitetin e nj\u00eb DB t\u00eb relacional. Ka indekse dyt\u00ebsore, transaksione dhe hap\u00ebsira, ato jan\u00eb si tavolina, por jo t\u00eb thjeshta, mund t\u00eb ruhet nj\u00eb num\u00ebr i ndrysh\u00ebm kolonash. Por ve\u00e7oria kryesore e Tarantool ishte indekset dyt\u00ebsore n\u00eb kombinim me key-value dhe transaksionalitetin.<\/p>\n<p>Po ashtu, komuniteti i p\u00ebrgjegjsh\u00ebm anglishtfol\u00ebs luajti nj\u00eb rol, i gatsh\u00ebm t\u00eb ofronte ndihm\u00eb n\u00eb bised\u00eb. Ne e kemi p\u00ebrdorur k\u00ebt\u00eb aktivisht dhe jetonim n\u00eb bised\u00eb. Dhe nuk duhemi t\u00eb harrojm\u00eb nj\u00eb peristenc\u00eb t\u00eb mir\u00eb pa gabime t\u00eb dukshme. N\u00ebse shohim historin\u00eb ton\u00eb me Tarantool, kemi pasur shum\u00eb v\u00ebshtir\u00ebsi dhe gabime me replikimin, por asnj\u00ebher\u00eb nuk kemi humbur t\u00eb dh\u00ebna p\u00ebr shkak t\u00eb saj!<\/p>\n<h3>Zbatimi filloi me v\u00ebshtir\u00ebsi<\/h3>\n<p>\nN\u00eb at\u00eb koh\u00eb, stoku yn\u00eb kryesor i zhvillimit ishte .NET, p\u00ebr t\u00eb cilin nuk kishte konektor p\u00ebr Tarantool. Ne filluam menj\u00ebher\u00eb t\u00eb b\u00ebnim di\u00e7ka n\u00eb Go. Edhe me Lua dilte mir\u00eb. Problemi kryesor n\u00eb at\u00eb koh\u00eb ishte debugging: n\u00eb .NET ishte shk\u00eblqyer, por m\u00eb pas kalimi n\u00eb bot\u00ebn e embedded Lua, kur nuk kishit as ndihma p\u00ebrve\u00e7 logeve, ishte mjaft e v\u00ebshtir\u00eb. P\u00ebr m\u00eb tep\u00ebr, replikimi p\u00ebr nj\u00eb arsye ndodhte her\u00eb pas here, na duhej t\u00eb thellohemi n\u00eb funksionimin e motorit Tarantool. Kjo u ndihmua nga biseda, n\u00eb nj\u00eb mas\u00eb m\u00eb t\u00eb vog\u00ebl nga dokumentacioni, ndonj\u00ebher\u00eb shihnim edhe kodin. N\u00eb at\u00eb koh\u00eb dokumentacioni ishte mjaft i dob\u00ebt.<\/p>\n<p>Nj\u00ebsoj, p\u00ebr disa muaj, mblodh\u00ebm p\u00ebrvoj\u00eb dhe arrit\u00ebm rezultate t\u00eb k\u00ebnaqshme n\u00eb pun\u00ebn me Tarantool. Organizuam n\u00eb git p\u00ebrvojat standarde q\u00eb ndihmonin n\u00eb formimin e mikrosherbimeve t\u00eb reja. P\u00ebr shembull, kur shfaqej k\u00ebrkesa: p\u00ebr t\u00eb krijuar nj\u00eb mikrosherbim tjet\u00ebr, zhvilluesi shihte kodin burimor t\u00eb zgjidhjes standarde n\u00eb repository, dhe krijimi i nj\u00eb t\u00eb re duhej t\u00eb merrte jo m\u00eb shum\u00eb se nj\u00eb jav\u00eb. <\/p>\n<p>Ishin ishinin koha t\u00eb ve\u00e7anta. Mund t\u00eb thoshim se at\u00ebher\u00eb mund t\u00eb shkoje te admini n\u00eb tavolin\u00ebn e p\u00ebrbese dhe t\u00eb k\u00ebrkoje: \"M\u00eb jep nj\u00eb virtuale\". Pas 30 minutash, makina do t\u00eb ishte tashm\u00eb te ti. Ti lidheshe vet\u00eb, instalove gjith\u00e7ka dhe ata t\u00eb sillnin trafik p\u00ebr t\u00eb.<\/p>\n<p>Sot kjo nuk funksionon m\u00eb: duhet t\u00eb vendos\u00ebsh monitorim n\u00eb sh\u00ebrbim, regjistrim, t\u00eb mbulosh funksionalitetin me teste, t\u00eb porosis\u00ebsh nj\u00eb virtuale ose nj\u00eb shp\u00ebrndarje n\u00eb Kubernetes etj. N\u00eb p\u00ebrgjith\u00ebsi, k\u00ebshtu \u00ebsht\u00eb m\u00eb mir\u00eb, edhe pse m\u00eb e gjat\u00eb dhe me m\u00eb shum\u00eb mundime.<\/p>\n<h3>Ndaje dhe qeverise. Si q\u00ebndron \u00e7\u00ebshtja me Lua?<\/h3>\n<p>\nIshin dilema serioze: disa ekipe nuk arrinin t\u00eb nxjerrin me besueshm\u00ebri ndryshimet n\u00eb sh\u00ebrbim me shum\u00eb logjik\u00eb n\u00eb Lua. Shpesh, kjo shoq\u00ebrohej me mosfunksionimin e sh\u00ebrbimit. <\/p>\n<p>Pra, zhvilluesit p\u00ebrgatitnin nj\u00eb ndryshim. Tarantool fillonte migrimin, nd\u00ebrsa nj\u00eb riprodhim kishte ende kodin e vjet\u00ebr; aty mb\u00ebrrinte nj\u00eb DDL p\u00ebrmes riprodhimit, di\u00e7ka tjet\u00ebr, dhe kodi thjesht shkat\u00ebrrohej, sepse kjo nuk ishte parashikuar. Si rezultat, procedura e p\u00ebrdit\u00ebsimit p\u00ebr admin\u00ebt ishte e shkruar n\u00eb nj\u00eb flet\u00eb A4: ndaloni riprodhimin, p\u00ebrdit\u00ebsoni k\u00ebt\u00eb, aktivizoni riprodhimin, \u00e7aktivizoni k\u00ebtu, p\u00ebrdit\u00ebsoni atje. Nj\u00eb makth! <\/p>\n<p>Tani, ne zakonisht p\u00ebrpiqemi t\u00eb mos b\u00ebjm\u00eb asgj\u00eb n\u00eb Lua. Thjesht me ndihm\u00ebn e iproto (protokolli binar p\u00ebr komunikimin me serverin), dhe gjith\u00e7ka. Ndoshta, kjo \u00ebsht\u00eb nj\u00eb pap\u00ebrgatitje e njohurive te zhvilluesit, por nga kjo pik\u00ebpamje sistemi \u00ebsht\u00eb i komplikuar.<\/p>\n<p>Nuk 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. Tani e kuptojm\u00eb se si mund ta kombinojm\u00eb, p\u00ebr t\u00eb mos marr\u00eb m\u00eb pas probleme me migrimin.<\/p>\n<p>Ku ka aktualisht Tarantool?<br \/>\nTarantool p\u00ebrdoret n\u00eb sh\u00ebrbimin e llogaritjes s\u00eb kostos p\u00ebrfundimtare t\u00eb produkteve me llogaritjen e kupon\u00ebve t\u00eb zbritjes, ndryshe \"Promotajzer\". Si\u00e7 thash\u00eb m\u00eb par\u00eb, tani ai po dal\u00eb nga skena: e z\u00ebvend\u00ebson nj\u00eb sh\u00ebrbim t\u00eb ri katalogu me \u00e7mimet e parakalkuluara, por gjasht\u00eb muaj m\u00eb par\u00eb t\u00eb gjitha llogaritjet b\u00ebheshin n\u00eb \"Promotajzer\". M\u00eb par\u00eb gjysma e logjik\u00ebs s\u00eb tij ishte e shkruar n\u00eb Lua. Dy vjet m\u00eb par\u00eb krijuam nj\u00eb depo nga sh\u00ebrbimi dhe logjika u kalua n\u00eb Go, sepse mekanika e pun\u00ebs s\u00eb zbritjeve paksoi dhe sh\u00ebrbimit i mungonte performanca. <\/p>\n<p>Nj\u00eb nga sh\u00ebrbimet m\u00eb kritike \u00ebsht\u00eb profili i p\u00ebrdoruesit. K\u00ebshtu q\u00eb t\u00eb gjith\u00eb p\u00ebrdoruesit e Wildberries ruhen n\u00eb Tarantool, dhe ata jan\u00eb rreth 50 milion. Nj\u00eb sistem i ndar\u00eb sipas ID-s\u00eb s\u00eb p\u00ebrdoruesit, i shp\u00ebrndar\u00eb n\u00eb disa DC me lidhje n\u00eb sh\u00ebrbimet Go. <br \/>\nDikur lider n\u00eb RPS ishte \"Promotajzer\", duke arritur deri n\u00eb 6000 k\u00ebrkesa. N\u00eb nj\u00eb moment, ne kishim 50-60 instanca. Tani lideri n\u00eb RPS \u00ebsht\u00eb profili i p\u00ebrdoruesit, rreth 12000. N\u00eb k\u00ebt\u00eb sh\u00ebrbim aplikohet nj\u00eb ndarje e personalizuar me ndarjen sipas intervaleve t\u00eb ID-ve t\u00eb p\u00ebrdoruesve. Sh\u00ebrbimi sh\u00ebrben mbi 20 makina, por kjo \u00ebsht\u00eb tep\u00ebr shum\u00eb, planifikojm\u00eb t\u00eb zvog\u00eblojm\u00eb resurset e rezervuara, sepse ka mjaftuesh\u00ebm kapacitet 4-5 makinash.<\/p>\n<p>Sh\u00ebrbimi i seancave \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 p\u00ebrpjekje, por n\u00eb fund gjith\u00e7ka funksionoi.<\/p>\n<p>Sh\u00ebrbimi p\u00ebr tregimin e baner\u00ebve t\u00eb ndrysh\u00ebm n\u00eb faqe dhe n\u00eb aplikacionin mobil ishte nj\u00eb nga t\u00eb par\u00ebt q\u00eb u l\u00ebshua menj\u00ebher\u00eb n\u00eb Tarantool. Ky sh\u00ebrbim \u00ebsht\u00eb i njohur p\u00ebr faktin se \u00ebsht\u00eb rreth 6-7 vje\u00e7, ai \u00ebsht\u00eb ende aktiv dhe nuk ka pasur asnj\u00ebher\u00eb nj\u00eb rim\u00ebk\u00ebmbje. U p\u00ebrdor replikimi master-master. Kurr\u00eb nuk \u00ebsht\u00eb prishur asgj\u00eb.<\/p>\n<p>Ka nj\u00eb shembuj t\u00eb p\u00ebrdorimit t\u00eb Tarantool p\u00ebr funksionalitetin e katalog\u00ebve t\u00eb shpejt\u00eb n\u00eb sistemin e magazin\u00ebs, p\u00ebr t\u00eb verifikuar shpejt informacionin n\u00eb disa raste. Kemi provuar t\u00eb p\u00ebrdorim Redis p\u00ebr k\u00ebt\u00eb q\u00ebllim, por t\u00eb dh\u00ebnat n\u00eb memorie merrnin m\u00eb shum\u00eb hap\u00ebsir\u00eb se n\u00eb Tarantool.<\/p>\n<p>Sh\u00ebrbimet e list\u00ebs s\u00eb pritjes, abonimet e klient\u00ebve, storjet aktualisht t\u00eb mod\u00ebs dhe produktet e vonuara gjithashtu punojn\u00eb me Tarantool. Sh\u00ebrbimi i fundit n\u00eb memorie ndalon rreth 120 GB. Ky \u00ebsht\u00eb sh\u00ebrbimi m\u00eb voluminoz nga t\u00eb gjith\u00eb t\u00eb m\u00ebsip\u00ebrmit. <\/p>\n<h3>P\u00ebrfundimi<\/h3>\n<p>\nFal\u00eb indekseve t\u00eb dyta n\u00eb p\u00ebrputhje me key-value dhe transaksionet, Tarantool p\u00ebrshtatet shum\u00eb mir\u00eb p\u00ebr arkitektur\u00ebn bazuar n\u00eb mikrosh\u00ebrbime. Megjithat\u00eb, has\u00ebm v\u00ebshtir\u00ebsi kur nxorr\u00ebm ndryshimet n\u00eb sh\u00ebrbimet me shum\u00eb logjik\u00eb n\u00eb Lua - sh\u00ebrbimet shpesh ndalonin s\u00eb punuari. T\u00eb hapur e p\u00ebrball\u00ebm k\u00ebt\u00eb, dhe me kalimin e koh\u00ebs arrit\u00ebm n\u00eb kombinime t\u00eb ndryshme t\u00eb Lua dhe Go: dim\u00eb se kur duhet t\u00eb p\u00ebrdorim nj\u00eb gjuh\u00eb dhe kur tjetr\u00ebn.<\/p>\n<p><b>\u00c7far\u00eb tjet\u00ebr t\u00eb lexoni n\u00eb 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>Zgjedhja e besueshme e liderit 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 i Telegramit Tarantool me lajmet mbi produktin <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/tarantool_news\">t.me\/tarantool_news<\/a><\/noindex><\/li>\n<li>Diskutoni 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.0.1 - 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.0.1\" \/>\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 ndalosh s\u00eb u shqet\u00ebsuari dhe t\u00eb fillosh t\u00eb jetosh pa monolit | ProHoster","description":"Ne t\u00eb gjith\u00eb ne na p\u00eblqejn\u00eb 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}]}}