{"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 tjet\u00ebr artikull tep\u00ebr 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\">lib\u00ebr<\/a><\/noindex> p\u00ebr modelet Kubernetes. E gjith\u00e7ka filloi me \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Modelet<\/a><\/noindex>\" Brendan Burns, dhe, megjithat\u00eb, puna n\u00eb k\u00ebt\u00eb segment p\u00ebr ne <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">n\u00eb zhvillim<\/a><\/noindex>. Sot, ne ju ofrojm\u00eb t\u00eb lexoni nj\u00eb artikull nga blogu MinIO, i cili paraqet shkurtimisht 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 n\u00eb m\u00ebnyr\u00eb themelore modelet tradicionale t\u00eb zhvillimit dhe implementimit t\u00eb aplikacioneve. Tani ekipi mund t\u00eb shpenzoj\u00eb vet\u00ebm disa dit\u00eb p\u00ebr t\u00eb zhvilluar, testuar dhe implementuar nj\u00eb aplikacion \u2013 n\u00eb mjedise t\u00eb ndryshme, dhe gjith\u00e7ka brenda klastereve Kubernetes. Puna me teknologjit\u00eb e brezave t\u00eb kaluar zakonisht merrte jav\u00eb t\u00eb t\u00ebra, n\u00ebse jo muaj.<\/p>\n<p>Ky p\u00ebrshpejtim \u00ebsht\u00eb b\u00ebr\u00eb i mundur fal\u00eb abstraksionit q\u00eb ofron Kubernetes \u2014 dmth, fal\u00eb faktit se Kubernetes nd\u00ebrvepron me detalet e ul\u00ebta t\u00eb pajisjeve fizike ose virtuale, duke lejuar p\u00ebrdoruesit t\u00eb shpallin, p\u00ebrve\u00e7 parametrave t\u00eb tjer\u00eb, procesorin e nevojsh\u00ebm, sasin\u00eb e kujtes\u00ebs, numrin e instancave t\u00eb kontejner\u00ebve. Duke qen\u00eb se nj\u00eb komunitet i madh \u00ebsht\u00eb i angazhuar n\u00eb mb\u00ebshtetje t\u00eb Kubernetes dhe shkalla e p\u00ebrdorimit t\u00eb Kubernetes vazhdon t\u00eb zgjerohet, ai \u00ebsht\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb dukshme lider n\u00eb mesin e t\u00eb gjitha platformave t\u00eb orkestrimit t\u00eb kontejner\u00ebve.<\/p>\n<p><i><b>Me rritjen e p\u00ebrdorimit t\u00eb Kubernetes, rritet edhe konfuzioni n\u00eb lidhje me modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb aplikuara atje.<\/b><\/i>.<\/p>\n<p>Me gjith\u00eb konkurrenc\u00ebn p\u00ebr nj\u00eb cop\u00eb t\u00eb tort\u00ebs Kubernetes (dmth, p\u00ebr ruajtjen e t\u00eb dh\u00ebnave), kur b\u00ebhet fjal\u00eb 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 ndan ruajtjen e t\u00eb dh\u00ebnave nga llogaritjet. P\u00ebr t\u00eb kuptuar plot\u00ebsisht k\u00ebt\u00eb ndarje n\u00eb kontekstin e Kubernetes, \u00ebsht\u00eb e nevojshme gjithashtu t\u00eb kuptohet se \u00e7far\u00eb p\u00ebrfaq\u00ebsojn\u00eb aplikacionet me ruajtje gjendjeje dhe pa ruajtje gjendjeje, si dhe se si lidhen kjo me ruajtjen e t\u00eb dh\u00ebnave. K\u00ebtu \u00ebsht\u00eb vendi ku qasja REST API e aplikuar nga S3 ka avantazhe t\u00eb qarta krahasuar me qasjen POSIX\/CSI, tipike p\u00ebr zgjidhjet e tjera.<\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull do t\u00eb flasim p\u00ebr modelet e ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb Kubernetes dhe do t\u00eb trajtojm\u00eb ve\u00e7mas debatin n\u00eb lidhje me aplikacionet q\u00eb punojn\u00eb me gjendje dhe pa gjendje, p\u00ebr t\u00eb kuptuar sakt\u00ebsisht se \u00e7far\u00eb p\u00ebrb\u00ebn dallimin mes tyre dhe pse \u00ebsht\u00eb i r\u00ebnd\u00ebsish\u00ebm. M\u00eb tej, do t\u00eb shqyrtohen 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\u00ebt dhe Kubernetes.<\/p>\n<h4>Kontejner\u00eb pa gjendje<\/h4>\n<p>\nKontejner\u00ebt natyrsh\u00ebm jan\u00eb t\u00eb leht\u00eb dhe efemer. Ata mund t\u00eb ndalen, hiqen ose vendosen pa mundim n\u00eb nj\u00eb nod tjet\u00ebr - t\u00eb gjitha k\u00ebto k\u00ebrkojn\u00eb vet\u00ebm disa sekonda. N\u00eb nj\u00eb sistem t\u00eb madh orkestrimi t\u00eb kontejner\u00ebve, k\u00ebto operacione ndodhin vazhdimisht dhe p\u00ebrdoruesit nuk e v\u00ebrejn\u00eb asnj\u00ebher\u00eb k\u00ebto ndryshime. Megjithat\u00eb, l\u00ebvizjet jan\u00eb t\u00eb mundshme vet\u00ebm n\u00ebse kontenieri nuk ka asnj\u00eb var\u00ebsi nga nodi n\u00eb t\u00eb cilin ndodhet. P\u00ebr k\u00ebta kontejner\u00eb thuhet se ata punojn\u00eb <i>pa gjendje<\/i>.<\/p>\n<h4>Kontejner\u00eb me gjendje<\/h4>\n<p>\nN\u00ebse nj\u00eb kontenier ruan t\u00eb dh\u00ebna n\u00eb pajisje t\u00eb lidhura lokalisht (ose n\u00eb nj\u00eb pajisje bllok), at\u00ebher\u00eb ruajtja e t\u00eb dh\u00ebnave, n\u00eb t\u00eb cil\u00ebn ndodhet, do t\u00eb duhet t\u00eb l\u00ebvizi n\u00eb nj\u00eb nod t\u00eb ri s\u00eb bashku me vet\u00eb kontenierin - n\u00eb rast se ndodh nj\u00eb d\u00ebshtim. Kjo \u00ebsht\u00eb e r\u00ebnd\u00ebsishme, sepse n\u00eb t\u00eb kund\u00ebrt aplikacioni q\u00eb ekzekutohet n\u00eb kontenier nuk do t\u00eb funksionoj\u00eb si\u00e7 duhet, pasi i nevojitet t\u00eb aksesoj\u00eb t\u00eb dh\u00ebnat e ruajtura n\u00eb m\u00e9dhjet lokale. P\u00ebr k\u00ebta kontejner\u00eb thuhet se ata punojn\u00eb <i>me gjendje<\/i>.<\/p>\n<p>Nga nj\u00eb k\u00ebndv\u00ebshtrim t\u00ebr\u00ebsor teknik, kontejner\u00ebt me gjendje gjithashtu mund t\u00eb l\u00ebvizin n\u00eb nod t\u00eb tjer\u00eb. Kjo zakonisht sigurohet p\u00ebrmes sistemeve t\u00eb shp\u00ebrndara t\u00eb skedar\u00ebve ose ruajtjeve t\u00eb dh\u00ebnash t\u00eb lidhura me rrjet t\u00eb bllokut, t\u00eb cilat jan\u00eb t\u00eb lidhura me t\u00eb gjith\u00eb nodet ku punojn\u00eb kontejner\u00ebt. K\u00ebshtu, kontejner\u00ebt aksesojn\u00eb volumin p\u00ebr ruajtjen e q\u00ebndrueshme t\u00eb t\u00eb dh\u00ebnave, dhe informacioni ruhet n\u00eb disqe q\u00eb ndodhen n\u00eb t\u00eb gjith\u00eb rrjetin. Ky metod\u00eb un\u00eb do ta quaj \"<i>p\u00ebrqasje konteinerike me gjendje<\/i>\", dhe n\u00eb pjes\u00ebn tjet\u00ebr t\u00eb artikullit do ta quaj ashtu p\u00ebr shkak t\u00eb uniformitetit.<\/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 \/>\nMe qasja tipike me kontejner\u00eb q\u00eb ruajn\u00eb gjendjen, t\u00eb gjitha pods e aplikacioneve lidhen me nj\u00eb sistem t\u00eb shp\u00ebrndar\u00eb skedar\u00ebsh - duke krijuar nj\u00eb lloj ruajtjeje t\u00eb p\u00ebrbashk\u00ebt, ku gjenden t\u00eb dh\u00ebnat e t\u00eb gjitha aplikacioneve. Megjith\u00ebse mund t\u00eb ket\u00eb disa variacione, ky \u00ebsht\u00eb nj\u00eb qasje me nivel t\u00eb lart\u00eb.<\/p>\n<p>Tani le t\u00eb shqyrtojm\u00eb se pse qasja me kontejner\u00eb q\u00eb ruajn\u00eb gjendjen n\u00eb bot\u00ebn e orientuar drejt cloud-it \u00ebsht\u00eb nj\u00eb antipattern.<\/p>\n<h4>Projektimi i aplikacioneve t\u00eb orientuara drejt cloud-it<\/h4>\n<p>\nTradicionalisht, aplikacionet p\u00ebrdornin bazat e t\u00eb dh\u00ebnave p\u00ebr ruajtjen e strukturuar t\u00eb informacionit dhe disqet lokale ose sistemet e shp\u00ebrndara t\u00eb skedar\u00ebve, ku mblidheshin t\u00eb gjitha t\u00eb dh\u00ebnat e pa-strukturuara ose madje gjysm\u00eb-strukturuara. Nd\u00ebrsa volumi i t\u00eb dh\u00ebnave t\u00eb pa-strukturuara rritej, zhvilluesit kuptuan se POSIX ishte tep\u00ebr \"i z\u00ebsh\u00ebm\", p\u00ebrfshir\u00eb kosto t\u00eb konsiderueshme dhe, p\u00ebrfundimisht, pengonte funksionimin e aplikacionit kur kalonte n\u00eb nivele t\u00eb v\u00ebrteta t\u00eb m\u00ebdha.<\/p>\n<p>Kjo kryesisht ndihmoi n\u00eb shfaqjen e nj\u00eb standardi t\u00eb ri p\u00ebr ruajtjen e t\u00eb dh\u00ebnave, q\u00eb do t\u00eb thot\u00eb, ruajtje t\u00eb orientuar drejt cloud-it, q\u00eb funksionon kryesisht mbi REST API dhe \u00e7liron aplikacionin nga mbikqyrja e ngarkuar e ruajtjes lokale t\u00eb t\u00eb dh\u00ebnave. N\u00eb k\u00ebt\u00eb rast, aplikacioni n\u00eb fakt kalon n\u00eb nj\u00eb mod t\u00eb pun\u00ebs q\u00eb nuk ruan gjendjen (pasi gjendja \u00ebsht\u00eb n\u00eb ruajtjen e larg\u00ebt). Aplikacionet moderne nd\u00ebrtohen me k\u00ebt\u00eb faktor n\u00eb mendje. Si rregull, \u00e7do aplikacion modern q\u00eb proceson t\u00eb dh\u00ebna t\u00eb ndonj\u00eb lloji (logs, metadata, blobs, etj.) \u00ebsht\u00eb nd\u00ebrtuar mbi paradigmen e orientuar drejt cloud-it, ku gjendja transferohet n\u00eb nj\u00eb sistem softuerik t\u00eb ve\u00e7ant\u00eb p\u00ebr ruajtjen e saj. <\/p>\n<p><i><b>Qasja me kontejner\u00eb q\u00eb ruajn\u00eb gjendjen e kthen t\u00ebr\u00eb k\u00ebt\u00eb paradig\u00ebm sakt\u00ebsisht atje ku filloi! <\/b><\/i><\/p>\n<p>Duke p\u00ebrdorimi t\u00eb nd\u00ebrfaqeve POSIX p\u00ebr ruajtjen e t\u00eb dh\u00ebnave, aplikacionet punojn\u00eb ashtu si\u00e7 do t\u00eb b\u00ebjn\u00eb n\u00ebse do t\u00eb ruanin gjendjen, dhe p\u00ebr k\u00ebt\u00eb arsye, ata largohen nga postulatat m\u00eb t\u00eb r\u00ebnd\u00ebsishme t\u00eb projektimit t\u00eb orientuar ndaj cloud, pra, nga mund\u00ebsia p\u00ebr t\u00eb variuar p\u00ebrmasat e rrjedhave t\u00eb pun\u00ebs t\u00eb aplikacionit n\u00eb var\u00ebsi t\u00eb ngarkes\u00ebs s\u00eb hyrjes, t\u00eb kalojn\u00eb n\u00eb nj\u00eb nyje t\u00eb re sapo nyja aktuale t\u00eb d\u00ebshtoj\u00eb, e k\u00ebshtu me radh\u00eb.<\/p>\n<p>Duke e shqyrtuar k\u00ebt\u00eb situat\u00eb m\u00eb af\u00ebr, zbulojm\u00eb se kur zgjedhim ruajtjen e t\u00eb dh\u00ebnave, p\u00ebrs\u00ebri dhe p\u00ebrs\u00ebri hasim n\u00eb dilemm\u00ebn \"POSIX kund\u00ebr REST API\", POR me nj\u00eb komplikim shtes\u00eb t\u00eb problemeve POSIX t\u00eb shkaktuara nga natyra e shp\u00ebrndar\u00eb e mjediseve Kubernetes. N\u00eb ve\u00e7anti,<\/p>\n<ul>\n<li><b>POSIX flet shum\u00eb<\/b>: semantika POSIX k\u00ebrkon t\u00eb asociohet \u00e7do operacion me metadatat dhe deshifruesit e skedar\u00ebve, t\u00eb cilat ndihmojn\u00eb n\u00eb mb\u00ebshtetje t\u00eb gjendjes s\u00eb operacionit. Kjo \u00e7on n\u00eb shpenzime t\u00eb konsiderueshme, pa ndonj\u00eb vler\u00eb reale. API p\u00ebr ruajtjen e objekteve, n\u00eb ve\u00e7anti, S3 API, e ka hequr k\u00ebt\u00eb k\u00ebrkes\u00eb, duke lejuar q\u00eb aplikacioni t\u00eb punoj\u00eb, e m\u00eb pas \"ta harroj\u00eb\" thirrjen. P\u00ebrgjigjja e sistemit t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave tregon n\u00ebse veprimi \u00ebsht\u00eb p\u00ebrfunduar me sukses apo jo. N\u00eb rast d\u00ebshtimi, aplikacioni mund t\u00eb b\u00ebj\u00eb nj\u00eb p\u00ebrpjekje t\u00eb re.<\/li>\n<li><b>Kufizimet e rrjetit<\/b>: N\u00eb nj\u00eb sistem t\u00eb shp\u00ebrndar\u00eb, supozohet se mund t\u00eb ekzistojn\u00eb shum\u00eb aplikacione q\u00eb p\u00ebrpiqen t\u00eb shkruajn\u00eb t\u00eb dh\u00ebna n\u00eb t\u00eb nj\u00ebjtin mbajt\u00ebs t\u00eb lidhur. Prandaj, p\u00ebrve\u00e7 se aplikacionet do t\u00eb konkurrojn\u00eb me nj\u00ebra-tjetr\u00ebn p\u00ebr bandwidth (p\u00ebr t\u00eb d\u00ebrguar t\u00eb dh\u00ebna n\u00eb mbajt\u00ebs), sistemi i ruajtjes s\u00eb t\u00eb dh\u00ebnave vet\u00eb do t\u00eb konkurroj\u00eb p\u00ebr k\u00ebt\u00eb band\u00eb, duke shp\u00ebrndar\u00eb t\u00eb dh\u00ebna p\u00ebrmes disqeve fizike. P\u00ebr shkak t\u00eb fjal\u00ebshkruarjes s\u00eb POSIX, numri i thirrjeve rrjetit rritet disa her\u00eb. Nga ana tjet\u00ebr, S3 API ofron nj\u00eb ndarje t\u00eb qart\u00eb t\u00eb thirrjeve rrjetore midis 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 POSIX parashikon nj\u00eb angazhim aktiv t\u00eb njeriut: administrator\u00ebt konfigurojn\u00eb nivelet e ve\u00e7anta t\u00eb aksesit p\u00ebr \u00e7do p\u00ebrdorues ose grup. Kjo paradig\u00ebm \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb p\u00ebrshtatet me bot\u00ebn cloud-oriented. Aplikacionet moderne varen nga modelet e siguris\u00eb t\u00eb lidhura me API, ku t\u00eb drejtat e aksesit p\u00ebrcaktohen si nj\u00eb grup politikash, llogarit\u00eb e sh\u00ebrbimeve, kredencialet e p\u00ebrkohshme etj.<\/li>\n<li><b>Menaxhueshm\u00ebria<\/b>: Konteiner\u00ebt me ruajtje t\u00eb q\u00ebndrueshme sjellin kosto t\u00eb caktuara t\u00eb lidhura me menaxhimin. K\u00ebtu flasim p\u00ebr sinkronizimin e aksesit t\u00eb paralel p\u00ebr t\u00eb dh\u00ebnat, p\u00ebr t\u00eb siguruar koherenc\u00ebn e t\u00eb dh\u00ebnave, gjith\u00e7ka kjo k\u00ebrkon nj\u00eb vler\u00ebsim t\u00eb kujdessh\u00ebm t\u00eb modeleve t\u00eb aksesit t\u00eb t\u00eb dh\u00ebnave q\u00eb do t\u00eb p\u00ebrdoren. N\u00ebsht\u00eb e nevojshme t\u00eb instalojm\u00eb, t\u00eb kontrollojm\u00eb dhe konfigurojm\u00eb programe t\u00eb tjera, pa p\u00ebrmendur p\u00ebrpjekjet shtes\u00eb t\u00eb shpenzuara p\u00ebr zhvillim.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Interfaci i ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb konteiner\u00ebve<\/h4>\n<p>\nNd\u00ebrsa interfaci i ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb konteiner\u00ebve (CSI) ka ndihmuar shum\u00eb n\u00eb shp\u00ebrndarjen e nivelit t\u00eb volumit t\u00eb Kubernetes, duke e kaluar pjes\u00ebrisht at\u00eb te ofruesit e tjer\u00eb t\u00eb ruajtjes, por gjithashtu me rastin ndihmoi n\u00eb bindjen 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 nj\u00eb standard p\u00ebr ofrimin e sistemeve t\u00eb ruajtjes me bllok dhe skedar\u00eb t\u00eb rast\u00ebsish\u00ebm 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 n\u00eb t\u00eb cil\u00ebn qasja e konteiner\u00ebve me ruajtje t\u00eb q\u00ebndrueshme (dhe CSI n\u00eb form\u00ebn e saj aktuale) \u00ebsht\u00eb e arsyeshme \u2013 \u00ebsht\u00eb kur vet\u00eb aplikacioni \u00ebsht\u00eb nj\u00eb sistem i trash\u00ebguar, n\u00eb t\u00eb cilin nuk \u00ebsht\u00eb e mundur t\u00eb shtohet mb\u00ebshtetje p\u00ebr API-n\u00eb e ruajtjes s\u00eb objektit.<\/p>\n<p>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se, duke p\u00ebrdorur CSI n\u00eb form\u00ebn e saj aktuale, pra, duke montuar volumin gjat\u00eb pun\u00ebs me aplikacionet moderne, ne do t\u00eb p\u00ebrballemi me probleme t\u00eb ngjashme me ato q\u00eb shfaqeshin n\u00eb sistemet ku ruajtja e t\u00eb dh\u00ebnave \u00ebsht\u00eb 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 kuptojm\u00eb se shumica e aplikacioneve, n\u00eb thelb, nuk jan\u00eb t\u00eb dizajnuara p\u00ebr t\u00eb punuar me ruajtjen e gjendjes ose pa ruajtjen e gjendjes. Ky tipar varet nga arkitektura e p\u00ebrgjithshme e sistemit dhe nga variantet e ve\u00e7anta t\u00eb zgjedhura gjat\u00eb projektimit. Le t\u00eb flasim pak rreth aplikacioneve q\u00eb ruajn\u00eb gjendjen.<\/p>\n<p>N\u00eb parim, t\u00eb gjitha t\u00eb dh\u00ebnat e aplikacioneve mund t\u00eb ndahen n\u00eb disa kategori t\u00eb gjera:<\/p>\n<ul>\n<li>T\u00eb dh\u00ebna log-esh<\/li>\n<li>T\u00eb dh\u00ebna t\u00eb etiketave t\u00eb koh\u00ebs<\/li>\n<li>T\u00eb dh\u00ebna transaksionesh<\/li>\n<li>Metadatot<\/li>\n<li>Imazhe kontejner\u00ebsh<\/li>\n<li>T\u00eb dh\u00ebna blob-esh (objekte binar\u00eb t\u00eb m\u00ebdhenj)<\/li>\n<\/ul>\n<p>\nT\u00eb gjitha k\u00ebto lloje 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 orientuara nga reja t\u00eb p\u00ebrshtatura p\u00ebr t\u00eb ofruar t\u00eb dh\u00ebna n\u00eb secilin nga k\u00ebto formate specifike. P\u00ebr shembull, t\u00eb dh\u00ebnat e transaksioneve dhe metadat e mund t\u00eb ndodhen n\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash moderne t\u00eb orientuar nga reja, si\u00e7 jan\u00eb CockroachDB, YugaByte, etj. Imazhet e kontejner\u00ebve ose t\u00eb dh\u00ebnat e blob-eve mund t\u00eb ruhen n\u00eb regjistrin 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 baz\u00eb t\u00eb dh\u00ebnash t\u00eb serive t\u00eb koh\u00ebs, si InfluxDB, etj. Nuk do t\u00eb futemi k\u00ebtu n\u00eb detajet e secilit lloj t\u00eb dh\u00ebnash dhe aplikacionet p\u00ebrkat\u00ebse, por ideja kryesore \u00ebsht\u00eb t\u00eb shmangim ruajtjen p\u00ebrhershme 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 efektiv t\u00eb ofrohet nj\u00eb nivel p\u00ebrkoh\u00ebsisht t\u00eb ruajtjes, q\u00eb sh\u00ebrben si nj\u00eb magazin\u00eb p\u00ebr skedar\u00ebt p\u00ebrkoh\u00ebsisht, por aplikacionet nuk duhet t\u00eb varen nga ky nivel si burimi i t\u00eb v\u00ebrtet\u00ebs.<\/p>\n<h4>Ruajtja p\u00ebr aplikacione q\u00eb ruajn\u00eb gjendjen<\/h4>\n<p>\nNd\u00ebrkoh\u00eb q\u00eb n\u00eb shumic\u00ebn e rasteve \u00ebsht\u00eb e dobishme t\u00eb kemi aplikacione pa gjendje, ato aplikacione q\u00eb jan\u00eb t\u00eb destinuara p\u00ebr ruajtjen e t\u00eb dh\u00ebnave \u2013 si bazat e t\u00eb dh\u00ebnave, magazinat e objekteve, magazinat e \u00e7el\u00ebsave dhe vlerave \u2013 duhet t\u00eb ruajn\u00eb gjendjen. Le t\u00eb shqyrtojm\u00eb arsyet pse k\u00ebto aplikacione jan\u00eb implementuar n\u00eb Kubernetes. Si nj\u00eb shembull, le t\u00eb marrim MinIO, por principe t\u00eb ngjashme jan\u00eb t\u00eb aplikueshme edhe p\u00ebr \u00e7do sistem tjet\u00ebr t\u00eb madh t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave t\u00eb orientuara nga reja.<\/p>\n<p>Aplikacionet e orientuara nga reja projektohen p\u00ebr t\u00eb shfryt\u00ebzuar maksimalisht fleksibilitetin q\u00eb ofrojn\u00eb kontejner\u00ebt. Kjo do t\u00eb thot\u00eb se nuk b\u00ebhen asnj\u00eb supozim n\u00eb lidhje me mjedisin n\u00eb t\u00eb cilin do t\u00eb shp\u00ebrndahen. P\u00ebr shembull, MinIO p\u00ebrdor nj\u00eb mekaniz\u00ebm t\u00eb brendsh\u00ebm t\u00eb kodimit t\u00eb tepruar (erasure coding) q\u00eb siguron nj\u00eb q\u00ebndrushm\u00ebri t\u00eb mjaftueshme p\u00ebr sistemin n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mbetet funksional edhe n\u00eb rast d\u00ebshtimi t\u00eb gjysm\u00eb t\u00eb hard disk\u00ebve. Po ashtu, 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 aplikacionet e tilla t\u00eb orientuara nga reja, volumi i q\u00ebndruesh\u00ebm lokal (PV) \u00ebsht\u00eb zgjidhja m\u00eb e p\u00ebrshtatshme p\u00ebr ruajtjen e rezervave. PV lokal ofron mund\u00ebsin\u00eb p\u00ebr ruajtjen e t\u00eb dh\u00ebnave t\u00eb pap\u00ebrpunuara, nd\u00ebrsa aplikacionet q\u00eb punojn\u00eb mbi k\u00ebto PV mbledhin vet\u00eb informacionin q\u00eb lejon q\u00eb t\u00eb dh\u00ebnat t\u00eb shkall\u00ebzohen dhe t\u00eb menaxhohen k\u00ebrkesat n\u00eb rritje p\u00ebr t\u00eb dh\u00ebna.<\/p>\n<p>Ky qasje \u00ebsht\u00eb shum\u00eb m\u00eb e thjesht\u00eb dhe shkall\u00ebzohet ndjesh\u00ebm m\u00eb mir\u00eb se PV-t\u00eb e bazuara n\u00eb CSI, t\u00eb cilat sjellin n\u00eb sistem nivele t\u00eb veta t\u00eb menaxhimit t\u00eb t\u00eb dh\u00ebnave dhe tepricave; problemi \u00ebsht\u00eb se k\u00ebto nivele zakonisht bien n\u00eb kontradikt\u00eb me aplikacionet e dizajnuara sipas parimit t\u00eb ruajtjes s\u00eb gjendjes.<\/p>\n<h4>L\u00ebvizje e sigurt drejt shk\u00ebputjes s\u00eb t\u00eb dh\u00ebnave nga llogaritjet<\/h4>\n<p>\nN\u00eb k\u00ebt\u00eb artikull diskutuam se si aplikacionet po riorientohen p\u00ebr t\u00eb punuar pa ruajtje t\u00eb gjendjes, ose, n\u00eb fjal\u00eb t\u00eb tjera, ruajtja e t\u00eb dh\u00ebnave ndahen nga llogaritjet mbi to. N\u00eb p\u00ebrfundim, le 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, tradicionalisht \u00ebsht\u00eb p\u00ebrdorur me ruajtje gjendjeje dhe me shp\u00ebrndarje n\u00eb sistemin e skedar\u00ebve HDFS. Megjithat\u00eb, nd\u00ebrsa Spark kalon n\u00eb bot\u00ebn e orientuar nga reja, kjo platform\u00eb po p\u00ebrdoret gjithnj\u00eb e m\u00eb shum\u00eb pa ruajtje gjendjeje duke p\u00ebrdorur `s3a`. Spark p\u00ebrdor s3a p\u00ebr t\u00eb transferuar gjendjen n\u00eb sisteme t\u00eb tjera, nd\u00ebrsa vet\u00eb kontejner\u00ebt e Spark punojn\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb plot\u00eb pa ruajtje gjendjeje. Aktor\u00eb t\u00eb tjer\u00eb t\u00eb m\u00ebdhenj n\u00eb fush\u00ebn e analiz\u00ebs s\u00eb t\u00eb dh\u00ebnave t\u00eb m\u00ebdha, p\u00ebrkat\u00ebsisht, <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> po ashtu po kalojn\u00eb n\u00eb pun\u00eb me ndarjen e ruajtjes s\u00eb t\u00eb dh\u00ebnave dhe llogaritjeve mbi to.<\/p>\n<p>Modelet e ngjashme gjithashtu v\u00ebrehen n\u00eb platforma t\u00eb tjera t\u00eb m\u00ebdha analitike, p\u00ebrfshir\u00eb Presto, Tensorflow p\u00ebr R, Jupyter. Duke eksportuar gjendjen n\u00eb sisteme t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb re, b\u00ebhet shum\u00eb m\u00eb e leht\u00eb t\u00eb menaxhosh aplikacionin t\u00ebnd dhe ta shkall\u00ebzosh 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.2 - 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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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}]}}