{"id":71858,"date":"2020-02-28T21:00:08","date_gmt":"2020-02-28T18:00:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/patterny-hraneniya-dannyh-v-kubernetes"},"modified":"2020-03-03T16:14:09","modified_gmt":"2020-03-03T13:14:09","slug":"patterny-hraneniya-dannyh-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\"><img decoding=\"async\" alt=\"Modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nP\u00ebrsh\u00ebndetje, Habr!<\/p>\n<p>Ju kujtojm\u00eb se kemi publikuar nj\u00eb lib\u00ebr tjet\u00ebr jasht\u00ebzakonisht interesant dhe t\u00eb dobish\u00ebm <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">libri<\/a><\/noindex> p\u00ebr modelet Kubernetes. I gjith\u00eb kjo filloi me \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Modele<\/a><\/noindex>\" t\u00eb Brendan Burns, dhe megjithat\u00eb, puna n\u00eb k\u00ebt\u00eb segment \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">e ngjeshur<\/a><\/noindex>. Sot, ne ju ofrojm\u00eb t\u00eb lexoni nj\u00eb artikull nga blogu MinIO, q\u00eb p\u00ebrmbledh tendencat dhe specifikat e modeleve t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes ka ndryshuar thelb\u00ebsisht modelet tradicionale t\u00eb zhvillimit dhe implementimit t\u00eb aplikacioneve. Tani ekipi mund t\u00eb marr\u00eb vet\u00ebm disa dit\u00eb p\u00ebr zhvillimin, testimin dhe implementimin e aplikacionit \u2013 n\u00eb ambientet e ndryshme, dhe t\u00eb gjitha k\u00ebto brenda klaster\u00ebve Kubernetes. Nj\u00eb pun\u00eb me teknologjit\u00eb e brezit t\u00eb kaluar zakonisht merrte jav\u00eb t\u00eb t\u00ebra, po jo muaj.<\/p>\n<p>Ky p\u00ebrshpejtim \u00ebsht\u00eb b\u00ebr\u00eb i mundur fal\u00eb abstraksionit q\u00eb ofron Kubernetes - dometh\u00ebn\u00eb, fal\u00eb faktit se Kubernetes vet\u00eb merr p\u00ebrsip\u00ebr nd\u00ebrveprimin me detajet e ul\u00ebta t\u00eb makinave fizike ose virtuale, duke lejuar p\u00ebrdoruesit t\u00eb shpallin nd\u00ebr t\u00eb tjera procesorin e duhur, sasin\u00eb e nevojshme t\u00eb memories, dhe numrin e ekzemplar\u00ebve t\u00eb kontejner\u00ebve. Si\u00e7 mb\u00ebshtetet Kubernetes nga nj\u00eb komunitet i madh, dhe si p\u00ebrdorimi i Kubernetes vazhdon t\u00eb zgjerrohet, ai \u00ebsht\u00eb me nj\u00eb diferenc\u00eb t\u00eb madhe lider mes t\u00eb gjitha platformave t\u00eb orkestrimit t\u00eb kontejner\u00ebve.<\/p>\n<p><i><b>Me zgjerimin e p\u00ebrdorimit t\u00eb Kubernetes, rritet gjithashtu konfuzioni rreth modeleve t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave q\u00eb p\u00ebrdoren n\u00eb t\u00eb.<\/b><\/i>.<\/p>\n<p>Me gjith\u00eb konkurrenc\u00ebn p\u00ebr nj\u00eb cop\u00eb nga torta Kubernetes (at\u00eb q\u00eb p\u00ebrfshin ruajtjen e t\u00eb dh\u00ebnave), kur diskutohet p\u00ebr ruajtjen e t\u00eb dh\u00ebnave, sinjali k\u00ebtu humbet n\u00eb nj\u00eb zhurm\u00eb t\u00eb madhe.<br \/>\nKubernetes p\u00ebrmbush modelin modern t\u00eb zhvillimit dhe implementimit t\u00eb aplikacioneve, si dhe menaxhimin e tyre. Ky model modern t\u00ebrheq ruajtjen e t\u00eb dh\u00ebnave nga llogaritjet. P\u00ebr t\u00eb kuptuar plot\u00ebsisht k\u00ebt\u00eb shk\u00ebputje n\u00eb kontekstin e Kubernetes, \u00ebsht\u00eb gjithashtu e nevojshme t\u00eb kuptohet se \u00e7far\u00eb jan\u00eb aplikacionet q\u00eb punojn\u00eb me ruajtje t\u00eb gjendjes dhe ato q\u00eb punojn\u00eb pa ruajtje t\u00eb gjendjes, si dhe si p\u00ebrshtatet ruajtja e t\u00eb dh\u00ebnave me k\u00ebt\u00eb. K\u00ebtu, qasja e REST API, e p\u00ebrdorur nga S3, ka avantazhe t\u00eb dukshme krahasuar me qasjen POSIX\/CSI, karakteristike p\u00ebr zgjidhje t\u00eb tjera.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull, ne do t\u00eb flasim p\u00ebr modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes dhe do t\u00eb shqyrtojm\u00eb ndar\u00eb debatin rreth aplikacioneve q\u00eb punojn\u00eb me gjendje dhe pa gjendje, p\u00ebr t\u00eb kuptuar mir\u00eb se \u00e7far\u00eb e ndan ato dhe pse kjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme. N\u00eb vazhdim do t\u00eb shqyrtojm\u00eb aplikacionet dhe modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave q\u00eb p\u00ebrdoren n\u00eb to n\u00eb drit\u00ebn e praktikave m\u00eb t\u00eb mira t\u00eb pun\u00ebs me kontejner\u00eb dhe Kubernetes.<\/p>\n<h4>Kontejner\u00ebt pa gjendje<\/h4>\n<p>\nKontejner\u00ebt p\u00ebr natyr\u00ebn e tyre jan\u00eb t\u00eb leht\u00eb dhe efemer\u00eb. Ata mund t\u00eb ndalen, fshihen ose implementohen leht\u00ebsisht n\u00eb nj\u00eb nod tjet\u00ebr - p\u00ebr t\u00eb gjitha k\u00ebto nevojiten vet\u00ebm disa sekonda. N\u00eb nj\u00eb sistem t\u00eb madh t\u00eb orkestrimit t\u00eb kontejner\u00ebve, k\u00ebto operacione ndodhin vazhdimisht, dhe p\u00ebrdoruesit madje nuk e ndiejn\u00eb k\u00ebt\u00eb ndryshim. Megjithat\u00eb, l\u00ebvizjet jan\u00eb t\u00eb mundshme vet\u00ebm n\u00ebse konteineri nuk ka asnj\u00eb var\u00ebsi nga nodeli ku ndodhet. P\u00ebr k\u00ebta kontejner\u00eb, thuhet se ata punojn\u00eb <i>pa gjendje<\/i>.<\/p>\n<h4>Kontejner\u00ebt me gjendje<\/h4>\n<p>\nN\u00ebse konteineri ruan t\u00eb dh\u00ebna n\u00eb pajisje t\u00eb lidhura lokalisht (ose n\u00eb nj\u00eb pajisje bllokuese), at\u00ebher\u00eb ruajtja e t\u00eb dh\u00ebnave ku ndodhet duhen l\u00ebvizur n\u00eb nj\u00eb nod t\u00eb ri s\u00eb bashku me vet\u00eb konteinerin - n\u00eb rast se ka nj\u00eb d\u00ebshtim. Kjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme, pasi n\u00eb t\u00eb kund\u00ebrt, aplikacioni q\u00eb funksionon n\u00eb konteiner nuk do t\u00eb mund t\u00eb funksionoj\u00eb si\u00e7 duhet, pasi i duhet t\u00eb aksesoj\u00eb t\u00eb dh\u00ebnat e ruajtura n\u00eb pajisjet lokale. P\u00ebr k\u00ebta kontejner\u00eb, thuhet se ata punojn\u00eb <i>me gjendje<\/i>.<\/p>\n<p>Nga nj\u00eb pik\u00ebpamje t\u00eb past\u00ebr teknike, kontejner\u00ebt me gjendje gjithashtu mund t\u00eb l\u00ebvizin n\u00eb nod t\u00eb tjera. Zakonisht, kjo sigurohet p\u00ebrmes sistemeve t\u00eb skedave t\u00eb shp\u00ebrndara ose ruajtesve t\u00eb rrjetit t\u00eb bllokut q\u00eb jan\u00eb t\u00eb lidhura me t\u00eb gjitha nodet ku funksionojn\u00eb kontejner\u00eb. K\u00ebshtu, kontejner\u00ebt kan\u00eb akses n\u00eb volumin p\u00ebr ruajtjen e t\u00eb dh\u00ebnave t\u00eb q\u00ebndrueshme, dhe informacioni ruhet n\u00eb disqe q\u00eb ndodhen n\u00eb t\u00eb gjith\u00eb rrjetin. Ky metod do ta quaj \"<i>afro-kontejner me gjendje<\/i>\", dhe n\u00eb pjes\u00ebn tjet\u00ebr t\u00eb artikullit do ta em\u00ebrtoj k\u00ebshtu p\u00ebr q\u00ebllime t\u00eb nj\u00ebllojt\u00ebsis\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb qasjen tipike t\u00eb konteiner\u00ebve me gjendje, t\u00eb gjitha podet e aplikacioneve lidhen me nj\u00eb sistem skedash t\u00eb shp\u00ebrndar\u00eb - k\u00ebshtu krijohet nj\u00eb lloj ruajtjeje t\u00eb ndar\u00eb, ku ndodhen t\u00eb gjith\u00eb t\u00eb dh\u00ebnat e aplikacioneve. Edhe pse jan\u00eb t\u00eb mundshme disa variacione, kjo \u00ebsht\u00eb nj\u00eb qasje me nivel t\u00eb lart\u00eb.<\/p>\n<p>S\u00eb tanishme, le t\u00eb kuptojm\u00eb pse qasja e kontejner\u00ebve me ruajtje t\u00eb q\u00ebndrueshme n\u00eb bot\u00ebn e orientuar nga re \u00ebsht\u00eb nj\u00eb antipatrone.<\/p>\n<h4>Projektimi i aplikacioneve t\u00eb orientuara nga re<\/h4>\n<p>\nTradicionalisht, aplikacionet kan\u00eb p\u00ebrdorur baza t\u00eb dh\u00ebnash p\u00ebr ruajtjen e strukturuar t\u00eb informacionit dhe diske lokale ose sisteme t\u00eb shp\u00ebrndara t\u00eb skedar\u00ebve ku derdhen t\u00eb gjitha t\u00eb dh\u00ebnat e pa strukturuara ose madje edhe gjysm\u00eb t\u00eb strukturuara. Nd\u00ebrsa volumet e t\u00eb dh\u00ebnave t\u00eb pa strukturuara rriteshin, zhvilluesit kuptuan se POSIX ishte tep\u00ebr \"flas\u00ebs\", p\u00ebrcaktonte kosto t\u00eb konsiderueshme dhe, p\u00ebrfundimisht, pengonte funksionimin e aplikacionit kur kalonte n\u00eb shkall\u00eb t\u00eb v\u00ebrtet\u00eb t\u00eb madhe.<\/p>\n<p>Kjo kryesisht \u00e7oi n\u00eb shfaqjen e nj\u00eb standardi t\u00eb ri p\u00ebr ruajtjen e t\u00eb dh\u00ebnave, pra, depozita t\u00eb orientuara nga re q\u00eb funksionojn\u00eb kryesisht n\u00eb baz\u00eb t\u00eb REST API dhe \u00e7lirojn\u00eb aplikacionin nga ngarkesa e mir\u00ebmbajtjes s\u00eb ruajtjes lokale t\u00eb t\u00eb dh\u00ebnave. N\u00eb k\u00ebt\u00eb rast, aplikacioni n\u00eb fakt kalon n\u00eb nj\u00eb gjendje pune pa ruajtje t\u00eb q\u00ebndrueshme (pasi gjendja ndodhet n\u00eb nj\u00eb depo t\u00eb larg\u00ebt). Aplikacionet moderne nd\u00ebrtohen nga e para duke marr\u00eb parasysh k\u00ebt\u00eb faktor. Si rregull, \u00e7do aplikacion modern q\u00eb p\u00ebrpunon t\u00eb dh\u00ebna t\u00eb \u00e7far\u00ebdo lloji (log, metadata, blob dhe t\u00eb tjera) \u00ebsht\u00eb nd\u00ebrtuar sipas paradigm\u00ebs s\u00eb orientuar nga re, ku gjendja \u00ebsht\u00eb transferuar n\u00eb nj\u00eb sistem t\u00eb softuerit t\u00eb dedikuar p\u00ebr ruajtjen e saj. <\/p>\n<p><i><b>Qasja e kontejner\u00ebve me ruajtje t\u00eb q\u00ebndrueshme e shtyn t\u00eb gjith\u00eb k\u00ebt\u00eb paradigm\u00eb t\u00eb rikthehet pik\u00ebrisht aty ku nisi! <\/b><\/i><\/p>\n<p>Kur p\u00ebrdoren nd\u00ebrfaqet POSIX p\u00ebr ruajtjen e t\u00eb dh\u00ebnave, aplikacionet funksionojn\u00eb ashtu si\u00e7 do t\u00eb b\u00ebnin n\u00ebse do t\u00eb ruanin gjendjen, dhe p\u00ebr k\u00ebt\u00eb arsye ato largohen nga parimet m\u00eb t\u00eb r\u00ebnd\u00ebsishme t\u00eb projektimit t\u00eb orientuar nga re, pra, nga mund\u00ebsia p\u00ebr t\u00eb ndryshuar dimensionet e flukseve t\u00eb pun\u00ebs t\u00eb aplikacionit n\u00eb var\u00ebsi t\u00eb ngarkes\u00ebs hyr\u00ebse, p\u00ebr t\u00eb kaluar n\u00eb nj\u00eb nyje t\u00eb re, sapo nyja aktuale d\u00ebshtoj\u00eb, dhe k\u00ebshtu me radh\u00eb.<\/p>\n<p>Duke e shqyrtuar k\u00ebt\u00eb situat\u00eb m\u00eb me kujdes, zbuloni se kur zgjidhni nj\u00eb depo t\u00eb dh\u00ebnash, p\u00ebrs\u00ebri dhe p\u00ebrs\u00ebri ndodhemi p\u00ebrball\u00eb dilem\u00ebs \"POSIX kund\u00ebr REST API\", POR me nj\u00eb p\u00ebrkeq\u00ebsim t\u00eb shtuar t\u00eb problemeve POSIX, t\u00eb shkaktuara nga natyra e shp\u00ebrndar\u00eb e ambienteve Kubernetes. N\u00eb ve\u00e7anti,<\/p>\n<ul>\n<li><b>POSIX \u00ebsht\u00eb flas\u00ebs<\/b>: semantika e POSIX k\u00ebrkon t\u00eb asocioj\u00eb \u00e7do operacion me metadatat dhe deskriptor\u00ebt e skedar\u00ebve, t\u00eb cil\u00ebt ndihmojn\u00eb n\u00eb ruajtjen e gjendjes s\u00eb operacionit. Kjo \u00e7on n\u00eb kosto t\u00eb konsiderueshme, q\u00eb nuk kan\u00eb asnj\u00eb vler\u00eb reale. API p\u00ebr ruajtjen e objekteve, n\u00eb ve\u00e7anti, S3 API, e ka eliminuar k\u00ebt\u00eb k\u00ebrkes\u00eb, duke lejuar q\u00eb aplikacioni t\u00eb punoj\u00eb dhe pastaj \"t\u00eb harroj\u00eb\" thirrjen. Reagimi i sistemit t\u00eb ruajtjes tregon n\u00ebse kjo veprim \u00ebsht\u00eb kryer me sukses apo jo. N\u00eb rast d\u00ebshtimi, aplikacioni mund t\u00eb provoj\u00eb p\u00ebrs\u00ebri.<\/li>\n<li><b>Kufizimet e rrjetit<\/b>: N\u00eb nj\u00eb sistem t\u00eb shp\u00ebrndar\u00eb supozohet se mund t\u00eb ket\u00eb shum\u00eb aplikacione q\u00eb p\u00ebrpiqen t\u00eb shkruajn\u00eb t\u00eb dh\u00ebna n\u00eb nj\u00eb mbajt\u00ebs t\u00eb ngjitur. Pra, p\u00ebrve\u00e7 faktit se aplikacionet do t\u00eb konkurrojn\u00eb me nj\u00ebra-tjetr\u00ebn p\u00ebr band\u00eb (p\u00ebr t\u00eb d\u00ebrguar t\u00eb dh\u00ebna n\u00eb mbajt\u00ebs), vet\u00eb sistemi i ruajtjes do t\u00eb jet\u00eb n\u00eb gar\u00eb p\u00ebr k\u00ebt\u00eb band\u00eb, duke shp\u00ebrndar\u00eb t\u00eb dh\u00ebna n\u00eb disk\u00ebt fizik\u00eb. P\u00ebr shkak t\u00eb flas\u00ebsis\u00eb s\u00eb POSIX, numri i thirrjeve n\u00eb rrjet rritet disa her\u00eb. Nga ana tjet\u00ebr, S3 API ofron nj\u00eb ndarje t\u00eb qart\u00eb t\u00eb thirrjeve t\u00eb rrjetit mes atyre q\u00eb vijn\u00eb nga klienti n\u00eb server, dhe atyre q\u00eb ndodhin brenda serverit.<\/li>\n<li><b>Siguria<\/b>: Modeli i siguris\u00eb s\u00eb POSIX \u00ebsht\u00eb i dizajnuar p\u00ebr p\u00ebrfshirjen aktive t\u00eb njeriut: administrator\u00ebt konfigurojn\u00eb nivelet specifike t\u00eb aksesit p\u00ebr \u00e7do p\u00ebrdorues apo grup. Kjo paradigm\u00eb \u00ebsht\u00eb e v\u00ebshtir\u00eb p\u00ebr t'u adaptuar n\u00eb bot\u00ebn e orientuar nga re. Aplikacionet moderne varen nga modelet e siguris\u00eb q\u00eb lidhen me API-t\u00eb, ku t\u00eb drejtat e aksesit p\u00ebrcaktohen si nj\u00eb grup politikash, krijohen llogari sh\u00ebrbimi, kredenciale t\u00eb p\u00ebrkohshme etj.<\/li>\n<li><b>Menaxhimi<\/b>: Kontejner\u00ebt me ruajtje t\u00eb q\u00ebndrueshme sjellin disa kosto t\u00eb lidhura me menaxhimin. K\u00ebtu flasim p\u00ebr sinkronizimin e aksesit paralel n\u00eb t\u00eb dh\u00ebna, p\u00ebr sigurimin e konsistenc\u00ebs s\u00eb t\u00eb dh\u00ebnave, gjith\u00e7ka k\u00ebrkon t\u00eb peshojm\u00eb me kujdes se cilat modele t\u00eb aksesit t\u00eb dh\u00ebnash do t\u00eb p\u00ebrdoren. Duhet t\u00eb instalohen, kontrollohen dhe konfigurohen programe t\u00eb tjera, pa p\u00ebrmendur p\u00ebrpjekjet e shtura q\u00eb shpenzohen p\u00ebr zhvillim.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Nd\u00ebrfaqja e kontejnerit p\u00ebr ruajtjen e t\u00eb dh\u00ebnave<\/h4>\n<p>\nNd\u00ebrsa nd\u00ebrfaqja e ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb konteiner\u00ebve (CSI) ndihmoi shum\u00eb me shp\u00ebrndarjen e nivelit t\u00eb volumeve Kubernetes, duke e kaluar pjes\u00ebrisht tek furnizuesit e jasht\u00ebm t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave, ajo gjithashtu p\u00ebr fat t\u00eb keq ka ndihmuar n\u00eb krijimin e bindjes se qasja e konteiner\u00ebve me ruajtje t\u00eb q\u00ebndrueshme \u00ebsht\u00eb metoda e rekomanduar p\u00ebr ruajtjen e t\u00eb dh\u00ebnave n\u00eb Kubernetes.<\/p>\n<p>CSI \u00ebsht\u00eb zhvilluar si standard p\u00ebr ofrimin e sistemeve t\u00eb ruajtjes s\u00eb dh\u00ebnave t\u00eb bllokut dhe skedarit p\u00ebr aplikacionet e trash\u00ebguara gjat\u00eb pun\u00ebs me Kubernetes. Dhe, si\u00e7 u tregua n\u00eb k\u00ebt\u00eb artikull, situata e vetme kur qasja e konteiner\u00ebve me ruajtje t\u00eb q\u00ebndrueshme (dhe CSI n\u00eb form\u00ebn e saj aktuale) ka kuptim \u00ebsht\u00eb kur aplikacioni vet\u00eb \u00ebsht\u00eb nj\u00eb sistem trash\u00ebguar, n\u00eb t\u00eb cilin \u00ebsht\u00eb e pamundur t\u00eb shtohet mb\u00ebshtetje p\u00ebr API-n\u00eb e ruajtjes objektore.<\/p>\n<p>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se duke p\u00ebrdorur CSI n\u00eb form\u00ebn e saj aktuale, dmth, duke montuar volumin gjat\u00eb pun\u00ebs me aplikacione moderne, do t\u00eb p\u00ebrballemi me probleme t\u00eb ngjashme si ato q\u00eb ndodhnin n\u00eb sistemet ku ruajtja e t\u00eb dh\u00ebnave ishte organizuar n\u00eb stilin POSIX.<\/p>\n<h4>Qasje m\u00eb cil\u00ebsore<\/h4>\n<p>\nN\u00eb k\u00ebt\u00eb rast, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se shumica e aplikacioneve n\u00eb thelb nuk jan\u00eb t\u00eb dizajnuara posa\u00e7\u00ebrisht p\u00ebr t\u00eb punuar me ruajtje t\u00eb q\u00ebndrueshme ose pa ruajtje t\u00eb q\u00ebndrueshme. Kjo sjellje varet nga arkitektura e p\u00ebrgjithshme e sistemit dhe nga variantet specifike t\u00eb zgjedhura gjat\u00eb dizajnimit. Le t\u00eb flasim pak p\u00ebr aplikacionet q\u00eb ruajn\u00eb gjendjen.<\/p>\n<p>N\u00eb parim, t\u00eb dh\u00ebnat e aplikacioneve mund t\u00eb ndahen n\u00eb disa tipe t\u00eb gjera:<\/p>\n<ul>\n<li>T\u00eb dh\u00ebnat e regjistrave<\/li>\n<li>T\u00eb dh\u00ebnat e etiketave t\u00eb koh\u00ebs<\/li>\n<li>T\u00eb dh\u00ebnat e transaksioneve<\/li>\n<li>Metadatat<\/li>\n<li>Imazhet e konteiner\u00ebve<\/li>\n<li>T\u00eb dh\u00ebnat e blob\u00ebve (objekteve binar\u00eb t\u00eb m\u00ebdhenj)<\/li>\n<\/ul>\n<p>\nT\u00eb gjitha k\u00ebto tipe t\u00eb dh\u00ebnash mb\u00ebshteten shum\u00eb mir\u00eb n\u00eb platformat moderne t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave, dhe ekzistojn\u00eb disa platforma t\u00eb fokusuar n\u00eb re, t\u00eb p\u00ebrshtatura p\u00ebr ofrimin e t\u00eb dh\u00ebnave n\u00eb secilin nga k\u00ebto formate specifike. P\u00ebr shembull, t\u00eb dh\u00ebnat e transaksioneve dhe metadata mund t\u00eb gjenden n\u00eb nj\u00eb databaz\u00eb moderne t\u00eb orientuar nga reja, si CockroachDB, YugaByte, etj. Imazhet e konteiner\u00ebve ose t\u00eb dh\u00ebnat e blob\u00ebve mund t\u00eb ruhen n\u00eb nj\u00eb regjist\u00ebr docker, t\u00eb bazuar n\u00eb MinIO. T\u00eb dh\u00ebnat e etiketave t\u00eb koh\u00ebs mund t\u00eb ruhen n\u00eb nj\u00eb databaz\u00eb t\u00eb serive t\u00eb koh\u00ebs, p\u00ebr shembull, InfluxDB, etj. Nuk do t\u00eb hyjm\u00eb k\u00ebtu n\u00eb detajet e \u00e7do tipi t\u00eb dh\u00ebnash dhe aplikacioneve p\u00ebrkat\u00ebse, por ideja e p\u00ebrgjithshme \u00ebsht\u00eb t\u00eb shmangen ruajtja e q\u00ebndrueshme t\u00eb t\u00eb dh\u00ebnave q\u00eb bazohet n\u00eb montimin lokal t\u00eb disqeve.<\/p>\n<p><img decoding=\"async\" alt=\"Modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00ebr m\u00eb tep\u00ebr, shpesh \u00ebsht\u00eb efikase t\u00eb ofrohet nj\u00eb nivel p\u00ebrkoh\u00ebsisht t\u00eb ruajtjes, i cili sh\u00ebrben si nj\u00eb ruajt\u00ebs p\u00ebr aplikacionet p\u00ebr skedar\u00ebt e p\u00ebrkohsh\u00ebm, por aplikacionet nuk duhet t\u00eb varen nga ky nivel si burim i v\u00ebrtet\u00eb.<\/p>\n<h4>Ruajtja p\u00ebr aplikacionet me gjendje<\/h4>\n<p>\nNd\u00ebrsa n\u00eb shumic\u00ebn e rasteve \u00ebsht\u00eb e dobishme t\u00eb mbahen aplikacionet pa gjendje, ato aplikacione q\u00eb jan\u00eb t\u00eb destinuara p\u00ebr ruajtjen e t\u00eb dh\u00ebnave \u2013 si databazat, ruajt\u00ebsit e objekteve, ruajt\u00ebsit e \u00e7el\u00ebsave dhe vlerave \u2013 duhet t\u00eb mbajn\u00eb gjendjen. Le t\u00eb shqyrtojm\u00eb pse k\u00ebto aplikacione implementohen n\u00eb Kubernetes. Si nj\u00eb shembull, do t\u00eb marrim MinIO, por parime t\u00eb ngjashme jan\u00eb t\u00eb aplikueshme n\u00eb \u00e7do sistem t\u00eb madh t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave orientuar nga re.<\/p>\n<p>Aplikacionet e orientuara nga re jan\u00eb t\u00eb dizajnuara p\u00ebr t\u00eb shfryt\u00ebzuar n\u00eb maksimum fleksibilitetin q\u00eb ofrojn\u00eb konteiner\u00ebt. Kjo do t\u00eb thot\u00eb se ato nuk b\u00ebjn\u00eb asnj\u00eb supozim rreth mjedisit n\u00eb t\u00eb cilin do t\u00eb implementohen. P\u00ebr shembull, n\u00eb MinIO p\u00ebrdoret nj\u00eb mekaniz\u00ebm i brendsh\u00ebm i kodimit t\u00eb tepruar (erasure coding), i cili siguron q\u00eb sistemi t\u00eb mbetet funksional edhe n\u00eb rastin e d\u00ebshtimit t\u00eb gjysm\u00eb t\u00eb disqeve. Gjithashtu, MinIO menaxhon integritetin dhe sigurin\u00eb e t\u00eb dh\u00ebnave duke p\u00ebrdorur hashing dhe enkriptim t\u00eb vetin n\u00eb an\u00ebn e serverit.<\/p>\n<p>P\u00ebr k\u00ebto aplikacione t\u00eb orientuara nga re, ruajt\u00ebsit lokal\u00eb t\u00eb p\u00ebrhersh\u00ebm (PV) jan\u00eb m\u00eb t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr ruajtje rezerv\u00eb. PV t\u00eb lokalizuar ofrojn\u00eb mund\u00ebsin\u00eb e ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb pap\u00ebrpunuara, nd\u00ebrsa aplikacionet q\u00eb punojn\u00eb mbi k\u00ebto PV mbledhin informacionin q\u00eb u mund\u00ebson atyre t\u00eb shkall\u00ebzojn\u00eb t\u00eb dh\u00ebnat dhe t\u00eb menaxhojn\u00eb k\u00ebrkesat n\u00eb rritje p\u00ebr t\u00eb dh\u00ebna.<\/p>\n<p>Kjo qasje \u00ebsht\u00eb shum\u00eb m\u00eb e thjesht\u00eb dhe shkall\u00ebzohet duksh\u00ebm m\u00eb mir\u00eb n\u00eb krahasim me PV t\u00eb bazuar n\u00eb CSI, t\u00eb cilat sjellin nivele t\u00eb tyre t\u00eb menaxhimit t\u00eb t\u00eb dh\u00ebnave dhe tep\u00ebr, sepse k\u00ebto nivele zakonisht konflitikojn\u00eb me aplikacionet e dizajnuara p\u00ebr ruajtjen e gjendjes.<\/p>\n<h4>Nj\u00eb l\u00ebvizje e sigurt drejt shk\u00ebputjes s\u00eb t\u00eb dh\u00ebnave nga llogaritjet<\/h4>\n<p>\nN\u00eb k\u00ebt\u00eb artikull, ne diskutuam se si aplikacionet riorganizohen p\u00ebr t\u00eb punuar pa ruajtjen e gjendjes, ose, me fjal\u00eb t\u00eb tjera, ruajtja e t\u00eb dh\u00ebnave ndarja nga llogarit\u00eb mbi to. N\u00eb p\u00ebrfundim, do t\u00eb shqyrtojm\u00eb disa shembuj real\u00eb t\u00eb k\u00ebtij trendi.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, platforma e njohur p\u00ebr analiz\u00ebn e t\u00eb dh\u00ebnave, tradita\u00ebrisht \u00ebsht\u00eb p\u00ebrdorur me ruajtjen e gjendjes dhe me shp\u00ebrndarjen n\u00eb sistemin e skedar\u00ebve HDFS. Megjithat\u00eb, nd\u00ebrsa Spark kalon n\u00eb nj\u00eb bot\u00eb t\u00eb orientuar nga re, kjo platform\u00eb po p\u00ebrdoret gjithnj\u00eb e m\u00eb shum\u00eb pa ruajtjen e gjendjes me p\u00ebrdorimin e `s3a`. Spark p\u00ebrdor s3a p\u00ebr t\u00eb transferuar gjendjen n\u00eb sisteme t\u00eb tjera, nd\u00ebrsa kontenier\u00ebt e vet\u00eb Spark punojn\u00eb plot\u00ebsisht pa ruajtjen e gjendjes. Aktor\u00ebt e tjer\u00eb t\u00eb m\u00ebdhenj t\u00eb nd\u00ebrmarrjeve n\u00eb fush\u00ebn e analiz\u00ebs s\u00eb t\u00eb dh\u00ebnave t\u00eb m\u00ebdha, ve\u00e7an\u00ebrisht, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vertica.com\/docs\/9.2.x\/HTML\/Content\/Authoring\/Eon\/Architecture.htm\">Vertica<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/min.io\/resources\/docs\/Teradata-solution-brief.pdf\">Teradata<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.pivotal.io\/partners\/minio-greenplum\/using.html\">Greenplum<\/a><\/noindex> n\u00eb po ashtu kalojn\u00eb n\u00eb pun\u00ebn me ndarjen e ruajtjes s\u00eb t\u00eb dh\u00ebnave dhe llogaritjeve mbi to.<\/p>\n<p>Modele t\u00eb tilla gjithashtu v\u00ebrehen n\u00eb platforma t\u00eb tjera t\u00eb m\u00ebdha analitike, p\u00ebrfshir\u00eb Presto, Tensorflow to R, Jupyter. Duke eksportuar gjendjen n\u00eb sisteme t\u00eb larg\u00ebta t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb re, b\u00ebhet shum\u00eb m\u00eb e leht\u00eb t\u00eb menaxhoni aplikacionin tuaj dhe ta shkall\u00ebzoni at\u00eb. P\u00ebr m\u00eb tep\u00ebr, kjo ndihmon n\u00eb portabilitetin e aplikacionit n\u00eb mjedise t\u00eb ndryshme.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/490180\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0432\u044b\u0448\u043b\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u0445 Kubernetes. \u041d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441 &quot;\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432&quot; \u0411\u0440\u0435\u043d\u0434\u0430\u043d\u0430 \u0411\u0435\u0440\u043d\u0441\u0430, \u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0443 \u043d\u0430\u0441 \u043a\u0438\u043f\u0438\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0438\u0437 \u0431\u043b\u043e\u0433\u0430 MinIO, \u043a\u0440\u0430\u0442\u043a\u043e \u0438\u0437\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0443 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes. Kubernetes \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71859,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71858","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=\"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\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\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-02-28T18:00:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:09+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\udd47Modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","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\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Kubernetes | ProHoster","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","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-02-28T18:00:08+00:00","article:modified_time":"2020-03-03T13:14:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71858","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:55:27","updated":"2022-09-27 18:57:08","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\/71858","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=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}