Service Mesh-communicatie-infrastructuur
Tip
Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.
In dit hoofdstuk hebben we de uitdagingen van microservicecommunicatie verkend. We hebben gezegd dat ontwikkelteams gevoelig moeten zijn voor hoe back-endservices met elkaar communiceren. In het ideale geval, hoe minder communicatie tussen services, hoe beter. Vermijding is echter niet altijd mogelijk omdat back-endservices vaak afhankelijk zijn van elkaar om bewerkingen te voltooien.
We hebben verschillende benaderingen verkend voor het implementeren van synchrone HTTP-communicatie en asynchrone berichten. In elk van de gevallen wordt de ontwikkelaar belast met het implementeren van communicatiecode. Communicatiecode is complex en tijdrovend. Onjuiste beslissingen kunnen leiden tot aanzienlijke prestatieproblemen.
Een modernere benadering van microservicecommunicatiecentra rond een nieuwe en snel veranderende technologie met de titel Service Mesh. Een service-mesh is een configureerbare infrastructuurlaag met ingebouwde mogelijkheden voor het afhandelen van service-naar-servicecommunicatie, tolerantie en veel kruislingse problemen. Het verplaatst de verantwoordelijkheid voor deze problemen uit de microservices en naar de service-mesh-laag. Communicatie wordt weggenomen van uw microservices.
Een belangrijk onderdeel van een service-mesh is een proxy. In een cloudeigen toepassing wordt een exemplaar van een proxy meestal met elke microservice gekommad. Terwijl ze in afzonderlijke processen worden uitgevoerd, zijn de twee nauw gekoppeld en delen ze dezelfde levenscyclus. Dit patroon, ook wel het Sidecar-patroon genoemd, wordt weergegeven in afbeelding 4-24.
Afbeelding 4-24. Service mesh met een zijwagen
In de vorige afbeelding ziet u hoe berichten worden onderschept door een proxy die naast elke microservice wordt uitgevoerd. Elke proxy kan worden geconfigureerd met verkeersregels die specifiek zijn voor de microservice. Het begrijpt berichten en kan deze routeren over uw services en de buitenwereld.
Naast het beheren van service-naar-servicecommunicatie biedt Service Mesh ondersteuning voor servicedetectie en taakverdeling.
Zodra deze is geconfigureerd, is een service-mesh zeer functioneel. De mesh haalt een bijbehorende groep exemplaren op van een servicedetectie-eindpunt. Er wordt een aanvraag verzonden naar een specifiek service-exemplaar, waardoor de latentie en het reactietype van het resultaat worden opgenomen. Het kiest het exemplaar dat waarschijnlijk een snelle reactie retourneert op basis van verschillende factoren, waaronder de waargenomen latentie voor recente aanvragen.
Een service-mesh beheert problemen met verkeer, communicatie en netwerken op toepassingsniveau. Het begrijpt berichten en aanvragen. Een service-mesh kan doorgaans worden geïntegreerd met een containerorchestrator. Kubernetes ondersteunt een uitbreidbare architectuur waarin een service-mesh kan worden toegevoegd.
In hoofdstuk 6 gaan we dieper in op Service Mesh-technologieën, waaronder een discussie over de architectuur en beschikbare opensource-implementaties.
Samenvatting
In dit hoofdstuk hebben we cloudeigen communicatiepatronen besproken. We zijn begonnen met het onderzoeken van hoe front-endclients communiceren met back-end microservices. Onderweg hebben we het gehad over API Gateway-platforms en realtime communicatie. Vervolgens hebben we gekeken hoe microservices communiceren met andere back-endservices. We hebben zowel synchrone HTTP-communicatie als asynchrone berichten in services bekeken. We hebben gRPC besproken, een toekomstige technologie in de cloudeigen wereld. Ten slotte hebben we een nieuwe en snel ontwikkelende technologie geïntroduceerd met de titel Service Mesh die de communicatie van microservices kan stroomlijnen.
Speciale nadruk lag op beheerde Azure-services die kunnen helpen bij het implementeren van communicatie in systeemeigen systemen in de cloud:
- Azure Application Gateway
- Azure API Management
- Azure SignalR Service
- Azure Storage-wachtrijen
- Azure Service Bus
- Azure Event Grid
- Azure Event Hub
We gaan vervolgens over naar gedistribueerde gegevens in cloudsystemen en de voordelen en uitdagingen die het biedt.