{"id":73949,"date":"2020-03-13T02:42:07","date_gmt":"2020-03-12T23:42:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1"},"modified":"2020-03-13T02:42:07","modified_gmt":"2020-03-12T23:42:07","slug":"kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1","title":{"rendered":"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje! Emri im \u00ebsht\u00eb Aleksei Pjankov, un\u00eb jam zhvillues n\u00eb kompanin\u00eb Sportmaster. N\u00eb k\u00ebt\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/485088\/\">postin<\/a><\/noindex> kam treguar se si filloi puna p\u00ebr uebsajtin Sportmaster n\u00eb vitin 2012, cilat iniciativa arrit\u00ebm t\u00eb \"shtyjm\u00eb\" dhe anasjelltas, cilat v\u00ebshtir\u00ebsi mblodh\u00ebm.<\/p>\n<p>Sot dua t\u00eb ndaj mendimet e mia, t\u00eb cilat ndjekin nj\u00eb narrativ tjet\u00ebr \u2013 zgjedhja e sistemit t\u00eb caching p\u00ebr backend-in java n\u00eb adminin e uebsajtit. Ky narrativ ka nj\u00eb r\u00ebnd\u00ebsi t\u00eb ve\u00e7ant\u00eb p\u00ebr mua \u2013 edhe pse historia zgjati vet\u00ebm 2 muaj, n\u00eb k\u00ebto 60 dit\u00eb punuam nga 12-16 or\u00eb pa asnj\u00eb dit\u00eb pushimi. Asnj\u00ebher\u00eb nuk kisha menduar dhe nuk e imagjinoja se mund t\u00eb punohej kaq shum\u00eb.<\/p>\n<p>Prandaj, tekstin e ndaj n\u00eb 2 pjes\u00eb, p\u00ebr t\u00eb mos e mbingarkuar. N\u00eb fakt, pjesa e par\u00eb do t\u00eb jet\u00eb shum\u00eb e leht\u00eb \u2014 p\u00ebrgatitje, hyrje, disa mendime, \u00e7far\u00eb \u00ebsht\u00eb caching. N\u00ebse ju jeni tashm\u00eb nj\u00eb zhvillues me p\u00ebrvoj\u00eb ose keni punuar me caching, nga ana teknike nuk ka gj\u00eb t\u00eb re n\u00eb k\u00ebt\u00eb artikull, ndoshta. Nd\u00ebrsa p\u00ebr nj\u00eb junior, nj\u00eb p\u00ebrmbledhje e till\u00eb mund t\u00eb sugjeroj\u00eb n\u00eb cil\u00ebn drejtim t\u00eb shikoni, n\u00ebse ndodh t\u00eb jeni n\u00eb nj\u00eb udh\u00ebkryq t\u00eb till\u00eb.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/490912\/\"><img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/634b7420b86d65bd5175536a1cb39078.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKur versioni i ri i uebsajtit t\u00eb Sportmaster u lan\u00e7ua n\u00eb prodhim, t\u00eb dh\u00ebnat arrinin n\u00eb nj\u00eb m\u00ebnyr\u00eb, t\u00eb th\u00ebn\u00eb pak, jo shum\u00eb t\u00eb rehatshme. Baza ishin tabelat e p\u00ebrgatitura p\u00ebr versionin e kaluar t\u00eb uebsajtit (Bitrix), t\u00eb cilat duhej t\u00eb importoheshin n\u00eb ETL, t\u00eb transformoheshin n\u00eb nj\u00eb format t\u00eb ri dhe t\u00eb pasuroheshin me disa elemente t\u00eb tjera nga nj\u00eb duzin\u00eb sistemesh. Q\u00eb nj\u00eb imazh i ri ose p\u00ebrshkrimi i produktit t\u00eb shfaqej n\u00eb uebsajt, duhej t\u00eb prisnim deri n\u00eb nes\u00ebr \u2013 p\u00ebrdit\u00ebsimi ndodhte vet\u00ebm nat\u00ebn, nj\u00eb her\u00eb n\u00eb dit\u00eb.<\/p>\n<p>Fillimisht kishte kaq shum\u00eb shqet\u00ebsime n\u00eb jav\u00ebt e para pas lan\u00e7imit, saq\u00eb k\u00ebto pengesa p\u00ebr menaxher\u00ebt e p\u00ebrmbajtjes ishin detaje. Por, sapo gjith\u00e7ka u qet\u00ebsua, zhvillimi i projektit vazhdoi \u2013 pas disa muajve, fillimi i vitit 2015 e gjeti ekipin ton\u00eb duke punuar aktivisht n\u00eb admin. N\u00eb vitet 2015 dhe 2016 gjith\u00e7ka shkonte mir\u00eb, ne l\u00ebshonim rregullisht, admin mbulonte nj\u00eb pjes\u00eb gjithnj\u00eb e m\u00eb t\u00eb madhe t\u00eb p\u00ebrgatitjes s\u00eb t\u00eb dh\u00ebnave dhe ne p\u00ebrgatiteshim q\u00eb s\u00eb shpejti ekipi yn\u00eb do t\u00eb besoheshin detyra m\u00eb t\u00eb r\u00ebnd\u00ebsishme dhe m\u00eb t\u00eb komplikuara \u2013 konturi i produkteve (p\u00ebrgatitja e plot\u00eb dhe menaxhimi i t\u00eb dh\u00ebnave p\u00ebr t\u00eb gjitha produktet). Por ver\u00ebn e vitit 2017, pik\u00ebrisht p\u00ebrpara lan\u00e7imit t\u00eb konturit t\u00eb produkteve, projekti do t\u00eb p\u00ebrfundonte n\u00eb nj\u00eb situat\u00eb shum\u00eb t\u00eb komplikuar \u2013 pik\u00ebrisht p\u00ebr shkak t\u00eb problemeve me caching. P\u00ebr k\u00ebt\u00eb episod dua t\u00eb flas n\u00eb pjes\u00ebn e dyt\u00eb t\u00eb k\u00ebsaj publikimi n\u00eb dy seria.<\/p>\n<p>Por n\u00eb k\u00ebt\u00eb post do t\u00eb filloj nga larg, p\u00ebr t\u00eb p\u00ebrmbledhur disa mendime \u2013 p\u00ebrfytyrime mbi caching, t\u00eb cilat do t\u00eb ishin nj\u00eb hap i mir\u00eb t\u00eb rrotulloheshin p\u00ebrpara nj\u00eb projekti t\u00eb madh.<\/p>\n<h2>Kur lind detyra e caching<\/h2>\n<p>\nDetyra e caching nuk shfaqet thjesht k\u00ebshtu. Ne jemi zhvillues, krijojm\u00eb produktin softuerik dhe duam q\u00eb ai t\u00eb jet\u00eb i k\u00ebrkuar. N\u00ebse produkti \u00ebsht\u00eb i k\u00ebrkuar dhe i suksessh\u00ebm \u2013 p\u00ebrdoruesit rriten. Dhe m\u00eb shum\u00eb rriten dhe m\u00eb shum\u00eb. Dhe ja ku jan\u00eb shum\u00eb p\u00ebrdorues dhe at\u00ebher\u00eb produkti b\u00ebhet me ngarkes\u00eb t\u00eb lart\u00eb.<\/p>\n<p>N\u00eb fazat fillestare nuk mendojm\u00eb p\u00ebr optimizimin dhe performanc\u00ebn e kodit. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb funksionaliteti, ta nxjerrim shpejt pilotin dhe t\u00eb testojm\u00eb hipotezat. Dhe n\u00ebse ngarkesa rritet \u2013 ne e p\u00ebrmir\u00ebsojm\u00eb harduerin. E rrisim dy- deri tri- deri pes\u00ebfish, le t\u00eb jet\u00eb deri n\u00eb 10 her\u00eb. Diku k\u00ebtu \u2013 financat m\u00eb shum\u00eb nuk do t\u00eb lejojn\u00eb. Sa her\u00eb do t\u00eb rritet numri i p\u00ebrdoruesve? Kjo do t\u00eb jet\u00eb jo 2-5-10, por n\u00eb rast suksesi \u2013 do t\u00eb jet\u00eb nga 100-1000 deri n\u00eb 100 mij\u00eb her\u00eb. Pra, her\u00ebt a von\u00eb do t\u00eb kemi nevoj\u00eb t\u00eb merremi me optimizimin.<\/p>\n<p>Supozoni, nj\u00eb pjes\u00eb e kodit (ta quajm\u00eb k\u00ebt\u00eb pjes\u00eb funksion) punon p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb t\u00eb pap\u00ebrshtatshme, dhe ne duam t\u00eb reduktojm\u00eb koh\u00ebn e ekzekutimit. Funksioni \u2013 mund t\u00eb jet\u00eb qasje n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave, mund t\u00eb jet\u00eb ekzekutimi i nj\u00eb logjike t\u00eb komplikuar \u2013 e r\u00ebnd\u00ebsishme \u00ebsht\u00eb se ekzekutohet p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. Sa mund t\u00eb reduktohet koha e ekzekutimit? N\u00eb limit \u2013 mund t\u00eb reduktohet deri n\u00eb zero, jo m\u00eb tej. Si mund t\u00eb reduktohet koha e ekzekutimit deri n\u00eb zero? P\u00ebrgjigjja: t\u00eb p\u00ebrjashtohet krejt\u00ebsisht ekzekutimi. N\u00eb vend t\u00eb k\u00ebsaj \u2013 t\u00eb kthehet menj\u00ebher\u00eb rezultati. Si mund ta njohim rezultatin? P\u00ebrgjigjja: ose ta llogarisim, ose ta shohim diku. T\u00eb llogarisim \u2014 \u00ebsht\u00eb e gjat\u00eb. Dhe t\u00eb shohim \u2014 \u00ebsht\u00eb, p\u00ebr shembull, t\u00eb mbajm\u00eb mend rezultatin q\u00eb funksioni e dha her\u00ebn e kaluar kur u thirr me t\u00eb nj\u00ebjtat parametra.<\/p>\n<p>Pra ndaj, realizimi i funksionit nuk \u00ebsht\u00eb i r\u00ebnd\u00ebsish\u00ebm p\u00ebr ne. Mjafton t\u00eb dim\u00eb se cilat parametra ndikojn\u00eb n\u00eb rezultat. At\u00ebher\u00eb, n\u00ebse paraqesim vlerat e parametrave si nj\u00eb objekt q\u00eb mund t\u00eb p\u00ebrdoret si \u00e7el\u00ebs n\u00eb nj\u00eb magazin\u00eb t\u00eb caktuar \u2014 at\u00ebher\u00eb rezultati i llogaritjes mund t\u00eb ruhet dhe n\u00eb k\u00ebrkes\u00ebn e ardhshme t\u00eb merret p\u00ebrs\u00ebri. N\u00ebse k\u00ebto regjistrime dhe lexime rezultati kalojn\u00eb m\u00eb shpejt se sa ekzekutimi i funksionit \u2013 kemi p\u00ebrfitim t\u00eb shpejt\u00ebsis\u00eb. Sasia e p\u00ebrfitimit mund t\u00eb arrij\u00eb madje deri n\u00eb 100, 1000 ose 100 mij\u00eb her\u00eb (10^5 \u2013 kjo \u00ebsht\u00eb m\u00eb shum\u00eb p\u00ebrjashtim, por n\u00eb rastin e nj\u00eb baze t\u00eb r\u00ebnduar \u2013 \u00ebsht\u00eb plot\u00ebsisht e mundur).<\/p>\n<h2>K\u00ebrkesat kryesore p\u00ebr sistemin e memorizimit n\u00eb cache<\/h2>\n<p>\nE para q\u00eb mund t\u00eb b\u00ebhet nj\u00eb k\u00ebrkes\u00eb p\u00ebr sistemin e memorizimit n\u00eb cache \u2014 shpejt\u00ebsia e leximit dhe, n\u00eb nj\u00eb mas\u00eb pak m\u00eb t\u00eb vog\u00ebl \u2013 shpejt\u00ebsia e shkruajtjes. Kjo \u00ebsht\u00eb e v\u00ebrtet\u00eb, por vet\u00ebm deri n\u00eb momentin kur ne e lan\u00e7ojm\u00eb sistemin n\u00eb prodhim.<\/p>\n<p>Le t\u00eb shkrijm\u00eb nj\u00eb rast t\u00eb till\u00eb.<\/p>\n<p>Supozoni se kemi siguruar pajisjet p\u00ebr ngarkes\u00ebn aktuale dhe tani gradualisht po implementojm\u00eb memorizimin n\u00eb cache. Pak nga pak m\u00eb shum\u00eb p\u00ebrdorues po shtohen, ngarkesa po rritet \u2013 pak shtojm\u00eb cache, lidhim k\u00ebtu e atje. Kjo vazhdon p\u00ebr nj\u00ebfar\u00eb kohe, dhe tani funksionet e ngarkes\u00ebs s\u00eb r\u00ebnd\u00eb pothuajse nuk thirren m\u00eb \u2014 e gjith\u00eb ngarkesa e madhe bie mbi cache. Numri i p\u00ebrdoruesve gjat\u00eb k\u00ebtij kohe \u00ebsht\u00eb rritur N her\u00eb.<\/p>\n<p>Dhe n\u00ebse rezerva fillestare p\u00ebr pajisjet mund t\u00eb ishte 2-5 her\u00eb, at\u00ebher\u00eb me ndihm\u00ebn e cache-it ne mund t\u00eb p\u00ebrmir\u00ebsojm\u00eb performanc\u00ebn 10 her\u00eb ose, n\u00eb nj\u00eb rast t\u00eb mir\u00eb, 100 her\u00eb, ndoshta edhe 1000 her\u00eb. Kjo do t\u00eb thot\u00eb, n\u00eb t\u00eb nj\u00ebjtin ekip \u2013 p\u00ebrpunojm\u00eb 100 her\u00eb m\u00eb shum\u00eb k\u00ebrkesa. Mrekullisht, kemi merituar nj\u00eb shp\u00ebrblim!<\/p>\n<p>Por tani, n\u00eb nj\u00eb moment t\u00eb bukur, rast\u00ebsisht, sistemi d\u00ebshtoi dhe cache ra. Asgj\u00eb e ve\u00e7ant\u00eb \u2013 sepse cache u zgjodh sipas k\u00ebrkes\u00ebs \"shpejt\u00ebsi e lart\u00eb leximi dhe shkruajtjeje, e tjera nuk jan\u00eb t\u00eb r\u00ebnd\u00ebsishme\".<\/p>\n<p>N\u00eb lidhje me ngarkes\u00ebn fillestare, rezerva p\u00ebr pajisjet ishte 2-5 her\u00eb, nd\u00ebrsa ngarkesa gjat\u00eb k\u00ebtij procesi \u00ebsht\u00eb rritur 10-100 her\u00eb. Me ndihm\u00ebn e cache-it ne p\u00ebrjashtuam thirrjet p\u00ebr funksione t\u00eb r\u00ebnda dhe prandaj gjith\u00e7ka funksiononte shpejt. Tani, pa cache \u2013 p\u00ebr sa her\u00eb do t\u00eb bjer\u00eb sistemi yn\u00eb? \u00c7far\u00eb do t\u00eb ndodh\u00eb me ne? Sistemi do t\u00eb bjer\u00eb.<\/p>\n<p>Edhe n\u00ebse cache nuk ka r\u00ebn\u00eb, por vet\u00ebm \u00ebsht\u00eb pastruar p\u00ebr nj\u00ebfar\u00eb kohe \u2013 do t\u00eb duhet ta ngroh\u00ebm, dhe kjo do t\u00eb marr\u00eb ca koh\u00eb. Dhe p\u00ebr k\u00ebt\u00eb periudh\u00eb \u2013 ngarkesa kryesore do t\u00eb bjer\u00eb mbi funksionalitetin.<\/p>\n<p>P\u00ebrfundim: projektet me ngarkes\u00eb t\u00eb lart\u00eb n\u00eb prodhim k\u00ebrkojn\u00eb nga sistemi i memorizimit n\u00eb cache jo vet\u00ebm shpejt\u00ebsi t\u00eb lart\u00eb leximi dhe shkruajtjeje, por gjithashtu ruajtje t\u00eb t\u00eb dh\u00ebnave dhe q\u00ebndres\u00eb ndaj d\u00ebshtimeve.<\/p>\n<h2>D\u00ebshtimi i zgjedhjes<\/h2>\n<p>\nN\u00eb projektin me panelin e administrat\u00ebs \u2013 zgjedhja u b\u00eb k\u00ebshtu: fillimisht instaluan Hazelcast, pasi tashm\u00eb ishin t\u00eb njohur me k\u00ebt\u00eb produkt nga eksperienca e faqes kryesore. Por, k\u00ebtu nj\u00eb zgjedhje e till\u00eb rezultoi e pasuksesshme \u2013 p\u00ebr profilin ton\u00eb t\u00eb ngarkes\u00ebs, Hazelcast punon jo vet\u00ebm ngadal\u00eb, por jasht\u00ebzakonisht ngadal\u00eb. Dhe me afatet e prodhimit, ne n\u00eb at\u00eb koh\u00eb kishim n\u00ebnshkruar tashm\u00eb.<\/p>\n<p>Spoiler: si kam ndodhur rrethanat q\u00eb ne humb\u00ebm nj\u00eb dob\u00ebsi t\u00eb till\u00eb dhe pat\u00ebm nj\u00eb situat\u00eb t\u00eb tensionuar \u2013 do t'ju tregoj n\u00eb pjes\u00ebn e dyt\u00eb \u2014 dhe si p\u00ebrfunduam, dhe si doli situata. Por tani \u2014 do t\u00eb them vet\u00ebm se ishte nj\u00eb stres i fort\u00eb, dhe \"nuk po mendojm\u00eb, trondisim shishen\". \"Trondisim shishen\" \u2013 \u00ebsht\u00eb gjithashtu nj\u00eb spoiler, p\u00ebr k\u00ebt\u00eb pak m\u00eb posht\u00eb.<\/p>\n<p>\u00c7far\u00eb b\u00ebm\u00eb:<\/p>\n<ol>\n<li>Kemi b\u00ebr\u00eb nj\u00eb list\u00eb t\u00eb t\u00eb gjitha sistemeve q\u00eb sugjeron google dhe StackOverflow. Pak m\u00eb shum\u00eb se 30.<\/li>\n<li>Krijuam teste me ngarkes\u00ebn, q\u00eb karakterizon prodhimin. P\u00ebr k\u00ebt\u00eb, regjistruam t\u00eb dh\u00ebnat q\u00eb kalojn\u00eb p\u00ebrmes sistemit n\u00eb ambientin e prodhimit \u2014 nj\u00eb lloj sniffer p\u00ebr t\u00eb dh\u00ebnat jo n\u00eb rrjet, por brenda sistemit. N\u00eb teste, ekzekutuam pik\u00ebrisht k\u00ebto t\u00eb dh\u00ebna.<\/li>\n<li>E gjith\u00eb ekipi, \u00e7do kush zgjedh sistemin tjet\u00ebr nga lista, e konfigurton, e provon testin. N\u00ebse testi nuk kalon, nuk e mban ngarkes\u00ebn \u2013 e heqim, kalojm\u00eb te t\u00eb ardhshmit n\u00eb radh\u00eb.<\/li>\n<li>N\u00eb sistemin e 17-t\u00eb u b\u00eb e qart\u00eb se gjith\u00e7ka \u00ebsht\u00eb e pafat. Mjafton \"t\u00eb trondisim shishen\", \u00ebsht\u00eb koha p\u00ebr t\u00eb menduar seriozisht.<\/li>\n<\/ol>\n<p>\nPor ky \u00ebsht\u00eb varianti, kur ne duhet t\u00eb zgjedhim nj\u00eb sistem q\u00eb \"do t\u00eb kaloj\u00eb me shpejt\u00ebsi\" n\u00eb testet e p\u00ebrgatitura paraprakisht. Por \u00e7far\u00eb n\u00ebse nuk ka teste t\u00eb tilla dhe d\u00ebshirojm\u00eb t\u00eb zgjedhim m\u00eb shpejt?<\/p>\n<p>Le t\u00eb modelojm\u00eb nj\u00eb skenar t\u00eb till\u00eb (\u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb imagjinoni se nj\u00eb zhvillues mid-level ose m\u00eb i avancuar jeton n\u00eb vakuum, dhe n\u00eb momentin e zgjedhjes ende nuk ka p\u00ebrcaktuar preferenc\u00ebn se \u00e7far\u00eb produkti t\u00eb provoj\u00eb s\u00eb pari \u2014 prandaj, reflektimet e m\u00ebtejshme jan\u00eb m\u00eb shum\u00eb teorike\/filozofike\/rrreth nj\u00eb juniori).<\/p>\n<p>Pasi kemi p\u00ebrcaktuar k\u00ebrkesat, do t\u00eb fillojm\u00eb t\u00eb zgjedhim nj\u00eb zgjidhje nga kutia. Pse t\u00eb shpikim bi\u00e7iklet\u00ebn: ne do t\u00eb shkosh dhe marrim nj\u00eb sistem memorizimi n\u00eb cache t\u00eb gatsh\u00ebm.<\/p>\n<p>N\u00ebse sapo po filloni dhe do t\u00eb k\u00ebrkoni n\u00eb Google, ndoshta do t\u00eb jet\u00eb nj\u00eb renditje m\u00eb shum\u00eb-m\u00eb pak, por n\u00eb p\u00ebrgjith\u00ebsi, k\u00ebto do t\u00eb jen\u00eb orientimet. N\u00eb radh\u00eb t\u00eb par\u00eb do t\u00eb ndeshni Redis, ai \u00ebsht\u00eb kudo n\u00eb bised\u00eb. M\u00eb pas do t\u00eb m\u00ebsoni se ekziston EhCache si sistemi m\u00eb i vjet\u00ebr dhe i provuar. M\u00eb tej do t\u00eb shkruhet p\u00ebr Tarantool \u2014 nj\u00eb zhvillim vendas, q\u00eb ka nj\u00eb aspekt unik zgjidhjeje. Dhe gjithashtu p\u00ebr Ignite, sepse tani \u00ebsht\u00eb n\u00eb rritje t\u00eb popullaritetit dhe g\u00ebzon mb\u00ebshtetje nga SberTech. N\u00eb fund do t\u00eb flasim edhe p\u00ebr Hazelcast, sepse n\u00eb bot\u00ebn e enterprise-it ai shpesh shfaqet n\u00eb mesin e kompanive t\u00eb m\u00ebdha.<\/p>\n<p>Ky list\u00eb nuk p\u00ebrfundon k\u00ebtu, ekzistojn\u00eb dhjet\u00ebra sisteme. Ne do t\u00eb trajtojm\u00eb vet\u00ebm nj\u00eb. Do t\u00eb marrim 5 sistemet e zgjedhura p\u00ebr nj\u00eb \"konkurs bukurie\" dhe do t\u00eb kryejm\u00eb nj\u00eb p\u00ebrzgjedhje. Kush do t\u00eb jet\u00eb fituesi?<\/p>\n<h3>Redis<\/h3>\n<p>\nLe t\u00eb lexojm\u00eb se \u00e7far\u00eb thon\u00eb n\u00eb faqen zyrtare.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/\">Redis<\/a><\/noindex> \u2014 projekt open-source. Ofron nj\u00eb depo t\u00eb dh\u00ebnash n\u00eb memorie, mund\u00ebsin\u00eb e ruajtjes n\u00eb disk, ndarjen automatikisht n\u00eb parti, disponueshm\u00ebri t\u00eb lart\u00eb dhe rikuperim pas nd\u00ebrprerjeve rrjeti.<\/p>\n<p>Duket se gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull, mund ta marrim dhe ta lidhim \u2014 gjith\u00e7ka q\u00eb nevojitet, ai e b\u00ebn. Por le t\u00eb shohim vet\u00ebm p\u00ebr kuriozitetin mbi kandidat\u00ebt e tjer\u00eb.<\/p>\n<h3>EhCache<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.ehcache.org\/\">EhCache<\/a><\/noindex> \u2014 \"cache m\u00eb i p\u00ebrdorur p\u00ebr Java\" (p\u00ebrkthimi i sloganit nga faqja zyrtare). Edhe ai \u00ebsht\u00eb open-source. Dhe k\u00ebtu kuptojm\u00eb se Redis nuk \u00ebsht\u00eb p\u00ebr java, \u00ebsht\u00eb nj\u00eb sistem i p\u00ebrgjithsh\u00ebm, dhe p\u00ebr t'u lidhur me t\u00eb nevojitet nj\u00eb mb\u00ebshtjell\u00ebs. Nd\u00ebrsa EhCache do t\u00eb ishte m\u00eb i p\u00ebrshtatsh\u00ebm. \u00c7far\u00eb tjet\u00ebr premton sistemi? Besueshm\u00ebri, provim, funksionalitet t\u00eb plot\u00eb. Po ashtu, \u00ebsht\u00eb edhe sistemi m\u00eb i p\u00ebrhapur. Dhe cache t\u00eb terabajt\u00ebve t\u00eb dh\u00ebnash.<\/p>\n<p>Redis \u00ebsht\u00eb harruar, jam gati t\u00eb zgjedh EhCache.<\/p>\n<p>Por ndjenja patriotike m\u00eb shtyn t\u00eb shoh se \u00e7far\u00eb ka Tarantool.<\/p>\n<h3>Tarantool<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.tarantool.io\/ru\/\">Tarantool<\/a><\/noindex> \u2014 p\u00ebrballet me em\u00ebrtimin \"Platforma p\u00ebr integrimin e t\u00eb dh\u00ebnave n\u00eb koh\u00eb reale\". Duket shum\u00eb e komplikuar, prandaj le t\u00eb lexojm\u00eb faqen me kujdes dhe t\u00eb gjejm\u00eb nj\u00eb deklarat\u00eb t\u00eb zhurmshme: \"Cache 100% t\u00eb t\u00eb dh\u00ebnave n\u00eb memorie\". Kjo duhet t\u00eb ngrej\u00eb pyetje \u2014 sepse t\u00eb dh\u00ebnat mund t\u00eb jen\u00eb shum\u00eb m\u00eb t\u00eb m\u00ebdha se memoria. Shpjegimi p\u00ebr k\u00ebt\u00eb \u00ebsht\u00eb se p\u00ebr shkrimin e t\u00eb dh\u00ebnave n\u00eb disk nga memoria, Tarantool nuk kalon p\u00ebrmes serializimit. N\u00eb vend t\u00eb k\u00ebsaj \u2014 p\u00ebrdor ve\u00e7orit\u00eb e nivelit t\u00eb ul\u00ebt t\u00eb sistemit, kur memoria thjesht mapehet n\u00eb sistemin e skedar\u00ebve me rezultate shum\u00eb t\u00eb mira I\/O. N\u00eb t\u00ebr\u00ebsi, e b\u00ebn\u00eb ndonj\u00ebher\u00eb fantastike dhe t\u00eb shk\u00eblqyer.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb aplikimet: Mail.ru, Avito, Beeline, MegaFon, Alfa-Bank, Gazprom\u2026<\/p>\n<p>N\u00ebse ende kishte ndonj\u00eb dyshim p\u00ebr Tarantool, at\u00ebher\u00eb rasti i implementimit n\u00eb Mastercard m\u00eb \u00e7on deri n\u00eb vend. Po e marr Tarantool.<\/p>\n<p>Por gjithsesi\u2026<\/p>\n<h3>Ignite<\/h3>\n<p>\n... ka akoma <noindex><a rel=\"nofollow\" href=\"https:\/\/ignite.apache.org\/\">Ignite<\/a><\/noindex>, paraqitet si \"platforma e llogaritjes n\u00eb memorie... shpejt\u00ebsi n\u00eb memorie mbi petabajt t\u00eb dh\u00ebnash\". K\u00ebtu gjithashtu ka shum\u00eb p\u00ebrfitime: cache t\u00eb shp\u00ebrndar\u00eb n\u00eb memorie, depo m\u00eb e shpejt\u00eb e \u00e7el\u00ebs-vler\u00eb dhe cache, shkall\u00ebzim horizontal, disponueshm\u00ebri t\u00eb lart\u00eb, integritet t\u00eb rrept\u00eb. N\u00eb p\u00ebrgjith\u00ebsi, ndodhet se m\u00eb i shpejti \u00ebsht\u00eb Ignite.<\/p>\n<p>Aplikimet: Sberbank, American Airlines, Yahoo! Japan. Dhe pastaj m\u00ebsoj se Ignite nuk \u00ebsht\u00eb thjesht implementuar n\u00eb Sberbank, por ekipi i SberTech d\u00ebrgon njer\u00ebzit e tij n\u00eb ekipin e vet\u00eb Ignite, p\u00ebr ta p\u00ebrmir\u00ebsuar produktin. Kjo m\u00eb b\u00ebn t\u00ebrheq\u00ebs dhe jam gati t\u00eb zgjedh Ignite.<\/p>\n<p>Kjo \u00ebsht\u00eb krejt e paqart\u00eb p\u00ebr \u00e7far\u00eb arsyeje, un\u00eb shikoj n\u00eb pik\u00ebn e pest\u00eb.<\/p>\n<h3>Hazelcast<\/h3>\n<p>\nHyr n\u00eb faqen <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.com\/\">Hazelcast<\/a><\/noindex>, lexoj. Dhe del se zgjidhja m\u00eb e shpejt\u00eb p\u00ebr caching t\u00eb shp\u00ebrndar\u00eb \u00ebsht\u00eb Hazelcast. Ai \u00ebsht\u00eb disa her\u00eb m\u00eb i shpejt\u00eb se t\u00eb gjitha zgjidhjet e tjera dhe n\u00eb fakt \u00ebsht\u00eb lider n\u00eb fush\u00ebn e grid-it t\u00eb dh\u00ebnave n\u00eb memorie. N\u00eb k\u00ebt\u00eb kontekst, marrjen e di\u00e7kaje tjet\u00ebr do t\u00eb ishte nj\u00eb \u00e7menduri. Po ashtu, p\u00ebrdor ruajtjen e tepruar t\u00eb t\u00eb dh\u00ebnave p\u00ebr t\u00eb siguruar funksionimin e vazhduesh\u00ebm t\u00eb klasterit pa humbje t\u00eb t\u00eb dh\u00ebnave.<\/p>\n<p>Mjaft, kam vendosur t\u00eb marr Hazelcast.<\/p>\n<h2>Krahasimi<\/h2>\n<p>\nPor n\u00ebse shikon, t\u00eb pes\u00eb kandidat\u00ebt jan\u00eb p\u00ebrshkruar n\u00eb m\u00ebnyr\u00eb q\u00eb secili prej tyre \u00ebsht\u00eb m\u00eb i miri. Si t\u00eb zgjedh\u00ebsh? Mund t\u00eb shikojm\u00eb se cili \u00ebsht\u00eb m\u00eb i popullarizuari, t\u00eb k\u00ebrkojm\u00eb krahasime dhe dhimbja e kok\u00ebs do t\u00eb kaloj\u00eb.<\/p>\n<p>Gjejm\u00eb nj\u00eb t\u00eb till\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/db-engines.com\/en\/ranking_trend\">rishikimin ton\u00eb<\/a><\/noindex>, zgjedhim sistemet tona 5.<\/p>\n<p><img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/98a99bbce026318ac08aacfd829935bc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nAty jan\u00eb t\u00eb renditura: n\u00eb krye Redis, n\u00eb vendin e dyt\u00eb \u2014 Hazelcast, po popullarizojn\u00eb Tarantool dhe Ignite, EhCache vazhdon t\u00eb mbetet si\u00e7 ishte. <\/p>\n<p>Por le t\u00eb shikojm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/db-engines.com\/en\/ranking_definition\">metodologjin\u00eb e llogaritjeje<\/a><\/noindex>: lidhjet n\u00eb faqet e internetit, interesi i p\u00ebrgjithsh\u00ebm p\u00ebr sistemin, ofertat e pun\u00ebs \u2014 e shk\u00eblqyer! Do t\u00eb thot\u00eb, kur sistemi im do t\u00eb bjer\u00eb, do t\u00eb them: \"Jo, ai \u00ebsht\u00eb i besuesh\u00ebm! Ja shum\u00eb oferta pune...\". Nj\u00eb krahasim kaq i thjesht\u00eb nuk \u00ebsht\u00eb i mjaftuesh\u00ebm.<\/p>\n<p>T\u00eb gjitha k\u00ebto sisteme nuk jan\u00eb thjesht sisteme p\u00ebr caching. Ata gjithashtu kan\u00eb shum\u00eb caktuara, p\u00ebrfshir\u00eb - kur t\u00eb dh\u00ebnat nuk d\u00ebrgohen klientit p\u00ebr p\u00ebrpunim, por p\u00ebrkundazi: kodi q\u00eb duhet t\u00eb ekzekutohet mbi t\u00eb dh\u00ebnat, zhvendoset n\u00eb server, aty ekzekutohet dhe rezultati kthehet. Dhe si nj\u00eb sistem t\u00eb ve\u00e7ant\u00eb p\u00ebr caching, ata nuk shqyrtohen aq shpesh.<\/p>\n<p>Mir\u00eb, nuk dor\u00ebzohemi, do t\u00eb gjejm\u00eb nj\u00eb krahasim t\u00eb drejtp\u00ebrdrejt\u00eb t\u00eb sistemeve. Marrim dy opsionet e sip\u00ebrme \u2014 Redis dhe Hazelcast. Na intereson shpejt\u00ebsia, mbi k\u00ebt\u00eb parametrin do i krahasojm\u00eb.<\/p>\n<h3>Hz vs Redis<\/h3>\n<p>\nGjejm\u00eb nj\u00eb t\u00eb till\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/hazelcast.com\/resources\/benchmark-redis-3-2-8-vs-hazelcast-3-8\/\">krahasimi<\/a><\/noindex>:<br \/>\n<img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/c59ff32b3b61f68f0c3917c1de2aaa8f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nBlu \u00ebsht\u00eb Redis, e kuqe \u00ebsht\u00eb Hazelcast. Hazelcast fiton gjithmon\u00eb, dhe kjo ka nj\u00eb arsyetim: \u00ebsht\u00eb shum\u00eb-threading, i optimizuar lart\u00eb, \u00e7do thread punon me nj\u00eb particion t\u00eb vet, k\u00ebshtu q\u00eb nuk ka bllokime. Nd\u00ebrsa Redis \u00ebsht\u00eb nj\u00eb-threading, dhe nuk p\u00ebrfiton nga CPU-t\u00eb moderne shum\u00eb-nj\u00ebshe. Hazelcast ka I\/O asinkron, nd\u00ebrsa Redis-Jedis ka socket t\u00eb bllokuar. N\u00eb fund t\u00eb fundit, Hazelcast p\u00ebrdor nj\u00eb protokoll binar, nd\u00ebrsa Redis \u00ebsht\u00eb orientuar n\u00eb tekst, dometh\u00ebn\u00eb nuk \u00ebsht\u00eb efikas.<\/p>\n<p>P\u00ebr \u00e7do rast, le t\u00eb referohemi n\u00eb nj\u00eb burim tjet\u00ebr krahasimi. \u00c7far\u00eb do t\u00eb na tregoj\u00eb ai?<\/p>\n<h3>Redis vs Hz<\/h3>\n<p>\nNj\u00eb tjet\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/redislabs.com\/blog\/benchmarking-redis-enterprise-5-2-0-vs-hazelcast-3-9\/\">krahasimi<\/a><\/noindex>:<br \/>\n<img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/61e466d367dd6f9d52c1d7c6443d1713.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nK\u00ebtu anasjelltas, e kuqe \u00ebsht\u00eb Redis. Dometh\u00ebn\u00eb, Redis fiton ndaj Hazelcast n\u00eb performanc\u00eb. N\u00eb krahasimin e par\u00eb, fitonte Hazelcast, n\u00eb t\u00eb dytin \u2013 Redis. <noindex><a rel=\"nofollow\" href=\"https:\/\/redislabs.com\/blog\/benchmarking-redis-enterprise-5-2-0-vs-hazelcast-3-9\/\">K\u00ebtu<\/a><\/noindex> e shpjeguan shum\u00eb sakt\u00eb, pse n\u00eb krahasimin e m\u00ebparsh\u00ebm fitoi Hazelcast.<\/p>\n<p>Doli se rezultati i par\u00ebs ishte n\u00eb t\u00eb v\u00ebrtet\u00eb i manipuluar: Redis u mor n\u00eb kutin\u00eb e tij baz\u00eb, nd\u00ebrsa Hazelcast u optimizua p\u00ebr rastin e testit. K\u00ebshtu q\u00eb del: s\u00eb pari, askujt nuk mund t'i besohet, s\u00eb dyti, kur p\u00ebrfundojm\u00eb duke zgjedhur nj\u00eb sistem, duhet ta konfigurim t\u00eb sakt\u00eb. K\u00ebto konfigurime p\u00ebrfshijn\u00eb dhjet\u00ebra, pothuajse qindra parametra.<\/p>\n<h2>T\u00eb tundim shishen<\/h2>\n<p>\nDhe e gjith\u00eb kjo proces, q\u00eb ne tani e kemi kryer, mund ta shpjegoj me metafor\u00ebn \"T\u00eb tundim shishen\". Dometh\u00ebn\u00eb, tani mund t\u00eb mos programojm\u00eb, tani e r\u00ebnd\u00ebsishme \u00ebsht\u00eb t\u00eb dim\u00eb t\u00eb lexojm\u00eb stackoverflow. Dhe kam n\u00eb ekipin tim nj\u00eb person, profesionist, i cili punon me k\u00ebt\u00eb m\u00ebnyr\u00eb n\u00eb momentet kritike.<\/p>\n<p>\u00c7far\u00eb b\u00ebn ai? Shikon nj\u00eb gj\u00eb q\u00eb nuk funksionon, sheh stack trace, merr disa fjal\u00eb prej tij (cilat sakt\u00ebsisht \u2013 kjo \u00ebsht\u00eb ekspertiza e tij n\u00eb program), k\u00ebrkon n\u00eb google, gjen stackoverflow mes p\u00ebrgjigjeve. Pa lexuar, pa menduar, mes p\u00ebrgjigjeve p\u00ebr pyetjen \u2013 ai zgjedh di\u00e7ka q\u00eb i ngjan m\u00eb shum\u00eb propozimit \"t\u00eb b\u00ebjm\u00eb k\u00ebt\u00eb e at\u00eb\" (zgjidhja e nj\u00eb p\u00ebrgjigjeje \u2013 kjo \u00ebsht\u00eb talenti i tij, sepse nuk \u00ebsht\u00eb gjithmon\u00eb ajo p\u00ebrgjigje q\u00eb ka marr\u00eb m\u00eb shum\u00eb like), e aplikon, sheh: n\u00ebse di\u00e7ka ka ndryshuar, at\u00ebher\u00eb shk\u00eblqyer. N\u00ebse nuk ka ndryshuar \u2013 e rikthejm\u00eb. Dhe p\u00ebrs\u00ebrisim ekzekutimin-kontrollin-k\u00ebrkimin. Dhe me k\u00ebt\u00eb m\u00ebnyr\u00eb intuitiv ai arrin q\u00eb brenda nj\u00eb kohe, kodi t\u00eb funksionoj\u00eb. Ai nuk e di pse, nuk e di se \u00e7far\u00eb ka b\u00ebr\u00eb, nuk mund ta shpjegoj\u00eb. Por! Kjo gj\u00eb punon. Dhe \"zjarri \u00ebsht\u00eb shuar\". Tani po kuptojm\u00eb se \u00e7far\u00eb kemi b\u00ebr\u00eb. Kur programa funksionon \u2013 \u00ebsht\u00eb shum\u00eb m\u00eb e leht\u00eb. Dhe kursen ndjesh\u00ebm koh\u00ebn.<\/p>\n<p>Ky metod\u00eb shpjegohet shum\u00eb mir\u00eb me k\u00ebt\u00eb shembull.<\/p>\n<p>Dikur ka qen\u00eb shum\u00eb popullor t\u00eb nd\u00ebrtohen anije n\u00eb shishe. N\u00eb k\u00ebt\u00eb rast, anija \u00ebsht\u00eb e madhe dhe e brisht\u00eb, nd\u00ebrsa goja e shishes \u00ebsht\u00eb shum\u00eb e ngusht\u00eb, nuk mund t\u00eb futet brenda. Si t\u00eb nd\u00ebrtohet?<\/p>\n<p><img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/6c69e04080f1f0da81abf7a6a80510f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKa nj\u00eb metod\u00eb t\u00eb till\u00eb, shum\u00eb t\u00eb shpejt\u00eb dhe shum\u00eb efektive.<\/p>\n<p>Anija p\u00ebrb\u00ebhet nga shum\u00eb detaje: shkopinj, litar\u00eb, vela, ngjit\u00ebs. T\u00eb gjitha k\u00ebto i vendosim n\u00eb shishe.<br \/>\nE marrim shishen me dy duar, dhe fillojm\u00eb ta tundim. E tundim-tundim. Dhe zakonisht \u2013 del nj\u00eb gj\u00eb e \u00e7far\u00ebdoshme, sigurisht. Por ndonj\u00ebher\u00eb. Ndonj\u00ebher\u00eb del anija! M\u00eb sakt\u00eb, di\u00e7ka q\u00eb i ngjan anijes.<\/p>\n<p>Ne k\u00ebt\u00eb di\u00e7ka i tregojm\u00eb dikujt: \"Ser\u00ebga, e sheh!?\". Dhe me t\u00eb v\u00ebrtet\u00eb, nga larg \u2013 si duket anija. Por m\u00eb tej nuk duhet lejuar.<\/p>\n<p>Ka edhe nj\u00eb m\u00ebnyr\u00eb tjet\u00ebr. P\u00ebrdorim djem m\u00eb t\u00eb avancuar, si haker\u00eb.<\/p>\n<p>I kam dh\u00ebn\u00eb nj\u00eb detyr\u00eb nj\u00eb t\u00eb tilli, ai e b\u00ebri gjith\u00e7ka dhe iku. Dhe shikon \u2013 sikur \u00ebsht\u00eb b\u00ebr\u00eb. Por pas nj\u00eb kohe, kur duhet p\u00ebrmir\u00ebsuar kodi \u2013 at\u00ebher\u00eb fillon nj\u00eb kaos p\u00ebr shkak t\u00eb tij... Mir\u00eb se ai p\u00ebrfundoi t\u00eb ik\u00eb larg. K\u00ebta jan\u00eb djem t\u00eb till\u00eb, q\u00eb n\u00eb shembullin e shishes do t\u00eb b\u00ebjn\u00eb k\u00ebshtu: shihni, aty ku \u00ebsht\u00eb fundi \u2013 qelqi \u00ebsht\u00eb e deformuar. Dhe nuk \u00ebsht\u00eb krejt\u00ebsisht e qart\u00eb, a \u00ebsht\u00eb e tejdukshme apo jo. At\u00ebher\u00eb \"haker\u00ebt\" e presin k\u00ebt\u00eb fund, e fusin anijen brenda, fundin pastaj e ngjisin p\u00ebrs\u00ebri, dhe si duket k\u00ebshtu duhet.<\/p>\n<p>Nga pik\u00ebpamja e formulimit t\u00eb detyr\u00ebs duket se gjith\u00e7ka \u00ebsht\u00eb n\u00eb rregull. Por n\u00eb shembullin e anijeve: p\u00ebr \u00e7far\u00eb duhet t\u00eb nd\u00ebrtohet kjo anije, kujt i nevojitet ajo? Ajo nuk ka asnj\u00eb funksionalitet. Zakonisht k\u00ebto anije \u2013 jan\u00eb dhurata p\u00ebr njer\u00ebz shum\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm, q\u00eb e vendosin ato n\u00eb raftin e tyre lart, si nj\u00eb simbol, si nj\u00eb shenj\u00eb. Dhe n\u00ebse p\u00ebr nj\u00eb person t\u00eb till\u00eb, nj\u00eb drejtues biznesi t\u00eb madh ose nj\u00eb zyrtar t\u00eb lart\u00eb, si flamur do t\u00eb q\u00ebndroj\u00eb nj\u00eb gj\u00eb e till\u00eb e b\u00ebr\u00eb keq, ku i \u00ebsht\u00eb prer\u00eb qafa? Do t\u00eb ishte m\u00eb mir\u00eb t\u00eb mos e di kurr\u00eb p\u00ebr k\u00ebt\u00eb. Pra, si b\u00ebhen n\u00eb fund k\u00ebto anije, t\u00eb cilat mund t\u00eb dhurohen nj\u00eb personi t\u00eb r\u00ebnd\u00ebsish\u00ebm?<\/p>\n<p>Vendi i vet\u00ebm, ky \u00ebsht\u00eb nj\u00eb vend ky\u00e7 n\u00eb t\u00eb cilin nuk mund t\u00eb b\u00ebhet asgj\u00eb, \u00ebsht\u00eb korniza. Dhe trupi i anijes kalon p\u00ebrmes qaf\u00ebs. Nd\u00ebrsa anija montohen jasht\u00eb shishe. Por nuk \u00ebsht\u00eb e thjesht\u00eb t\u00eb montosh anijen, \u00ebsht\u00eb nj\u00eb art delikat. Nj\u00eb mekaniz\u00ebm special shtohet n\u00eb pjes\u00ebt, i cili i lejon ato t\u00eb ngrihen m\u00eb von\u00eb. P\u00ebr shembull, vela mblidhen me kujdes dhe futen brenda, dhe pastaj me pinc\u00eb ato ngrihen me precizitet dhe kujdes. N\u00eb fund, prodhohet nj\u00eb vep\u00ebr arti q\u00eb mund t\u00eb dhurohet me krenari dhe past\u00ebrti.<\/p>\n<p>Dhe n\u00ebse duam q\u00eb projekti t\u00eb jet\u00eb i suksessh\u00ebm \u2013 n\u00eb ekip duhet t\u00eb ket\u00eb t\u00eb pakt\u00ebn nj\u00eb njeri-artizan. Ai, i cili kujdeset p\u00ebr cil\u00ebsin\u00eb e produktit dhe merr parasysh t\u00eb gjitha aspektet, pa sakrifikuar asgj\u00eb, madje as n\u00eb momentet e stresit, kur rrethanat k\u00ebrkojn\u00eb t\u00eb b\u00ebjm\u00eb di\u00e7ka me ngut n\u00eb d\u00ebm t\u00eb asaj q\u00eb \u00ebsht\u00eb e r\u00ebnd\u00ebsishme. T\u00eb gjitha projektet e suksesshme, t\u00eb cilat jan\u00eb t\u00eb q\u00ebndrueshme, t\u00eb cilat kan\u00eb kaluar prov\u00ebn e koh\u00ebs, jan\u00eb nd\u00ebrtuar mbi k\u00ebt\u00eb parim. Ato kan\u00eb di\u00e7ka shum\u00eb t\u00eb sakt\u00eb dhe unike, di\u00e7ka q\u00eb p\u00ebrdor t\u00eb gjitha mund\u00ebsit\u00eb e disponueshme. N\u00eb shembullin e anijes n\u00eb shishe \u2013 p\u00ebrshkruhet se trupi i anijes kalon p\u00ebrmes qaf\u00ebs.<\/p>\n<p>Duke u kthyer te detyra e zgjedhjes s\u00eb serverit ton\u00eb t\u00eb keq-katalogjimit, si mund t\u00eb aplikohej ky metod\u00eb? Un\u00eb propozoj nj\u00eb variant zgjedhjeje nga t\u00eb gjitha sistemet q\u00eb ekzistojn\u00eb \u2013 mos e tundni shishen, mos zgjidhni, por shihni se \u00e7far\u00eb ka brenda dhe ku duhet t\u00eb japim v\u00ebmendjen kur zgjidhim sistemin.<\/p>\n<h2>Ku t\u00eb k\u00ebrkojm\u00eb ngushtic\u00ebn<\/h2>\n<p>\nLe t\u00eb p\u00ebrpiqemi t\u00eb mos e tundim shishen, t\u00eb mos shqyhej gjith\u00e7ka nj\u00eb nga nj\u00eb, por t\u00eb shohim se cilat probleme do t\u00eb shfaqen, n\u00ebse ndonj\u00ebher\u00eb, p\u00ebr detyr\u00ebn ton\u00eb \u2013 t\u00eb projektojm\u00eb nj\u00eb sistem t\u00eb till\u00eb vet\u00eb. Sigurisht, nuk do t\u00eb ndihmojm\u00eb p\u00ebr t\u00eb nd\u00ebrtuar nj\u00eb bi\u00e7iklet\u00eb, por do t\u00eb p\u00ebrdorim k\u00ebt\u00eb skem\u00eb p\u00ebr t\u00eb orientuar n\u00eb \u00e7far\u00eb t\u00eb dh\u00ebnash t\u00eb fokusohemi n\u00eb p\u00ebrshkrimet e produkteve. Le t\u00eb skicojm\u00eb nj\u00eb skem\u00eb t\u00eb till\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/f2c36d07383d778e60b2f800749012ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nN\u00ebse sistemi \u00ebsht\u00eb i shp\u00ebrndar\u00eb, do t\u00eb kemi disa servera (6). Le t\u00eb themi kat\u00ebr (\u00ebsht\u00eb e leht\u00eb t'i vendosim n\u00eb imazh, por, natyrisht, ata mund t\u00eb jen\u00eb sa t\u00eb doj\u00eb). N\u00ebse serverat jan\u00eb n\u00eb nyje t\u00eb ndryshme, do t\u00eb ket\u00eb ndonj\u00eb kod q\u00eb ndryshon p\u00ebr t\u00eb b\u00ebr\u00eb q\u00eb k\u00ebto nyje t\u00eb formojn\u00eb nj\u00eb grup dhe n\u00eb rast ndarjeje \u2013 t\u00eb lidhin dhe t\u00eb njohin nj\u00ebri-tjetrin.<\/p>\n<p>Gjithashtu na nevojitet logjika e kodit (2), e cila merret me keq-katalogjimin. Me k\u00ebt\u00eb kod, disa klient\u00eb nd\u00ebrveprojn\u00eb p\u00ebrmes nj\u00eb API. Kodi klientit (1) mund t\u00eb jet\u00eb ose brenda k\u00ebsaj JVM, ose t\u00eb lidhet p\u00ebrmes rrjetit. Logjika, e implementuar brenda \u2013 ka vendime p\u00ebr cilat objekte do t\u00eb mbahen n\u00eb memorie, cilat do t\u00eb hidhen. P\u00ebr t\u00eb ruajtur cache-in, p\u00ebrdorim memorien (3), por n\u00ebse \u00ebsht\u00eb e nevojshme, nj\u00eb pjes\u00eb e t\u00eb dh\u00ebnave mund t\u00eb ruhet gjithashtu n\u00eb disk (4).<\/p>\n<p>Le t\u00eb shohim n\u00eb cilat pjes\u00eb do t\u00eb ndodh\u00eb ngarkesa. N\u00eb t\u00eb v\u00ebrtet\u00eb, \u00e7do shigjet\u00eb dhe \u00e7do nyje do t\u00eb ngarkohen. S\u00eb pari, midis kodit t\u00eb klientit dhe API-s\u00eb, n\u00ebse \u00ebsht\u00eb nd\u00ebrveprimi n\u00eb rrjet, r\u00ebnia mund t\u00eb jet\u00eb mjaft e dukshme. S\u00eb dyti, brenda vet\u00eb API-s\u00eb \u2013 duke u p\u00ebrpjekur shum\u00eb me logjik\u00ebn e komplikuar, mund t\u00eb bllokohemi n\u00eb CPU. Dhe do t\u00eb ishte mir\u00eb q\u00eb logjika t\u00eb mos e menaxhoj\u00eb memorien m\u00eb tep\u00ebr se sa \u00ebsht\u00eb e nevojshme. Dhe nd\u00ebrlidhja me sistemin e skedar\u00ebve mbetet \u2013 n\u00eb rast t\u00eb zakonsh\u00ebm, kjo do t\u00eb thot\u00eb t\u00eb serializohem \/ t\u00eb rikuperohet dhe t\u00eb shkruhet \/ t\u00eb lexohen.<\/p>\n<p>M\u00eb pas, nd\u00ebrveprimi me grupin. Ka shum\u00eb mund\u00ebsi q\u00eb ai t\u00eb jet\u00eb n\u00eb k\u00ebt\u00eb sistem, por mund t\u00eb jet\u00eb edhe ndaras. K\u00ebtu gjithashtu duhet marr\u00eb parasysh kalimi i t\u00eb dh\u00ebnave p\u00ebr t\u00eb, shpejt\u00ebsia e serializimit t\u00eb t\u00eb dh\u00ebnave dhe nd\u00ebrveprimi midis grupit.<\/p>\n<p>Tani, nga nj\u00ebra an\u00eb \u2013 mund t\u00eb paraqesim \"cila ingranazhe do t\u00eb l\u00ebvizin\" n\u00eb sistemin e keq-katalogjimit gjat\u00eb p\u00ebrpunimit t\u00eb k\u00ebrkesave nga kodi yn\u00eb, dhe nga ana tjet\u00ebr \u2013 mund t\u00eb parashikojm\u00eb se \u00e7far\u00eb lloj dhe sa k\u00ebrkesa do t\u00eb gjeneroj\u00eb kodi yn\u00eb p\u00ebr k\u00ebt\u00eb sistem. Kjo \u00ebsht\u00eb e mjaftueshme p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb zgjedhje m\u00eb shum\u00eb ose m\u00eb pak t\u00eb arsyeshme \u2013 p\u00ebr t\u00eb p\u00ebrzgjedhur sistemin sipas rastit ton\u00eb t\u00eb p\u00ebrdorimit.<\/p>\n<p><b>Hazelcast<\/b><\/p>\n<p>Le t\u00eb shohim si mund ta aplikojm\u00eb k\u00ebt\u00eb ndarje n\u00eb list\u00ebn ton\u00eb. p\u00ebr shembull, Hazelcast.<\/p>\n<p>P\u00ebr t\u00eb vendosur \/ marr\u00eb t\u00eb dh\u00ebnat nga Hazelcast, kodi i klientit i referohet (1) API-s\u00eb. Hz lejon t\u00eb ekzekutohet serveri si embedded, dhe n\u00eb k\u00ebt\u00eb rast referimi ndaj API-s\u00eb \u00ebsht\u00eb nj\u00eb thirrje metodu brenda JVM, mund t\u00eb konsiderohet pa kosto.<\/p>\n<p>P\u00ebr t\u00eb punuar logjika n\u00eb (2), Hz mb\u00ebshtetet n\u00eb hashin e vargje t\u00eb bajtave t\u00eb serializuar t\u00eb \u00e7el\u00ebsit \u2013 do t\u00eb thot\u00eb, serializimi i \u00e7el\u00ebsit do t\u00eb ndodh\u00eb me \u00e7do rast. Ky \u00ebsht\u00eb nj\u00eb overhead i pashmangsh\u00ebm p\u00ebr Hz.<br \/>\nStrategjit\u00eb e Eviction-it jan\u00eb implementuar mir\u00eb, por p\u00ebr raste t\u00eb ve\u00e7anta \u2013 mund t\u00eb aktivizohen t\u00eb tuat. P\u00ebr k\u00ebt\u00eb pjes\u00eb nuk ka nevoj\u00eb t\u00eb shqet\u00ebsohesh.<\/p>\n<p>Ruajtja (4) mund t\u00eb conectohet. Shk\u00eblqyer. Interaksioni (5) p\u00ebr embedded mund t\u00eb konsiderohet momental. Shk\u00ebmbimi i t\u00eb dh\u00ebnave midis nyjave n\u00eb klas\u00ebr (6) \u2013 po, ai ekziston. Kjo \u00ebsht\u00eb nj\u00eb kontribut p\u00ebr q\u00ebndrueshm\u00ebrin\u00eb n\u00eb kosto t\u00eb shpejt\u00ebsis\u00eb. \u00c7mimin e ul n\u00ebp\u00ebrmjet Hz-funksionit Near-cache \u2013 t\u00eb dh\u00ebnat e marra nga nyjat e tjera t\u00eb klasr\u00ebs do t\u00eb ruhen n\u00eb cache.<\/p>\n<p>\u00c7far\u00eb mund t\u00eb b\u00ebhet n\u00eb k\u00ebto kushte p\u00ebr t\u00eb rritur shpejt\u00ebsin\u00eb?<\/p>\n<p>P\u00ebr shembull, p\u00ebr t\u00eb shmangur serializimin e \u00e7el\u00ebsit n\u00eb (2) \u2013 mbi Hazelcast mund t\u00eb vendoset nj\u00eb cache tjet\u00ebr, p\u00ebr t\u00eb dh\u00ebnat m\u00eb t\u00eb nxehta. N\u00eb Sportmaster p\u00ebr k\u00ebt\u00eb q\u00ebllim u zgjodh Caffeine.<\/p>\n<p>P\u00ebr p\u00ebrmir\u00ebsim n\u00eb nivelin (6), n\u00eb Hz jan\u00eb ofruar dy lloje ruajtjeje: IMap dhe ReplicatedMap.<br \/>\n<img decoding=\"async\" alt=\"Si zgjodh\u00ebm sistemin e keqazhur n\u00eb Sportmaster. Pjesa 1\" src=\"\/wp-content\/uploads\/2020\/03\/ce752c9a0f46609add8de8644a7ad17f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nDuhet t\u00eb themi si Hazelcast hyri n\u00eb grumbullin e teknologjive t\u00eb Sportmaster.<\/p>\n<p>N\u00eb vitin 2012, kur ne punonim mbi pilotin e par\u00eb t\u00eb faqes s\u00eb internetit t\u00eb ardhsh\u00ebm, pik\u00ebrisht Hazelcast ishte lidhja e par\u00eb q\u00eb ofroi motorri i k\u00ebrkimit. Njohja filloi \"nga hera e par\u00eb\" \u2013 na mahniti se brenda dy or\u00ebve, kur e lidhem Hz n\u00eb sistem \u2013 ai funksiononte. Dhe funksiononte mir\u00eb. Deri n\u00eb fund t\u00eb dit\u00ebs p\u00ebrfunduan disa teste, u g\u00ebzuam. Dhe kjo rezerv\u00eb g\u00ebzimi na mjaftoi p\u00ebr t\u00eb kaluar ato surpriza q\u00eb Hz na ofroi me kalimin e koh\u00ebs. Tani ekipi i Sportmaster nuk ka arsye p\u00ebr t\u00eb hequr dor\u00eb nga Hazelcast.<\/p>\n<p>Por argumente t\u00eb tilla si \"lidhja e par\u00eb n\u00eb motorin e k\u00ebrkimit\" dhe \"mbi shpejt\u00eb p\u00ebr t\u00eb krijuar HelloWorld\" \u2013 kjo, natyrisht, \u00ebsht\u00eb nj\u00eb p\u00ebrjashtim dhe ve\u00e7ori e momentit n\u00eb t\u00eb cilin ndodhi zgjedhja. Sfidat e v\u00ebrteta p\u00ebr sistemin e zgjedhur fillojn\u00eb me kalimin n\u00eb prodhim, dhe pik\u00ebrisht n\u00eb k\u00ebt\u00eb faz\u00eb duhet t\u00eb jepet v\u00ebmendje kur zgjidhni \u00e7do sistem, p\u00ebrfshir\u00eb dhe cache-in. N\u00eb thelb, n\u00eb rastin ton\u00eb mund t\u00eb thuhet se zgjodh\u00ebm Hazelcast rast\u00ebsisht, por pastaj doli se e zgjodh\u00ebm si\u00e7 duhet.<\/p>\n<p>P\u00ebr prodhimin shum\u00eb \u00ebsht\u00eb m\u00eb e r\u00ebnd\u00ebsishme: monitorimi, trajtimi i gabimeve n\u00eb nyjat e ve\u00e7anta, replikimi i t\u00eb dh\u00ebnave, kostoja e shkall\u00ebzimit. Pra, \u00ebsht\u00eb e nevojshme t\u00eb jepet v\u00ebmendje ndaj detyrave q\u00eb do t\u00eb lindin pik\u00ebrisht gjat\u00eb mb\u00ebshtetjes s\u00eb sistemit \u2013 kur ngarkesa do t\u00eb kaloj\u00eb me dhjet\u00ebra her\u00eb at\u00eb q\u00eb \u00ebsht\u00eb planifikuar, kur t\u00eb ngarkohet ndonj\u00eb gj\u00eb e gabuar dhe n\u00eb vendin e gabuar, kur do t\u00eb nevojitet t\u00eb deploy nj\u00eb version t\u00eb ri t\u00eb kodit, t\u00eb z\u00ebvend\u00ebsohet t\u00eb dh\u00ebnat dhe t\u00eb b\u00ebhet kjo pa u v\u00ebn\u00eb re nga klient\u00ebt.<\/p>\n<p>P\u00ebr t\u00eb gjitha k\u00ebto k\u00ebrkesa, Hazelcast, padyshim, p\u00ebrshtatet.<\/p>\n<h2>T\u00eb vazhdojm\u00eb<\/h2>\n<p>\nPor Hazelcast \u2013 nuk \u00ebsht\u00eb nj\u00eb panacee. N\u00eb vitin 2017 ne zgjodh\u00ebm Hazelcast p\u00ebr cache n\u00eb admin panel, thjesht duke u mb\u00ebshtetur n\u00eb p\u00ebrshtypjet e mira nga eksperienca e kaluar. Kjo luajti nj\u00eb rol kryesor n\u00eb nj\u00eb shaka t\u00eb keqe, p\u00ebr shkak t\u00eb s\u00eb cil\u00ebs ne u gjend\u00ebm n\u00eb nj\u00eb situat\u00eb t\u00eb komplikuar dhe \"heroikisht\" dol\u00ebm nga ajo p\u00ebr 60 dit\u00eb. Por p\u00ebr k\u00ebt\u00eb, n\u00eb pjes\u00ebn tjet\u00ebr.<\/p>\n<p>Dhe p\u00ebr tani\u2026 G\u00ebzuar Kod t\u00eb Ri!<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sportmaster_lab\/blog\/490912\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u0441\u0430\u0439\u0442\u043e\u043c \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440 \u0432 2012 \u0433\u043e\u0434\u0443, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u044b \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u00ab\u043f\u0440\u043e\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u00bb \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043c\u044b\u0441\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u044e\u0436\u0435\u0442\u043e\u043c \u2013 \u0432\u044b\u0431\u043e\u0440 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f java-\u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0441\u0430\u0439\u0442\u0430. \u042d\u0442\u043e\u0442 \u0441\u044e\u0436\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":73950,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-73949","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=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\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-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1\" \/>\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 \u043c\u044b \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1\" \/>\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-03-12T23:42:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-12T23:42:07+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 zgjodh\u00ebm sistemin e caching n\u00eb Sportmaster. Pjesa 1 | ProHoster","description":"P\u00ebrsh\u00ebndetje! M\u00eb quajn\u00eb Aleksei Pjankov, un\u00eb jam zhvillues n\u00eb kompanin\u00eb Sportmaster.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1","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 \u043c\u044b \u0432 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u041f\u044c\u044f\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0421\u043f\u043e\u0440\u0442\u043c\u0430\u0441\u0442\u0435\u0440.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-my-v-sportmastere-vybirali-sistemu-keshirovaniya-chast-1","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-03-12T23:42:07+00:00","article:modified_time":"2020-03-12T23:42:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"73949","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 18:23:51","updated":"2022-09-28 05:05:57","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\/73949","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=73949"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/73949\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/73950"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=73949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=73949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=73949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}