{"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\/lv\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","title":{"rendered":"Datu uzglab\u0101\u0161anas mode\u013ci 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=\"Datu uzglab\u0101\u0161anas mode\u013ci Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/148744e73101d47e7a5a76bdd3bb57e1.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nSveiki, Habr!<\/p>\n<p>Atg\u0101din\u0101m, ka esam izlaidu\u0161i k\u0101rt\u0113jo \u0101rk\u0101rt\u012bgi interesanto un noder\u012bgo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/patterny-kubernetes-shablony-razrabotki-sobstvennyh-oblachnyh-prilozheniy\">gr\u0101mata<\/a><\/noindex> par Kubernetes mode\u013ciem. Viss s\u0101k\u0101s ar \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/all\/product\/raspredelennye-sistemy-patterny-proektirovaniya\">Paraugiem<\/a><\/noindex>\" Brendana Berna, un, starp citu, m\u016bsu darbs \u0161aj\u0101 segment\u0101 ir <noindex><a rel=\"nofollow\" href=\"https:\/\/www.piter.com\/collection\/new\/product\/kubernetes-dlya-devops-razvertyvanie-zapusk-i-masshtabirovanie-v-oblake\">v\u0101r\u0101s<\/a><\/noindex>, \u0161odien m\u0113s pied\u0101v\u0101jam jums izlas\u012bt rakstu no MinIO emu\u0101ra, kas \u012bsi izkl\u0101sta tendences un specifiku datu glab\u0101\u0161anas paraugiem Kubernetes vid\u0113.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Kubernetes fundament\u0101li main\u012bjis tradicion\u0101los lietot\u0146u izstr\u0101des un izvieto\u0161anas paraugus. Tagad komand\u0101m var aiziet tikai da\u017eas dienas, lai izstr\u0101d\u0101tu, p\u0101rbaud\u012btu un izvietotu lietotni \u2013 da\u017e\u0101d\u0101s vid\u0113s, un viss tas Kubernetes klasteros. \u0160\u0101das tehnolo\u0123ijas no iepriek\u0161\u0113j\u0101m paaudz\u0113m parasti pras\u012bja ned\u0113\u013cas, ja ne m\u0113ne\u0161us.<\/p>\n<p>\u0160\u0101ds pa\u0101trin\u0101jums ir iesp\u0113jams, pateicoties Kubernetes nodro\u0161in\u0101tajai abstrah\u0113\u0161anai \u2014 tas ir, pateicoties tam, ka Kubernetes pats nodro\u0161ina mijiedarb\u012bbu ar zem\u0101k\u0101m fizisko vai virtu\u0101lo ma\u0161\u012bnu deta\u013c\u0101m, \u013caujot lietot\u0101jiem noteikt, starp cit\u0101m iesp\u0113j\u0101m, nepiecie\u0161amo procesoru, nepiecie\u0161amo atmi\u0146as apjomu un konteineru skaitu. T\u0101 k\u0101 Kubernetes atbalsta milz\u012bga kopiena un t\u0101 pielieto\u0161anas apjoms nep\u0101rtraukti papla\u0161in\u0101s, tas iev\u0113rojami apsteidz visus konteineru or\u0137estr\u0101cijas platformas.<\/p>\n<p><i><b>Palielinoties Kubernetes izmanto\u0161anai, pieaug ar\u012b neskaidr\u012bba par taj\u0101 izmantotajiem datu glab\u0101\u0161anas paraugiem.<\/b><\/i>.<\/p>\n<p>Saskaroties ar visp\u0101r\u0113ju konkurenci par datu glab\u0101tuvi Kubernetes (tas ir, par datu glab\u0101\u0161anu), kad runa ir par datu glab\u0101\u0161anu, sign\u0101ls \u0161eit paz\u016bd sp\u0113c\u012bg\u0101 troksn\u012b.<br \/>\nKubernetes iemieso m\u016bsdienu modeli lietot\u0146u izstr\u0101dei un izvieto\u0161anai, k\u0101 ar\u012b to p\u0101rvald\u012bbai. \u0160\u0101ds m\u016bsdienu modelis atdala datu glab\u0101\u0161anu no apr\u0113\u0137iniem. Lai piln\u012bb\u0101 saprastu \u0161o atdal\u012b\u0161anu Kubernetes kontekst\u0101, ir j\u0101izprot, kas ir lietotnes, kas str\u0101d\u0101 ar st\u0101vokli vai bez t\u0101, un k\u0101 tas apvienojas ar datu glab\u0101\u0161anu. Tie\u0161i \u0161eit REST API pieeja, ko izmanto S3, ir ac\u012bmredzamas priek\u0161roc\u012bbas sal\u012bdzin\u0101jum\u0101 ar POSIX\/CSI pieeju, kas rakstur\u012bga cit\u0101m risin\u0101jumiem.<\/p>\n<p>\u0160aj\u0101 rakst\u0101 m\u0113s run\u0101sim par datu uzglab\u0101\u0161anas mode\u013ciem Kubernetes un atsevi\u0161\u0137i apskat\u012bsim str\u012bdu par lietojumprogramm\u0101m, kas darbojas ar un bez st\u0101vok\u013ca saglab\u0101\u0161anas, lai saprastu, k\u0101da ir at\u0161\u0137ir\u012bba starp t\u0101m un k\u0101p\u0113c t\u0101 ir svar\u012bga. T\u0101l\u0101k rakst\u0101 tiks apskat\u012btas lietojumprogrammas un taj\u0101s izmantotie datu uzglab\u0101\u0161anas mode\u013ci, \u0146emot v\u0113r\u0101 lab\u0101k\u0101s prakses containers un Kubernetes darb\u0101.<\/p>\n<h4>Ne-st\u0101vok\u013ca konteineri<\/h4>\n<p>\nKonteineri p\u0113c b\u016bt\u012bbas ir viegli un efem\u0113ri. Tos var viegli aptur\u0113t, dz\u0113st vai izvietot cit\u0101 mezgl\u0101 \u2013 viss \u0161is process aiz\u0146em vien da\u017eas sekundes. Liel\u0101 konteineru or\u0137estr\u0101cijas sist\u0113m\u0101 \u0161\u0101das darb\u012bbas notiek nep\u0101rtraukti, un lietot\u0101ji pat nepamana \u0161\u012bs izmai\u0146as. Tom\u0113r p\u0101rvieto\u0161ana ir iesp\u0113jama tikai tad, ja konteineram nav nek\u0101du atkar\u012bbu no mezgla, uz kura tas atrodas. Par \u0161\u0101diem konteineriem saka, ka tie darbojas <i>bez st\u0101vok\u013ca<\/i>.<\/p>\n<h4>St\u0101vok\u013ca konteineri<\/h4>\n<p>\nJa konteiners glab\u0101 datus viet\u0113ji piesl\u0113gtos ier\u012bc\u0113s (vai uz bloku ier\u012bces), tad datu kr\u0101tuve, kur\u0101 tas atrodas, b\u016bs j\u0101p\u0101rvieto uz jaunu mezglu kop\u0101 ar pa\u0161u konteineru \u2013 k\u013c\u016bmes gad\u012bjum\u0101. Tas ir svar\u012bgi, jo pret\u0113j\u0101 gad\u012bjum\u0101 konteiner\u0101 palai\u017eam\u0101 lietojumprogramma nesp\u0113s pareizi darboties, jo tai ir nepiecie\u0161ams piek\u013c\u016bt datiem, kas glab\u0101ti viet\u0113jos nes\u0113jos. Par \u0161\u0101diem konteineriem saka, ka tie darbojas <i>ar st\u0101vok\u013ca saglab\u0101\u0161anu<\/i>.<\/p>\n<p>Tehnisk\u0101 zi\u0146\u0101 st\u0101vok\u013ca konteinerus ar\u012b var p\u0101rvietot uz citiem mezgliem. Parasti to nodro\u0161ina ar izdal\u012bt\u0101m failu sist\u0113m\u0101m vai t\u012bkla blok\u0101 datu kr\u0101tuves, kas ir pievienotas visiem mezgliem, uz kuriem str\u0101d\u0101 konteineri. T\u0101d\u0113j\u0101di konteineri ieg\u016bst piek\u013cuvi tiltiem, lai persist\u0113t datu uzglab\u0101\u0161anai, un inform\u0101cija tiek glab\u0101ta diskos, kas atrodas vis\u0101 t\u012bkl\u0101. \u0160\u0101du metodi es sauk\u0161u par \u201c<i>st\u0101vok\u013ca saglab\u0101\u0161anas konteineru pieeju<\/i>\u201d, un atliku\u0161aj\u0101 raksta da\u013c\u0101 es to ar\u012b sauk\u0161u t\u0101d\u0101 veid\u0101 vienk\u0101r\u0161\u012bbas labad.<\/p>\n<p><img decoding=\"async\" alt=\"Datu uzglab\u0101\u0161anas mode\u013ci Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/a5546db15801389d58476f50c8c66803.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTipiskaj\u0101 konteineru pieej\u0101 ar st\u0101vok\u013ca saglab\u0101\u0161anu visi lietot\u0146u podi tiek piesaist\u012bti vienai izplat\u012btajai failu sist\u0113mai \u2013 san\u0101k sava veida kop\u012bgi izmantota kr\u0101tuve, kur\u0101 tiek uzkr\u0101ti visi lietot\u0146u dati. Lai gan iesp\u0113jamas da\u017eas vari\u0101cijas, tas ir augsta l\u012bme\u0146a pieejas raksturojums.<\/p>\n<p>Tagad apl\u016bkosim, k\u0101p\u0113c konteineru pieeja ar st\u0101vok\u013ca saglab\u0101\u0161anu m\u0101ko\u0146orient\u0113taj\u0101 pasaul\u0113 ir antipatern.<\/p>\n<h4>M\u0101ko\u0146orient\u0113ta lietot\u0146u projekt\u0113\u0161ana<\/h4>\n<p>\nTradicion\u0101li lietotnes izmantoja datub\u0101zes struktur\u0113tai inform\u0101cijas glab\u0101\u0161anai un lok\u0101los diskus vai izplat\u012btas failu sist\u0113mas, uz kur\u0101m tika iemesti visi nestruktur\u0113tie vai pat da\u013c\u0113ji struktur\u0113tie dati. Pieaugot nestruktur\u0113to datu apjomiem, izstr\u0101d\u0101t\u0101ji saprata, ka POSIX ir p\u0101r\u0101k \"trok\u0161\u0146ains\", saist\u012bts ar b\u016btisk\u0101m izmaks\u0101m un beigu beig\u0101s trauc\u0113 lietotnes darb\u012bbu, p\u0101rejot uz patie\u0161\u0101m lieliem m\u0113rogiem.<\/p>\n<p>Tas galvenok\u0101rt veicin\u0101ja jauna datu glab\u0101\u0161anas standarta ra\u0161anos, proti, m\u0101ko\u0146orient\u0113t\u0101m kr\u0101tuv\u0113m, kas galvenok\u0101rt darbojas uz REST API b\u0101zes un atbr\u012bvo lietotni no apgr\u016btino\u0161\u0101s lok\u0101l\u0101 datu glab\u0101\u0161anas uztur\u0113\u0161anas. \u0160\u0101d\u0101 gad\u012bjum\u0101 lietotne faktiski p\u0101riet uz st\u0101vok\u013ca saglab\u0101\u0161anas izsl\u0113g\u0161anu (jo st\u0101voklis atrodas att\u0101l\u0101 kr\u0101tuv\u0113). M\u016bsdienu lietotnes tiek veidotas no pa\u0161a s\u0101kuma, \u0146emot v\u0113r\u0101 \u0161o faktoru. Parasti katra m\u016bsdienu lietotne, kas apstr\u0101d\u0101 k\u0101da veida datus (logus, metadatus, blokus utt.) ir uzb\u016bv\u0113ta saska\u0146\u0101 ar m\u0101ko\u0146orient\u0113tu paradigmu, kur st\u0101voklis tiek p\u0101rvietots uz \u012bpa\u0161i tam velt\u012btu programmat\u016bras sist\u0113mu. <\/p>\n<p><i><b>Konteineru pieeja ar st\u0101vok\u013ca saglab\u0101\u0161anu liek visai \u0161ai paradigmai atgriezties tie\u0161i tur, no kurienes t\u0101 s\u0101k\u0101s! <\/b><\/i><\/p>\n<p>Izmantojot POSIX saskarnes datu glab\u0101\u0161anai, lietojumprogrammas darbojas t\u0101pat k\u0101 tad, ja t\u0101s saglab\u0101tu st\u0101vokli, un t\u0101d\u0113\u013c novirz\u0101s no vissvar\u012bg\u0101kajiem m\u0101ko\u0146orient\u0113t\u0101 projekt\u0113\u0161anas postul\u0101tiem, proti, no iesp\u0113jas main\u012bt lietojumprogrammas darba pl\u016bsmu izm\u0113rus atkar\u012bb\u0101 no ien\u0101ko\u0161\u0101s slodzes, p\u0101rvietoties uz jaunu mezglu, tikl\u012bdz aktu\u0101lais mezgls neizdodas, un t\u0101 t\u0101l\u0101k.<\/p>\n<p>Uz t\u0101m uzman\u012bg\u0101k paskatoties, atkl\u0101jam, ka, izv\u0113loties datu glab\u0101tuvi, m\u0113s atkal un atkal saskaramies ar dilemmu \"POSIX pret REST API\", BET ar papildu probl\u0113mu saasin\u0101\u0161anu, ko izraisa POSIX distribu\u0113t\u0101s rakstura d\u0113\u013c Kubernetes vid\u0113. Proti,<\/p>\n<ul>\n<li><b>POSIX ir izteiksm\u012bgs<\/b>: POSIX semantika prasa asoci\u0113t ar katru oper\u0101ciju metadatus un failu descriptorus, kas pal\u012bdz uztur\u0113t oper\u0101cijas st\u0101vokli. Tas rada b\u016btiskas izmaksas, kas nav nek\u0101das re\u0101las v\u0113rt\u012bbas. Objekta glab\u0101\u0161anas API, \u012bpa\u0161i S3 API, ir atbr\u012bvoju\u0161ies no \u0161\u012bm pras\u012bb\u0101m, \u013caujot lietojumprogrammai izpild\u012bt uzdevumu un p\u0113c tam \"aizmirst\" par izsaukumu. Datu glab\u0101\u0161anas sist\u0113mas atbilde nor\u0101da, vai \u0161\u012b darb\u012bba tika veikta veiksm\u012bgi vai n\u0113. Ja rodas k\u013c\u016bme, lietojumprogramma var veikt atk\u0101rtotu m\u0113\u0123in\u0101jumu.<\/li>\n<li><b>T\u012bkla ierobe\u017eojumi<\/b>: Distribu\u0113t\u0101 sist\u0113m\u0101 tiek pie\u0146emts, ka var past\u0101v\u0113t daudzas lietojumprogrammas, kas m\u0113\u0123ina ierakst\u012bt datus vien\u0101 un taj\u0101 pa\u0161\u0101 pievienotaj\u0101 nes\u0113j\u0101. T\u0101d\u0113\u013c, ka lietojumprogrammas sacen\u0161as viena ar otru par joslas platumu (lai nos\u016bt\u012btu datus uz nes\u0113ju), pati datu glab\u0101\u0161anas sist\u0113ma sacen\u0161as par \u0161o joslas platumu, izplatot datus pa fiziskajiem diskiem. Sakar\u0101 ar POSIX izteiksm\u012bbu, t\u012bkla izsaukumu skaits pieaug vair\u0101kk\u0101rt\u012bgi. No otras puses, S3 API nodro\u0161ina skaidru t\u012bkla izsaukumu no\u0161\u0137ir\u0161anu starp izsaukumiem, kas n\u0101k no klienta uz serveri, un tiem, kas notiek servera iek\u0161ien\u0113.<\/li>\n<li><b>Dro\u0161\u012bba<\/b>: POSIX dro\u0161\u012bbas modelis ir izstr\u0101d\u0101ts, lai akt\u012bvi iesaist\u012btu cilv\u0113ku: administratoriem ir j\u0101konfigur\u0113 konkr\u0113ti piek\u013cuves l\u012bme\u0146i katram lietot\u0101jam vai grupai. \u0160\u0101du paradigmu ir gr\u016bti piel\u0101got m\u0101ko\u0146iem balst\u012btai pasaulei. M\u016bsdienu lietojumprogrammas ir atkar\u012bgas no dro\u0161\u012bbas mode\u013ciem, kas ir saist\u012bti ar API, kur piek\u013cuves ties\u012bbas tiek noteiktas k\u0101 politiku kopums, tiek pie\u0161\u0137irtas pakalpojumu konti, pagaidu akredit\u0101cijas dati utt.<\/li>\n<li><b>P\u0101rvald\u0101m\u012bba<\/b>: P\u0101rvald\u012btas konteineru ar saglab\u0101\u0161anu saist\u012btas izmaksas ietver datu piek\u013cuves saska\u0146o\u0161anas, datu konsekvences nodro\u0161in\u0101\u0161anu, kas prasa r\u016bp\u012bgi izv\u0113rt\u0113t, k\u0101di datu piek\u013cuves mode\u013ci tiks izmantoti. Ir j\u0101uzst\u0101da, j\u0101kontrol\u0113 un j\u0101konfigur\u0113 papildu programmas, nerun\u0101jot par papildu p\u016bl\u0113m, kas nepiecie\u0161amas izstr\u0101dei.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Datu kr\u0101tuves konteineru interfeiss<\/h4>\n<p>\nDatu konteineru kr\u0101tuves interfeiss (CSI) lieliski pal\u012bdz\u0113jis izplat\u012bt Kubernetes apjoma l\u012bmeni, da\u013c\u0113ji nododot to tre\u0161o pu\u0161u datu kr\u0101tuves pieg\u0101d\u0101t\u0101jiem, bet ar\u012b nejau\u0161i veicin\u0101jis p\u0101rliec\u012bbu, ka konteineru pieeja ar saglab\u0101\u0161anu ir ieteicams datu glab\u0101\u0161anas veids Kubernetes vid\u0113.<\/p>\n<p>CSI tika izstr\u0101d\u0101ts k\u0101 standarts, lai pied\u0101v\u0101tu vienotas bloka un failu datu kr\u0101tuves sist\u0113mas mantoju\u0161iem lietojumiem Kubernetes vid\u0113. Un, k\u0101 tika par\u0101d\u012bts \u0161aj\u0101 rakst\u0101, vien\u012bg\u0101 situ\u0101cija, kur\u0101 konteineru pieeja ar saglab\u0101\u0161anu (un CSI pa\u0161reiz\u0113j\u0101 form\u0101) ir j\u0113gpilna, ir tad, kad pati lietojumprogramma ir mantoju\u0161a sist\u0113ma, kurai nav iesp\u0113jams pievienot objektu datu kr\u0101tuves API atbalstu.<\/p>\n<p>Ir svar\u012bgi saprast, ka, izmantojot CSI pa\u0161reiz\u0113j\u0101 form\u0101, proti, piesl\u0113dzot apjomus, str\u0101d\u0101jot ar m\u016bsdienu lietojumprogramm\u0101m, m\u0113s saskarsimies ar l\u012bdz\u012bg\u0101m probl\u0113m\u0101m k\u0101 t\u0101s, kas rad\u0101s sist\u0113m\u0101s, kur datu glab\u0101\u0161ana bija organiz\u0113ta POSIX stil\u0101.<\/p>\n<h4>Kvalitat\u012bv\u0101ks pieejas veids<\/h4>\n<p>\n\u0160aj\u0101 gad\u012bjum\u0101 ir svar\u012bgi saprast, ka liel\u0101k\u0101 da\u013ca lietojumprogrammu b\u016bt\u012bb\u0101 nav paredz\u0113tas darbam ar st\u0101vok\u013ca saglab\u0101\u0161anu vai bez t\u0101s. \u0160\u0101da uzved\u012bba ir atkar\u012bga no sist\u0113mas kop\u0113j\u0101s arhitekt\u016bras un no konkr\u0113tajiem variantiem, kas izv\u0113l\u0113ti projekt\u0113\u0161anas laik\u0101. P\u0101rrun\u0101sim nedaudz par lietojumprogramm\u0101m, kas saglab\u0101 st\u0101vokli.<\/p>\n<p>Princip\u0101 visus lietojumprogrammu datus var iedal\u012bt vair\u0101kos pla\u0161os tipos:<\/p>\n<ul>\n<li>\u017durn\u0101lu dati<\/li>\n<li>Laika z\u012bmju dati<\/li>\n<li>Transakciju dati<\/li>\n<li>Metadati<\/li>\n<li>Konteineru att\u0113li<\/li>\n<li>Blobu dati (lieli bin\u0101ri objekti)<\/li>\n<\/ul>\n<p>\nVisi \u0161ie datu tipi ir \u013coti labi atbalst\u012bti m\u016bsdienu datu uzglab\u0101\u0161anas platform\u0101s, un ir pieejamas vair\u0101kas m\u0101ko\u0146orient\u0113tas platformas, kas piel\u0101gotas datu pieg\u0101dei katr\u0101 no \u0161iem konkr\u0113tajiem form\u0101tiem. Piem\u0113ram, transakciju dati un metadati var atrasties m\u016bsdienu m\u0101ko\u0146orient\u0113t\u0101 datu b\u0101z\u0113, piem\u0113ram, CockroachDB, YugaByte utt. Konteineru att\u0113li vai blobu dati var tikt uzglab\u0101ti docker re\u0123istr\u0101, kas balst\u012bts uz MinIO. Laika z\u012bmju dati var tikt uzglab\u0101ti laika rindas datu b\u0101z\u0113, piem\u0113ram, InfluxDB utt. Neiesim deta\u013c\u0101s par katru datu tipu un attiec\u012bgaj\u0101m lietojumprogramm\u0101m, bet visp\u0101r\u0113j\u0101 ideja ir izvair\u012bties no persistant\u0101 datu uzglab\u0101\u0161anas, kas balst\u012bta uz lok\u0101lo disku mont\u0113\u0161anu.<\/p>\n<p><img decoding=\"async\" alt=\"Datu uzglab\u0101\u0161anas mode\u013ci Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/8e39996ef159f09915802549d4e8ecd5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTurkl\u0101t bie\u017ei izr\u0101d\u0101s efekt\u012bvi nodro\u0161in\u0101t pagaidu ke\u0161atmi\u0146as l\u012bmeni, kas lietojumprogramm\u0101m kalpo k\u0101 izveidotu pagaidu failu kr\u0101tuve, ta\u010du lietojumprogrammas nedr\u012bkst pa\u013cauties uz \u0161o l\u012bmeni k\u0101 uz paties\u012bbas avotu.<\/p>\n<h4>Kr\u0101tuve lietojumprogramm\u0101m ar st\u0101vok\u013ca saglab\u0101\u0161anu<\/h4>\n<p>\nLai gan liel\u0101kaj\u0101 da\u013c\u0101 gad\u012bjumu ir izdev\u012bgi tur\u0113t lietojumprogrammas bez st\u0101vok\u013ca saglab\u0101\u0161anas, t\u0101s lietojumprogrammas, kas paredz\u0113tas datu uzglab\u0101\u0161anai \u2013 piem\u0113ram, datu b\u0101zes, objektu kr\u0101tuves, atsl\u0113gu un v\u0113rt\u012bbu kr\u0101tuves \u2013 ir j\u0101uztur ar st\u0101vokli. Apskat\u012bsim, k\u0101p\u0113c \u0161\u012bs lietojumprogrammas tiek izvietotas Kubernetes. K\u0101 piem\u0113ru \u0146emsim MinIO, bet l\u012bdz\u012bgi principi ir piem\u0113rojami jebkur\u0101m cit\u0101m liel\u0101m m\u0101ko\u0146orient\u0113t\u0101m datu uzglab\u0101\u0161anas sist\u0113m\u0101m.<\/p>\n<p>M\u0101ko\u0146u orient\u0113t\u0101s lietojumprogrammas tiek projekt\u0113tas ar m\u0113r\u0137i maksim\u0101li efekt\u012bvi izmantot konteineru elast\u012bbu. Tas noz\u012bm\u0113, ka taj\u0101s netiek pie\u0146emti nek\u0101di pie\u0146\u0113mumi par vidi, kur\u0101 t\u0101s tiks izv\u0113rstas. Piem\u0113ram, MinIO izmanto iek\u0161\u0113jo datu izdz\u012bvo\u0161anas meh\u0101nismu (erasure coding), kas nodro\u0161ina pietiekamu sist\u0113mas notur\u012bbu, lai t\u0101 paliktu funkcion\u0101la pat pusdisku boj\u0101juma gad\u012bjum\u0101. Ar\u012b MinIO p\u0101rvalda datu integrit\u0101ti un dro\u0161\u012bbu, izmantojot savu hash\u0113\u0161anu un \u0161ifr\u0113\u0161anu servera pus\u0113.<\/p>\n<p>\u0160\u0101d\u0101m m\u0101ko\u0146u orient\u0113t\u0101m lietojumprogramm\u0101m k\u0101 rezerves kr\u0101tuve vis\u0113rt\u0101k ir izmantot lok\u0101los persist\u0113jo\u0161os apjomus (PV). Lok\u0101lais PV nodro\u0161ina iesp\u0113ju uzglab\u0101t neapstr\u0101d\u0101tus datus, kam\u0113r lietojumprogrammas, kas darbojas virs \u0161iem PV, pa\u0161as v\u0101c inform\u0101ciju, kas \u013cauj m\u0113rogot datus un p\u0101rvald\u012bt pieaugo\u0161\u0101s datu pras\u012bbas.<\/p>\n<p>\u0160is pieejas modelis ir daudz vienk\u0101r\u0161\u0101ks un daudz lab\u0101k m\u0113rogojams sal\u012bdzin\u0101jum\u0101 ar CSI b\u0101zes PV, kuri sist\u0113m\u0101 ievie\u0161 savus datu p\u0101rvald\u012bbas un redundances l\u012bme\u0146us; probl\u0113ma ir t\u0101da, ka \u0161ie l\u012bme\u0146i parasti konflikt\u0113 ar lietojumprogramm\u0101m, kas projekt\u0113tas, pamatojoties uz st\u0101vok\u013ca saglab\u0101\u0161anu.<\/p>\n<h4>Pa\u0101trin\u0101ta p\u0101reja uz datu atdal\u012b\u0161anu no apr\u0113\u0137iniem<\/h4>\n<p>\n\u0160aj\u0101 rakst\u0101 m\u0113s run\u0101j\u0101m par to, k\u0101 lietojumprogrammas p\u0101rorient\u0113jas darbam bez st\u0101vok\u013ca saglab\u0101\u0161anas, tas ir, datu uzglab\u0101\u0161ana tiek atdal\u012bta no apr\u0113\u0137iniem, ko veic virs tiem. Nosl\u0113gum\u0101 apl\u016bkosim da\u017eus re\u0101lus \u0161\u0101da trenda piem\u0113rus.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/spark.apache.org\/\">Spark<\/a><\/noindex>, slaven\u0101 datu anal\u012bzes platforma, tradicion\u0101li tika izmantota ar st\u0101vok\u013ca saglab\u0101\u0161anu un izv\u0113r\u0161ot to HDFS failu sist\u0113m\u0101. Tom\u0113r, p\u0101rejot uz m\u0101ko\u0146u orient\u0113to pasauli, \u0161\u012b platforma arvien vair\u0101k tiek izmantota bez st\u0101vok\u013ca saglab\u0101\u0161anas, izmantojot `s3a`. Spark izmanto s3a, lai p\u0101rs\u016bt\u012btu st\u0101vokli uz cit\u0101m sist\u0113m\u0101m, kam\u0113r pa\u0161i Spark konteineri darbojas piln\u012bb\u0101 bez st\u0101vok\u013ca saglab\u0101\u0161anas. Citi lielie uz\u0146\u0113mumi, kas darbojas liela apjoma datu anal\u012btikas jom\u0101, proti, <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> , ar\u012b p\u0101riet uz darb\u012bbu ar datu uzglab\u0101\u0161anas un apr\u0113\u0137inu atdal\u012b\u0161anu.<\/p>\n<p>L\u012bdz\u012bgi mode\u013ci ir nov\u0113rojami ar\u012b cit\u0101s liel\u0101s anal\u012btiskaj\u0101s platform\u0101s, piem\u0113ram, Presto, Tensorflow uz R, Jupyter. Izg\u016bstot datus att\u0101lin\u0101taj\u0101s m\u0101ko\u0146glab\u0101\u0161anas sist\u0113m\u0101s, j\u016bsu lietojumprogrammas p\u0101rvald\u012bba un m\u0113rogo\u0161ana k\u013c\u016bst daudz viegl\u0101ka. Turkl\u0101t tas veicina lietojumprogrammas portabilit\u0101ti da\u017e\u0101d\u0101s vid\u0113s.<br \/>\n<br \/>Avots: <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.4 - 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\/lv\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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\udd47 Datu glab\u0101\u0161anas mode\u013ci Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/patterny-hraneniya-dannyh-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/71858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=71858"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/71858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/71859"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=71858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=71858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=71858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}