Wat is 'n Service Mesh?

Hallo weer!.. Op die vooraand van die begin van die kursus "Sagteware-argitek" Ons het nog 'n nuttige vertaling voorberei.

Wat is 'n Service Mesh?

'n Diensnetwerk is 'n konfigureerbare, lae-latentie-infrastruktuurlaag wat nodig is om groot volumes netwerkgebaseerde interproseskommunikasie tussen toepassingsprogrammeringskoppelvlakke (API's) te hanteer. Service Mesh maak vinnige, betroubare en veilige kommunikasie tussen houer- en dikwels kortstondige toepassingsinfrastruktuurdienste moontlik. Service Mesh bied vermoëns soos diensontdekking, vragbalansering, enkripsie, deursigtigheid, naspeurbaarheid, verifikasie en magtiging, en outo-afskakelpatroonondersteuning (stroombreker).
'n Diensnetwerk word tipies geïmplementeer deur elke diensinstansie te voorsien van 'n proxy-instansie, genoem Syspan. Syspan kommunikasie tussen dienste te hanteer, sekuriteitskwessies te monitor en op te los, dit wil sê alles wat uit individuele dienste onttrek kan word. Op hierdie manier kan ontwikkelaars toepassingskode in dienste skryf, onderhou en bedien, en stelseladministrateurs kan met die Service Mesh werk en die toepassing laat loop.

Istio van Google, IBM en Lyft is tans die bekendste diensmaas-argitektuur. En Kubernetes, wat oorspronklik by Google ontwikkel is, is nou die enigste houerorkestrasieraamwerk wat deur Istio ondersteun word. Verkopers probeer om kommersieel ondersteunde weergawes van Istio te skep. Dit sal interessant wees om te sien watter nuwe dinge hulle na die oopbronprojek kan bring.

Istio is egter nie die enigste opsie nie, aangesien ander Service Mesh-implementerings ontwikkel word. Patroon sidecar proxy is die gewildste implementering, soos beoordeel kan word deur die projekte Buoyant, HashiCorp, Solo.io en ander. Daar is ook alternatiewe argitekture: die Netflix-tegnologie-gereedskapstel is een van die benaderings waar die Service Mesh-funksionaliteit geïmplementeer word deur die Ribbon-, Hysterix-, Eureka-, Archaius-biblioteke, sowel as platforms soos Azure Service Fabric.

Service Mesh het ook sy eie terminologie vir dienskomponente en funksies:

  • Houer orkestrasie raamwerk. Namate meer en meer houers by die toepassingsinfrastruktuur gevoeg word, is daar 'n behoefte aan 'n aparte hulpmiddel vir die monitering en bestuur van houers - 'n houerorkestrasieraamwerk. Kubernetes het hierdie nis stewig beset, soveel so dat selfs sy hoofmededingers Docker Swarm en Mesosphere DC/OS integrasie met Kubernetes as alternatief bied.
  • Dienste en instansies (Kubernetes Pods). 'n Geval is 'n enkele lopende kopie van 'n mikrodiens. Soms is een geval een houer. In Kubernetes bestaan ​​'n instansie uit 'n klein groepie onafhanklike houers wat 'n peul genoem word. Kliënte kry selde direk toegang tot 'n instansie of pod; meer dikwels kry hulle toegang tot 'n diens, wat 'n stel identiese, skaalbare en foutverdraagsame gevalle of peule (replikas) is.
  • Sidecar Proxy. Sidecar Proxy werk met 'n enkele instansie of pod. Die punt van Sidecar Proxy is om verkeer te stuur of instaanbediener wat van die houer af kom waarmee dit werk en verkeer terug te stuur. Sidecar interaksie met ander Sidecar Proxies en word bestuur deur 'n orkestrasieraamwerk. Baie Service Mesh-implementerings gebruik Sidecar Proxy om alle verkeer in en uit 'n instansie of pod te onderskep en te bestuur.
  • Diens Ontdekking. Wanneer 'n instansie met 'n ander diens moet kommunikeer, moet dit 'n gesonde en beskikbare instansie van die ander diens vind (ontdek). Tipies voer die instansie DNS-opsoeke uit. Die houerorkestrasieraamwerk hou 'n lys van gevalle by wat gereed is om versoeke te ontvang en bied 'n koppelvlak vir DNS-navrae.
  • Vrag balansering. Die meeste houer-orkestrasieraamwerke verskaf lasbalansering by laag 4 (vervoer). Service Mesh implementeer meer komplekse lasbalansering op laag 7 (toepassingsvlak), ryk aan algoritmes en meer effektief in die bestuur van verkeer. Lasbalansering-instellings kan verander word deur die API te gebruik, sodat jy blou-groen of kanarie-ontplooiings kan orkestreer.
  • Enkripsie. Service Mesh kan versoeke en antwoorde enkripteer en dekripteer, wat hierdie las van dienste verwyder. Service Mesh kan ook werkverrigting verbeter deur bestaande aanhoudende verbindings te prioritiseer of te hergebruik, wat die behoefte aan duur berekeninge verminder om nuwe verbindings te skep. Die mees algemene implementering van verkeerskodering is wedersydse TLS (mTLS), waar 'n publieke sleutelinfrastruktuur (PKI) sertifikate en sleutels genereer en versprei vir gebruik deur Sidecar Proxy.
  • Stawing en magtiging. Die Service Mesh kan versoeke wat van buite of binne die toepassing gemaak word, magtig en verifieer, en slegs gevalideerde versoeke aan instansies stuur.
  • Ondersteuning vir outomatiese afskakeling. Service Mesh ondersteun outo-afskakelpatroon, wat ongesonde gevalle isoleer en dan geleidelik terugstuur na die poel van gesonde gevalle wanneer nodig.

Die deel van 'n Service Mesh-toepassing wat netwerkverkeer tussen instansies bestuur, word genoem Data Vliegtuig. Skep en ontplooi konfigurasie wat gedrag beheer Data Vliegtuig, word uitgevoer met behulp van 'n aparte Beheervliegtuig. Beheervliegtuig sluit tipies in of is ontwerp om aan 'n API, CLI of GUI te koppel om die toepassing te beheer.

Wat is 'n Service Mesh?
Die beheervlak in die diensnetwerk versprei die konfigurasie tussen die Sidecar Proxy en die datavliegtuig.

Service Mesh-argitektuur word dikwels gebruik om komplekse operasionele probleme op te los met behulp van houers en mikrodienste. Pioniers in die veld mikrodienste is maatskappye soos Lyft, Netflix en Twitter, wat stabiele dienste aan miljoene gebruikers regoor die wêreld verskaf. (Hier is 'n gedetailleerde blik op sommige van die argitektoniese uitdagings wat Netflix in die gesig gestaar het.). Vir minder veeleisende toepassings sal eenvoudiger argitekture waarskynlik voldoende wees.

Dit is onwaarskynlik dat Service Mesh-argitektuur ooit die antwoord sal wees vir alle toepassingsbedryf- en afleweringskwessies. Argitekte en ontwikkelaars het 'n groot arsenaal van gereedskap, en slegs een van hulle is 'n hamer, wat, onder baie take, slegs een moet oplos - om spykers te hamer. Mikrodienste-verwysingsargitektuur van NGINXsluit byvoorbeeld verskeie verskillende modelle in wat 'n kontinuum van benaderings bied om probleme op te los met behulp van mikrodienste.

Die elemente wat saamkom in 'n Service Mesh-argitektuur, soos NGINX, houers, Kubernetes en mikrodienste as 'n argitektoniese benadering, kan ewe produktief wees in nie-Service Mesh-implementerings. Byvoorbeeld, Istio is ontwerp as 'n volledige diensnetwerkargitektuur, maar die modulariteit daarvan beteken dat ontwikkelaars slegs die tegnologiekomponente wat hulle benodig kan kies en implementeer. Met dit in gedagte, is dit belangrik om 'n duidelike begrip van die Service Mesh-konsep te ontwikkel, selfs al is jy nie seker dat jy dit ooit ten volle in jou toepassing sal kan implementeer nie.

Modulêre monoliete en DDD

Bron: will.com

Voeg 'n opmerking