Alustame kodakondsusetuse naiivse määratlusega ja liigume seejärel aeglasemalt rangema ja reaalsema pilguga.
Kodakondsuseta rakendus on see, mis ei sõltu püsivast salvestusruumist. Ainus asi, mille eest teie klaster vastutab, on kood ja muu staatiline sisu, mida sellel hostitakse. See on kõik, ei vahetata andmebaase, ei kirjutata ega faile, kui kaust kustutatakse.
Olekurakendusel on seevastu veel mitu parameetrit, mida see peaks klastris hoolitsema. On dünaamilisi andmebaase, mis püsivad kettal ka siis, kui rakendus on võrguühenduseta või kustutatud. Hajutatud süsteemis, nagu Kubernetes, tekitab see mitmeid probleeme. Vaatame neid üksikasjalikult, kuid kõigepealt selgitame mõningaid väärarusaamu.
Kodakondsuseta teenused pole tegelikult „kodakondsuseta”
Mida see tähendab, kui ütleme süsteemi olekut? Vaatame järgmist automaatset ukse lihtsat näidet.
Uks avaneb, kui andur tuvastab kellegi lähenemise, ja see sulgub, kui andur ei saa asjakohast sisendit.
Praktikas on teie kodakondsuseta rakendus sarnane ülaltoodud mehhanismiga. Sellel võib olla palju rohkem olekuid kui lihtsalt suletud või avatud ja palju erinevaid sisendeid, mis muudavad selle keerukamaks, kuid sisuliselt samaks.
See suudab keerukaid probleeme lahendada lihtsalt sisendi vastuvõtmise ja toimingute abil, mis sõltuvad nii sisendist kui ka selle olekust. Võimalike olekute arv on eelnevalt määratletud.
Nii et kodakondsusetus on vale nimi.
Kodakondsuseta rakendused võivad praktikas ka natuke petta, salvestades näiteks kliendi seansside üksikasjad kliendile endale (suurepärane näide on HTTP-küpsised) ja neil on endiselt kena kodakondsusetus, mis paneks neid klastris laitmatult töötama.
Näiteks saab kliendi seansi üksikasjad, näiteks need, millised tooted ostukorvi salvestati ja mida ei kontrollitud, kliendile salvestada ning järgmisel korral, kui seanss algab, meenutatakse ka neid asjakohaseid üksikasju.
Kubernetese klastris pole kodakondsuseta rakendusel sellega seotud püsivat salvestusruumi ega mahtu. Operatsioonide vaatenurgast on see suurepärane uudis. Erinevad kaustad üle kogu klastri võivad töötada iseseisvalt, kui neile saabub korraga mitu taotlust. Kui midagi läheb valesti, saate rakenduse lihtsalt taaskäivitada ja see läheb vähese seiskamisajaga tagasi algsesse olekusse.
Riiklikud teenused ja ÜPP teoreem
Riiklikud teenused peavad seevastu muretsema paljude ja paljude äärmuslike juhtumite ja imelike probleemide pärast. Kaunaga on kaasas vähemalt üks köide ja kui selles köites olevad andmed on rikutud, püsib see ka siis, kui kogu klaster taaskäivitatakse.
Näiteks kui käitate andmebaasi Kubernetes klastris, peavad kõigil kaunadel olema andmebaasi salvestamiseks kohalik maht. Kõik andmed peavad olema ideaalses sünkroonis.
Nii et kui keegi muudab andmebaasi kirjet ja see tehti pod A-l ning lugemisnõue tuleb B-modifikatsioonile, et näha neid muudetud andmeid, peab Pod B näitama neid viimaseid andmeid või andma teile tõrketeate. Seda nimetatakse järjepidevuseks.
Järjepidevus, Kubernetese klastri kontekstis tähendab iga lugemine saab viimase kirjutamise või tõrketeate.
Kuid see lõikab vastu kättesaadavus, hajutatud süsteemi omamise üks olulisemaid põhjuseid. Kättesaadavus tähendab, et teie rakendus toimib ööpäevaringselt võimalikult täiuslikkuse lähedal kui võimalik, võimalikult väheste vigadega.
Võib väita, et seda kõike saab vältida, kui teil on ainult üks tsentraliseeritud andmebaas, mis vastutab kõigi püsivate salvestusvajaduste eest. Nüüd oleme taas ühe rikkepunkti käes, mis on järjekordne probleem, mille Kubernetese klastrid peaksid kõigepealt lahendama.
Püsivate andmete klastrisse salvestamiseks peab teil olema detsentraliseeritud viis. Tavaliselt nimetatakse seda võrgu sektsioonideks. Pealegi peab teie klaster suutma üle elada olekurakendust käitavate sõlmede tõrke. Seda tuntakse kui jaotustaluvus.
Kõigil Kubernetes klastris käitatavatel olekutega teenustel (või rakendustel) peab olema nende kolme parameetri vaheline tasakaal. Tööstuses on see tuntud kui ÜPP teoreem, kus järjepidevuse ja kättesaadavuse vahelisi kompromisse arvestatakse võrgu jaotamise olemasolul.
Edasised viited
Ühise põllumajanduspoliitika teoreemi kohta lisateabe saamiseks võiksite vaadata seda suurepärast juttu, mille pidas Bryan Cantrill, kes uurib palju lähemalt hajutatud süsteemide käitamist tootmises.