Service Fabric-architectuur

Service Fabric is gebouwd met gelaagde subsystemen. Met deze subsystemen kunt u toepassingen schrijven die:

  • Zeer beschikbaar
  • Schaalbaar
  • Beheersbaar
  • Testbaar

In het volgende diagram ziet u de belangrijkste subsystemen van Service Fabric.

Diagram van Service Fabric-architectuur

In een gedistribueerd systeem is de mogelijkheid om veilig te communiceren tussen knooppunten in een cluster van cruciaal belang. Aan de basis van de stack bevindt zich het transportsubsysteem, dat veilige communicatie tussen knooppunten biedt. Boven het transportsubsysteem ligt het federatiesubsysteem, dat de verschillende knooppunten in één entiteit (benoemde clusters) clustert, zodat Service Fabric fouten kan detecteren, leiderverkiezing kan uitvoeren en consistente routering kan bieden. Het subsysteem voor betrouwbaarheid, gelaagd op het federatiesubsysteem, is verantwoordelijk voor de betrouwbaarheid van Service Fabric-services via mechanismen zoals replicatie, resourcebeheer en failover. Het federatiesubsysteem vormt ook de basis van het subsysteem voor hosting en activering, waarmee de levenscyclus van een toepassing op één knooppunt wordt beheerd. Het beheersubsysteem beheert de levenscyclus van toepassingen en services. Het subsysteem testbaarheid helpt toepassingsontwikkelaars hun services te testen via gesimuleerde fouten voor en na het implementeren van toepassingen en services in productieomgevingen. Service Fabric biedt de mogelijkheid om servicelocaties op te lossen via het communicatiesubsysteem. De toepassingsprogrammeermodellen die beschikbaar zijn voor ontwikkelaars, worden gelaagd op deze subsystemen, samen met het toepassingsmodel om hulpprogramma's mogelijk te maken.

Subsysteem vervoer

Het subsysteem transport implementeert een point-to-point datagramcommunicatiekanaal. Dit kanaal wordt gebruikt voor communicatie binnen Service Fabric-clusters en communicatie tussen het Service Fabric-cluster en clients. Het ondersteunt communicatiepatronen in één richting en aanvraag-antwoord, die de basis vormen voor het implementeren van broadcast en multicast in de federatielaag. Het transportsubsysteem beveiligt de communicatie met behulp van X509-certificaten of Windows-beveiliging. Dit subsysteem wordt intern gebruikt door Service Fabric en is niet rechtstreeks toegankelijk voor ontwikkelaars voor het programmeren van toepassingen.

Federatiesubsysteem

Als u wilt nadenken over een set knooppunten in een gedistribueerd systeem, moet u een consistente weergave van het systeem hebben. Het federatiesubsysteem maakt gebruik van de communicatieprimitief van het transportsubsysteem en koppelt de verschillende knooppunten in één uniform cluster waarover kan worden berekent. Het biedt de gedistribueerde systemen primitieven die nodig zijn voor de andere subsystemen: foutdetectie, leiderverkiezing en consistente routering. Het federatiesubsysteem is gebouwd op gedistribueerde hashtabellen met een 128-bits tokenruimte. Het subsysteem maakt een ringtopologie over de knooppunten, waarbij aan elk knooppunt in de ring een subset van de tokenruimte wordt toegewezen voor eigendom. Voor foutdetectie maakt de laag gebruik van een leasemechanisme op basis van hartslag en arbitrage. Het federatiesubsysteem garandeert ook door middel van ingewikkelde join- en vertrekprotocollen dat slechts één eigenaar van een token op enig moment bestaat. Dit biedt leidersverkiezing en consistente routeringsgaranties.

Betrouwbaarheidssubsysteem

Het subsysteem voor betrouwbaarheid biedt het mechanisme om de status van een Service Fabric-service maximaal beschikbaar te maken door gebruik te maken van de Replicator, Failover Manager en Resource Balancer.

  • De Replicator zorgt ervoor dat statuswijzigingen in de primaire servicereplica automatisch worden gerepliceerd naar secundaire replica's, waardoor de consistentie tussen de primaire en secundaire replica's in een servicereplicaset behouden blijft. De replicator is verantwoordelijk voor quorumbeheer tussen de replica's in de replicaset. Deze communiceert met de failover-eenheid om de lijst met bewerkingen op te halen die moeten worden gerepliceerd, en de herconfiguratieagent biedt deze de configuratie van de replicaset. Deze configuratie geeft aan welke replica's de bewerkingen moeten worden gerepliceerd. Service Fabric biedt een standaardreplicator met de naam Fabric Replicator, die kan worden gebruikt door de API van het programmeermodel om de servicestatus maximaal beschikbaar en betrouwbaar te maken.
  • Failoverbeheer zorgt ervoor dat wanneer knooppunten worden toegevoegd aan of verwijderd uit het cluster, de belasting automatisch opnieuw wordt verdeeld over de beschikbare knooppunten. Als een knooppunt in het cluster uitvalt, worden de servicereplica's automatisch opnieuw geconfigureerd om de beschikbaarheid te behouden.
  • De Resource Manager plaatst servicereplica's tussen foutdomeinen in het cluster en zorgt ervoor dat alle failover-eenheden operationeel zijn. Met de Resource Manager worden ook serviceresources verdeeld over de onderliggende gedeelde pool van clusterknooppunten om een optimale uniforme taakverdeling te bereiken.

Beheersubsysteem

Het beheersubsysteem biedt end-to-end-service- en toepassingslevenscyclusbeheer. Met PowerShell-cmdlets en beheer-API's kunt u toepassingen inrichten, implementeren, patchen, upgraden en de inrichting van toepassingen ongedaan maken zonder verlies van beschikbaarheid. Het beheersubsysteem voert dit uit via de volgende services.

  • Clusterbeheer: dit is de primaire service die communiceert met failoverbeheer vanuit betrouwbaarheid om de toepassingen op de knooppunten te plaatsen op basis van de beperkingen voor serviceplaatsing. De Resource Manager in failoversubsysteem zorgt ervoor dat de beperkingen nooit worden verbroken. De clusterbeheerder beheert de levenscyclus van de toepassingen, van het inrichten tot het ongedaan maken van de inrichting. Het kan worden geïntegreerd met de statusbeheerder om ervoor te zorgen dat de beschikbaarheid van toepassingen niet verloren gaat vanuit een semantisch statusperspectief tijdens upgrades.
  • Health Manager: met deze service kunt u de status van toepassingen, services en clusterentiteiten controleren. Clusterentiteiten (zoals knooppunten, servicepartities en replica's) kunnen statusinformatie rapporteren, die vervolgens worden samengevoegd in het gecentraliseerde statusarchief. Deze statusinformatie biedt een algemeen momentopname van de status naar een bepaald tijdstip van de services en knooppunten die zijn verdeeld over meerdere knooppunten in het cluster, zodat u de benodigde corrigerende acties kunt uitvoeren. Met statusquery-API's kunt u een query uitvoeren op de statusgebeurtenissen die zijn gerapporteerd aan het statussubsysteem. De statusquery-API's retourneren de onbewerkte statusgegevens die zijn opgeslagen in het statusarchief of de geaggregeerde, geïnterpreteerde statusgegevens voor een specifieke clusterentiteit.
  • Afbeeldingsarchief: deze service biedt opslag en distributie van de binaire bestanden van de toepassing. Deze service biedt een eenvoudig gedistribueerd bestandsarchief waar de toepassingen naartoe worden geüpload en gedownload.

Hostingsubsysteem

De clusterbeheerder informeert het hostsubsysteem (dat op elk knooppunt wordt uitgevoerd) welke services het moet beheren voor een bepaald knooppunt. Het hostingsubsysteem beheert vervolgens de levenscyclus van de toepassing op dat knooppunt. Het communiceert met de betrouwbaarheids- en statusonderdelen om ervoor te zorgen dat de replica's correct zijn geplaatst en in orde zijn.

Communicatiesubsysteem

Dit subsysteem biedt betrouwbare berichten binnen het cluster en servicedetectie via de naamgevingsservice. De naamgevingsservice zet servicenamen om naar een locatie in het cluster en stelt gebruikers in staat om servicenamen en eigenschappen te beheren. Met behulp van de naamgevingsservice kunnen clients veilig communiceren met elk knooppunt in het cluster om een servicenaam om te zetten en metagegevens van de service op te halen. Met behulp van een eenvoudige naamgevingsclient-API kunnen gebruikers van Service Fabric services en clients ontwikkelen die in staat zijn om de huidige netwerklocatie op te lossen, ondanks de knooppuntdynamiek of het wijzigen van de grootte van het cluster.

Subsysteem testbaarheid

Testability is een reeks hulpprogramma's die speciaal zijn ontworpen voor het testen van services die zijn gebouwd op Service Fabric. Met de hulpprogramma's kan een ontwikkelaar eenvoudig zinvolle fouten veroorzaken en testscenario's uitvoeren om de vele statussen en overgangen die een service tijdens de levensduur zal ervaren, te oefenen en te valideren, allemaal op een gecontroleerde en veilige manier. Testbaarheid biedt ook een mechanisme voor het uitvoeren van langere tests waarmee verschillende mogelijke fouten kunnen worden herhaald zonder verlies van beschikbaarheid. Dit biedt u een testomgeving in productie.