Kas yra paslaugų tinklelis?

Sveiki dar kartą!.. Kursų pradžios išvakarėse „Programinės įrangos architektas“ Paruošėme dar vieną naudingą vertimą.

Kas yra paslaugų tinklelis?

Paslaugų tinklelis yra konfigūruojamas, mažai delsos turintis infrastruktūros sluoksnis, reikalingas dideliems tinklo procesų ryšių tarp taikomųjų programų programavimo sąsajų (API) tvarkymui. „Service Mesh“ įgalina greitą, patikimą ir saugų ryšį tarp konteinerinių ir dažnai trumpalaikių taikomųjų programų infrastruktūros paslaugų. „Service Mesh“ teikia tokias galimybes kaip paslaugų aptikimas, apkrovos balansavimas, šifravimas, skaidrumas, atsekamumas, autentifikavimas ir autorizavimas bei automatinio išjungimo modelio palaikymas (grandinės pertraukiklis).
Aptarnavimo tinklelis paprastai įgyvendinamas suteikiant kiekvienam paslaugos egzemplioriui tarpinio serverio egzempliorių, vadinamą Šoninė priekaba. Šoninė priekaba tvarkyti ryšius tarp tarnybų, stebėti ir spręsti saugumo problemas, tai yra viską, ką galima abstrahuoti iš atskirų paslaugų. Tokiu būdu kūrėjai gali rašyti, prižiūrėti ir aptarnauti programos kodą paslaugose, o sistemos administratoriai gali dirbti su Service Mesh ir paleisti programą.

„Istio“ iš „Google“, IBM ir „Lyft“ šiuo metu yra garsiausia paslaugų tinklo architektūra. O „Kubernetes“, kuri iš pradžių buvo sukurta „Google“, dabar yra vienintelė „Istio“ palaikoma konteinerių orkestravimo sistema. Pardavėjai bando sukurti komerciškai palaikomas Istio versijas. Bus įdomu pamatyti, kokių naujų dalykų jie gali įnešti į atvirojo kodo projektą.

Tačiau „Istio“ nėra vienintelė galimybė, nes kuriami kiti „Service Mesh“ diegimai. Šablonas sidecar proxy yra populiariausias įgyvendinimas, galima spręsti iš projektų „Buoyant“, „HashiCorp“, „Solo.io“ ir kt. Taip pat yra alternatyvių architektūrų: „Netflix“ technologijos įrankių rinkinys yra vienas iš būdų, kai „Service Mesh“ funkcionalumas įgyvendinamas per „Ribbon“, „Hysterix“, „Eureka“, „Archaius“ bibliotekas, taip pat tokias platformas kaip „Azure Service Fabric“.

„Service Mesh“ taip pat turi savo paslaugų komponentų ir funkcijų terminologiją:

  • Konteinerio orkestravimo karkasas. Kadangi į taikomųjų programų infrastruktūrą įtraukiama vis daugiau konteinerių, reikia atskiro konteinerių stebėjimo ir valdymo įrankio – konteinerių orkestravimo karkaso. Kubernetes tvirtai užėmė šią nišą tiek, kad net pagrindiniai jos konkurentai Docker Swarm ir Mesosphere DC/OS siūlo integraciją su Kubernetes kaip alternatyvą.
  • Paslaugos ir egzemplioriai („Kubernetes Pods“). Egzempliorius yra viena veikianti mikroserviso kopija. Kartais vienas pavyzdys yra vienas konteineris. „Kubernetes“ egzempliorius susideda iš nedidelės nepriklausomų konteinerių grupės, vadinamos „pod“. Klientai retai pasiekia egzempliorių ar paketą tiesiogiai; dažniau jie pasiekia paslaugą, kuri yra identiškų, keičiamo dydžio ir gedimams atsparių egzempliorių arba rinkinių (kopijų) rinkinys.
  • Priekabos tarpinis serveris. Sidecar Proxy veikia su vienu egzemplioriumi arba bloku. „Sidecar Proxy“ tikslas yra nukreipti arba tarpinio serverio srautą iš konteinerio, su kuriuo jis veikia, ir grąžinti srautą. Sidecar sąveikauja su kitais Sidecar tarpiniais serveriais ir yra valdomas orkestravimo sistemos. Daugelis „Service Mesh“ diegimų naudoja „Sidecar“ tarpinį serverį, kad perimtų ir tvarkytų visą srautą į egzempliorių ar bloką ir iš jo.
  • Paslaugos atradimas. Kai egzempliorius turi susisiekti su kita paslauga, jis turi rasti (atrasti) sveiką ir prieinamą kitos paslaugos egzempliorių. Paprastai egzempliorius atlieka DNS paieškas. Sudėtinio rodinio orkestravimo sistema palaiko egzempliorių, paruoštų priimti užklausas, sąrašą ir pateikia DNS užklausų sąsają.
  • Apkrovos balansavimas. Dauguma konteinerių orkestravimo karkasų užtikrina apkrovos balansavimą 4 lygmenyje (transportas). „Service Mesh“ įgyvendina sudėtingesnį apkrovos balansavimą 7 lygmenyje (programos lygiu), gausu algoritmų ir efektyviau valdant srautą. Apkrovos balansavimo parametrus galima pakeisti naudojant API, todėl galite organizuoti mėlynai žalios spalvos arba kanarinės spalvos diegimus.
  • Šifravimas. „Service Mesh“ gali užšifruoti ir iššifruoti užklausas ir atsakymus, pašalindama šią paslaugų naštą. „Service Mesh“ taip pat gali pagerinti našumą, suteikdama pirmenybę arba pakartotinai naudodama esamus nuolatinius ryšius, sumažindama brangių skaičiavimų poreikį kuriant naujus ryšius. Dažniausiai naudojamas srauto šifravimas abipusis TLS (mTLS), kur viešojo rakto infrastruktūra (PKI) generuoja ir platina sertifikatus ir raktus, skirtus naudoti Sidecar Proxy.
  • Autentifikavimas ir autorizacija. „Service Mesh“ gali įgalioti ir autentifikuoti užklausas, pateiktas iš programos išorės arba viduje, egzemplioriams siųsdamas tik patvirtintas užklausas.
  • Automatinio išjungimo modelio palaikymas. „Service Mesh“ palaiko automatinio išjungimo modelis, kuri išskiria nesveikus atvejus ir prireikus palaipsniui grąžina juos į sveikų atvejų grupę.

Iškviečiama „Service Mesh“ programos dalis, kuri valdo tinklo srautą tarp egzempliorių Duomenų plokštuma. Sukurkite ir įdiekite konfigūraciją, kuri valdo elgesį Duomenų plokštuma, atliekamas naudojant atskirą Valdymo plokštuma. Valdymo plokštuma paprastai apima arba yra skirtas prisijungti prie API, CLI arba GUI, kad būtų galima valdyti programą.

Kas yra paslaugų tinklelis?
Valdymo plokštuma paslaugų tinkle paskirsto konfigūraciją tarp šoninio priekabos tarpinio serverio ir duomenų plokštumos.

Service Mesh architektūra dažnai naudojama sudėtingoms veiklos problemoms spręsti naudojant konteinerius ir mikropaslaugas. Šios srities pionieriai mikropaslaugos yra tokios kompanijos kaip Lyft, Netflix ir Twitter, kurios teikia stabilias paslaugas milijonams vartotojų visame pasaulyje. (Čia išsamiai apžvelgiami kai kurie architektūriniai iššūkiai, su kuriais susidūrė „Netflix“.). Mažiau reiklioms programoms greičiausiai pakaks paprastesnės architektūros.

Tikėtina, kad „Service Mesh“ architektūra niekada nebus atsakymas į visas programos veikimo ir pristatymo problemas. Architektai ir kūrėjai turi didžiulį įrankių arsenalą, ir tik vienas iš jų yra plaktukas, kuris, be daugelio užduočių, turi išspręsti tik vieną – įkalti vinius. „Microservices“ referencinė architektūra iš NGINXPavyzdžiui, apima kelis skirtingus modelius, kuriuose pateikiamas problemų sprendimo būdų, naudojant mikropaslaugas, tęstinumas.

Elementai, kurie susijungia į „Service Mesh“ architektūrą, pvz., NGINX, konteineriai, „Kubernetes“ ir „microservices“ kaip architektūrinis metodas, gali būti vienodai produktyvūs ne „Service Mesh“ diegimuose. Pavyzdžiui, „Istio“ buvo sukurta kaip visapusiška paslaugų tinklo architektūra, tačiau jos moduliškumas reiškia, kad kūrėjai gali pasirinkti ir įdiegti tik jiems reikalingus technologijos komponentus. Turint tai omenyje, svarbu aiškiai suprasti „Service Mesh“ koncepciją, net jei nesate tikri, kad kada nors galėsite ją visiškai įdiegti savo programoje.

Moduliniai monolitai ir DDD

Šaltinis: www.habr.com

Добавить комментарий