Kubernetes

Aplikacije protiv države bez državljanstva na Kubernetesu

Aplikacije protiv države bez državljanstva na Kubernetesu
Važni kriteriji koje treba razmotriti prije pokretanja nove aplikacije u proizvodnji je temeljna arhitektura aplikacije. Pojam koji se često koristi u ovom kontekstu je da je aplikacija „bez državljanstva” ili da je aplikacija „sa statusom države”. Obje vrste imaju svoje prednosti i nedostatke. Imat ćemo Kubernetesov klaster u pozadini svog uma kada govorimo o aplikaciji ili usluzi koja se pokreće u proizvodnji. Možete instalirati vlastiti klaster Kubernetes u oblak ili ga možete pokrenuti kao jedan čvor na računalu da biste se malo vježbali.

Počnimo s naivnom definicijom "apatridije", a zatim polako napredujmo do rigoroznijeg i stvarnijeg pogleda.

Aplikacija bez državljanstva je ona koja ne ovisi o postojanoj pohrani. Jedino za što je odgovoran vaš klaster je kôd i ostali statički sadržaji koji su na njemu hostirani. To je to, nema mijenjanja baza podataka, nema upisa i nema preostalih datoteka kada se mahuna briše.

Aplikacija sa statusom, s druge strane, ima nekoliko drugih parametara na koje bi trebala paziti u klasteru. Postoje dinamičke baze podataka koje se, čak i kad je aplikacija izvan mreže ili se briše, zadržavaju na disku. Na distribuiranom sustavu, poput Kubernetesa, ovo postavlja nekoliko problema. Detaljno ćemo ih razmotriti, ali prvo razjasnimo neke zablude.

Usluge bez državljanstva zapravo nisu 'apatrid'

Što znači kad kažemo stanje sustava? Pa, razmotrimo sljedeći jednostavan primjer automatskih vrata.

Vrata se otvaraju kad senzor prepozna nekoga tko se približava i zatvaraju se kad senzor ne dobije odgovarajući ulaz.

U praksi je vaša aplikacija bez državljanstva slična ovom gore navedenom mehanizmu. Može imati mnogo više stanja nego samo zatvorena ili otvorena, i mnogo različitih vrsta unosa, što ga čini složenijim, ali u osnovi istim.

Komplicirane probleme može riješiti samo primanjem unosa i izvođenjem radnji koje ovise i o ulazu i o stanju u kojem se nalazi. Broj mogućih stanja je unaprijed definiran.

Dakle, apatridnost je pogrešan naziv.

Aplikacije bez državljanstva u praksi također mogu malo varati spremajući detalje o, recimo, klijentovim sesijama na samog klijenta (HTTP kolačići su sjajan primjer), a i dalje imaju lijepo apatridstvo zbog čega će besprijekorno raditi na klasteru.

Na primjer, detalji klijentove sesije, poput proizvoda koji su spremljeni u košaricu, a nisu odjavljeni, mogu se pohraniti na klijentu i sljedeći put kada sesija započne s tim se relevantnim detaljima prisjeća.

Na Kubernetesovom klasteru aplikacija bez državljanstva nije povezana s trajnom pohranom ili volumenom. Iz operativne perspektive, ovo je sjajna vijest. Različite mahune diljem klastera mogu raditi neovisno s više zahtjeva koji im istovremeno dolaze. Ako nešto pođe po zlu, možete jednostavno ponovno pokrenuti aplikaciju i vratit će se u početno stanje s malo zastoja.

Usluge sa statusom države i CAP teorem

S druge strane, državne službe morat će se brinuti zbog puno, puno rubnih slučajeva i čudnih problema. Pod je popraćen s najmanje jednim volumenom i ako su podaci u tom volumenu oštećeni, to se nastavlja čak i ako se cijeli klaster ponovno pokrene.

Na primjer, ako izvodite bazu podataka na klasteru Kubernetes, sve mahune moraju imati lokalni volumen za spremanje baze podataka. Svi podaci moraju biti u savršenoj sinkronizaciji.

Dakle, ako netko izmijeni unos u bazu podataka, a to je učinjeno na pod A, a zahtjev za čitanje dođe na pod B da vidi te izmijenjene podatke, tada pod B mora prikazati te najnovije podatke ili vam poslati poruku o pogrešci. To je poznato kao dosljednost.

Dosljednost, u kontekstu Kubernetesove skupine, znači svako čitanje prima najnovije upisivanje ili poruku o pogrešci.

Ali ovo rezanje protiv dostupnost, jedan od najvažnijih razloga za distribuirani sustav. Dostupnost podrazumijeva da vaša aplikacija funkcionira što je moguće bliže savršenstvu, danonoćno, uz što manje pogrešaka.

Može se tvrditi da sve ovo možete izbjeći ako imate samo jednu centraliziranu bazu podataka koja je odgovorna za rješavanje svih trajnih potreba za pohranom. Sad smo se vratili na jednu točku neuspjeha, što je još jedan problem koji bi Kubernetesovi klasteri uopće trebali riješiti.

Morate imati decentraliziran način spremanja trajnih podataka u klasteru. Obično se naziva mrežnom particijom. Štoviše, vaš klaster mora biti sposoban preživjeti neuspjeh čvorova koji izvode aplikaciju sa statusom. Ovo je poznato kao tolerancija particije.

Bilo koja usluga (ili aplikacija) s statusom koja se izvodi na Kubernetesovom klasteru mora imati ravnotežu između ova tri parametra. U industriji je poznat kao CAP teorem gdje se uzimaju u obzir kompromisi između dosljednosti i dostupnosti u prisutnosti mrežne particije.

Daljnje reference

Za daljnji uvid u CAP teorem možda biste željeli pogledati ovaj izvrstan govor Bryana Cantrilla, koji mnogo bliže proučava pokretanje distribuiranih sustava u proizvodnji.

Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...
Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...