Mis on teenindusvõrk?

Tere jälle!.. Kursuse alguse eelõhtul "Tarkvaraarhitekt" Oleme koostanud veel ühe kasuliku tõlke.

Mis on teenindusvõrk?

Teenusvõrk on konfigureeritav madala latentsusega infrastruktuurikiht, mida on vaja suurte võrgupõhise protsessidevahelise suhtluse haldamiseks rakenduste programmeerimisliideste (API) vahel. Service Mesh võimaldab kiiret, usaldusväärset ja turvalist sidet konteinerite ja sageli lühiajaliste rakenduste infrastruktuuri teenuste vahel. Service Mesh pakub selliseid võimalusi nagu teenuse leidmine, koormuse tasakaalustamine, krüpteerimine, läbipaistvus, jälgitavus, autentimine ja autoriseerimine ning automaatse väljalülitamise mustri tugi (kaitselüliti).
Teenusvõrk rakendatakse tavaliselt nii, et igale teenuse eksemplarile antakse puhverserver, mida nimetatakse Külgkorv. Külgkorv hallata teenuste vahelist suhtlust, jälgida ja lahendada turvaprobleeme ehk kõike, mida saab üksikutest teenustest välja võtta. Nii saavad arendajad teenustes rakenduse koodi kirjutada, hooldada ja teenindada ning süsteemiadministraatorid teenusevõrguga töötada ja rakendust käivitada.

Google'i, IBM-i ja Lyfti Istio on praegu kõige kuulsam teenindusvõrgu arhitektuur. Kubernetes, mis algselt töötati välja Google'is, on nüüd ainus konteineri orkestreerimisraamistik, mida Istio toetab. Müüjad üritavad luua Istio kaubanduslikult toetatud versioone. Huvitav on näha, mida uut nad saavad avatud lähtekoodiga projekti tuua.

Istio pole aga ainus võimalus, kuna väljatöötamisel on teisi Service Meshi rakendusi. Muster sidecar proxy on kõige populaarsem rakendus, mida saab hinnata projektide Buoyant, HashiCorp, Solo.io ja teiste põhjal. On ka alternatiivseid arhitektuure: Netflixi tehnoloogia tööriistakomplekt on üks lähenemisviisidest, kus Service Meshi funktsionaalsust rakendatakse lindi, Hysterixi, Eureka, Archaiuse teekide, aga ka platvormide nagu Azure Service Fabric kaudu.

Service Meshil on ka teenuse komponentide ja funktsioonide jaoks oma terminoloogia:

  • Konteinerite orkestratsiooniraamistik. Kuna rakenduste infrastruktuuri lisandub järjest rohkem konteinereid, tekib vajadus konteinerite jälgimiseks ja haldamiseks eraldi tööriista – konteinerite orkestratsiooniraamistiku – järele. Kubernetes on selle niši kindlalt hõivanud, nii et isegi selle peamised konkurendid Docker Swarm ja Mesosphere DC/OS pakuvad alternatiivina Kubernetesiga integreerimist.
  • Teenused ja eksemplarid (Kubernetes Pods). Eksemplar on mikroteenuse üks töötav koopia. Mõnikord on üks eksemplar üks konteiner. Kubernetesis koosneb eksemplar väikesest sõltumatute konteinerite rühmast, mida nimetatakse kambriks. Kliendid pääsevad harva otse eksemplarile või kaustale juurde; sagedamini pääsevad nad juurde teenusele, mis on identsete, skaleeritavate ja tõrketaluvusega eksemplaride või kaustade (koopiate) kogum.
  • Külgkorvi puhverserver. Külgkorvi puhverserver töötab ühe eksemplari või kaustaga. Külgkorvi puhverserveri eesmärk on suunata või puhverserveriga liiklus, mis tuleb konteinerist, millega see töötab, ja tagastada liiklus. Külgvagun suhtleb teiste külgkorvi puhverserveritega ja seda haldab orkestreerimisraamistik. Paljud Service Meshi rakendused kasutavad Sidecar Proxyt kogu eksemplari või kausta sisse ja sealt väljuva liikluse pealtkuulamiseks ja haldamiseks.
  • Teenuse avastamine. Kui eksemplar peab suhtlema teise teenusega, peab ta leidma (avastama) teise teenuse tervisliku ja saadaoleva eksemplari. Tavaliselt teostab eksemplar DNS-i otsinguid. Konteinerorkestreerimisraamistik haldab loendit eksemplaridest, mis on valmis päringuid vastu võtma, ja pakub liidest DNS-päringute jaoks.
  • Koormuse tasakaalustamine. Enamik konteinerite orkestreerimisraamistikke tagab koormuse tasakaalustamise 4. kihis (transport). Service Mesh rakendab 7. kihil (rakenduse tasemel) keerukamat koormuse tasakaalustamist, mis on rikas algoritmide poolest ja on liikluse haldamisel tõhusam. Koormuse tasakaalustamise sätteid saab muuta API abil, mis võimaldab teil korraldada sini-rohelist või kanaari juurutamist.
  • Krüpteerimine. Service Mesh saab krüptida ja dekrüpteerida päringuid ja vastuseid, eemaldades selle teenuste koormuse. Service Mesh võib jõudlust parandada ka olemasolevate püsivate ühenduste tähtsuse järjekorda seadmise või taaskasutamise kaudu, mis vähendab uute ühenduste loomiseks kuluka arvutuse vajadust. Liikluse krüptimise kõige levinum rakendus on vastastikune TLS (mTLS), kus avaliku võtme infrastruktuur (PKI) genereerib ja levitab sertifikaate ja võtmeid külgkorvi puhverserveri kasutamiseks.
  • Autentimine ja autoriseerimine. Service Mesh saab autoriseerida ja autentida päringuid, mis on tehtud rakendusest väljast või seest, saates eksemplaridele ainult kinnitatud päringuid.
  • Automaatse väljalülitusmustri tugi. Service Mesh toetab automaatse väljalülitamise muster, mis isoleerib ebatervislikud eksemplarid ja tagastab need vajaduse korral järk-järgult tervislike eksemplaride hulka.

Kutsutakse välja Service Meshi rakenduse osa, mis haldab võrguliiklust eksemplaride vahel Andmetasand. Looge ja juurutage käitumist kontrolliv konfiguratsioon Andmetasand, tehakse eraldi kasutades Juhtplaat. Juhtplaat sisaldab tavaliselt API, CLI või GUI-ga ühenduse loomiseks või on loodud rakenduse juhtimiseks.

Mis on teenindusvõrk?
Teenusvõrgu juhtimistasand jaotab konfiguratsiooni külgkorvi puhverserveri ja andmetasandi vahel.

Service Meshi arhitektuuri kasutatakse sageli keerukate tööprobleemide lahendamiseks konteinerite ja mikroteenuste abil. Teerajajad selles valdkonnas mikroteenused on sellised ettevõtted nagu Lyft, Netflix ja Twitter, mis pakuvad stabiilseid teenuseid miljonitele kasutajatele üle maailma. (Siin on üksikasjalik ülevaade mõningatest arhitektuurilistest väljakutsetest, millega Netflix silmitsi seisis.). Vähem nõudlike rakenduste jaoks piisab tõenäoliselt lihtsamast arhitektuurist.

Tõenäoliselt pole Service Meshi arhitektuur kunagi lahendus kõikidele rakenduste toimimise ja edastamise probleemidele. Arhitektidel ja arendajatel on tohutu tööriistade arsenal ja ainult üks neist on haamer, mis paljude ülesannete hulgas peab lahendama ainult ühe - naelte löömise. NGINXi mikroteenuste viitearhitektuurNäiteks sisaldab mitmeid erinevaid mudeleid, mis pakuvad järjepidevust lähenemiste kohta probleemide lahendamiseks mikroteenuste abil.

Elemendid, mis koonduvad Service Meshi arhitektuuris, nagu NGINX, konteinerid, Kubernetes ja mikroteenused arhitektuurse lähenemisviisina, võivad olla sama tootlikud ka mitte-teenusvõrgu rakendustes. Näiteks Istio kavandati tervikliku teenindusvõrgu arhitektuurina, kuid selle modulaarsus tähendab, et arendajad saavad valida ja rakendada ainult neid tehnoloogiakomponente, mida nad vajavad. Seda silmas pidades on oluline luua selge arusaam Service Meshi kontseptsioonist, isegi kui te pole kindel, kas suudate seda kunagi oma rakenduses täielikult rakendada.

Modulaarsed monoliidid ja DDD

Allikas: www.habr.com

Lisa kommentaar