Service Fabric-architectuur
Service Fabric is gebouwd met gelaagde subsystemen. Met deze subsystemen kunt u toepassingen schrijven die:
- Zeer beschikbaar
- Schaalbaar
- Handelbaar
- Testbaar
In het volgende diagram ziet u de belangrijkste subsystemen van Service Fabric.
In een gedistribueerd systeem is de mogelijkheid om veilig te communiceren tussen knooppunten in een cluster cruciaal. Aan de basis van de stack is het transportsubsysteem, dat beveiligde communicatie tussen knooppunten biedt. Boven het transportsubsysteem bevindt zich 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 betrouwbaarheidssubsysteem, gelaagd boven op het federatiesubsysteem, is verantwoordelijk voor de betrouwbaarheid van Service Fabric-services via mechanismen zoals replicatie, resourcebeheer en failover. Het federatiesubsysteem onderbouwt ook het hosting- en activeringssubsysteem, dat de levenscyclus van een toepassing op één knooppunt beheert. 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 aan ontwikkelaars worden blootgesteld, worden gelaagd op deze subsystemen, samen met het toepassingsmodel om hulpprogramma's mogelijk te maken.
Subsysteem transport
Het transportsubsysteem 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 biedt ondersteuning voor communicatiepatronen in één richting en aanvraag-antwoord, die de basis biedt voor het implementeren van broadcast en multicast in de federatielaag. Het transportsubsysteem beveiligt 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
Om redeneren over een set knooppunten in een gedistribueerd systeem, moet u een consistente weergave van het systeem hebben. Het federatiesubsysteem maakt gebruik van de communicatieprimitief die door het transportsubsysteem wordt geleverd en steekt de verschillende knooppunten in één geïntegreerd cluster waarover het kan redeneren. 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 elk knooppunt in de ring een subset van de tokenruimte voor eigendom wordt toegewezen. Voor foutdetectie gebruikt de laag een leasemechanisme op basis van heart-beating en arbitrage. Het federatiesubsysteem garandeert ook dat er op elk moment slechts één eigenaar van een token bestaat via ingewikkelde join- en vertrekprotocollen. Dit biedt garanties voor leiderverkiezing en consistente routering.
Subsysteem betrouwbaarheid
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, waarbij 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 configuratieagent 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 mislukt, worden de servicereplica's automatisch opnieuw geconfigureerd om de beschikbaarheid te behouden.
- Resource Manager plaatst servicereplica's tussen foutdomeinen in het cluster en zorgt ervoor dat alle failover-eenheden operationeel zijn. Resource Manager verdeelt ook serviceresources in de onderliggende gedeelde pool van clusterknooppunten om een optimale uniforme belastingverdeling 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 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 van betrouwbaarheid om de toepassingen op de knooppunten te plaatsen op basis van de beperkingen voor serviceplaatsing. Het Resource Manager-subsysteem in failover zorgt ervoor dat de beperkingen nooit worden verbroken. De clusterbeheerder beheert de levenscyclus van de toepassingen van inrichten tot ongedaan maken van inrichting. Het kan worden geïntegreerd met health manager om ervoor te zorgen dat de beschikbaarheid van toepassingen niet verloren gaat vanuit het perspectief van een semantische status tijdens upgrades.
- Health Manager: Met deze service kunt u statuscontrole van toepassingen, services en clusterentiteiten inschakelen. Clusterentiteiten (zoals knooppunten, servicepartities en replica's) kunnen statusgegevens rapporteren, die vervolgens worden samengevoegd in het gecentraliseerde statusarchief. Deze statusinformatie biedt een algemene momentopname van de status van de services en knooppunten die zijn verdeeld over meerdere knooppunten in het cluster, zodat u eventuele benodigde corrigerende acties kunt uitvoeren. Met statusquery-API's kunt u query's uitvoeren op de status gebeurtenissen 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.
- Image Store: Deze service biedt opslag en distributie van de binaire bestanden van de toepassing. Deze service biedt een eenvoudig gedistribueerd bestandsarchief waarin de toepassingen worden geüpload naar en gedownload van.
Subsysteem hosten
De clusterbeheerder informeert het hostingsubsysteem (uitgevoerd op elk knooppunt) welke services moeten worden beheerd voor een bepaald knooppunt. Het hostingsubsysteem beheert vervolgens de levenscyclus van de toepassing op dat knooppunt. Het communiceert met de betrouwbaarheid 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. Met de naamgevingsservice worden servicenamen omgezet in een locatie in het cluster en kunnen gebruikers servicenamen en eigenschappen beheren. Met behulp van de naamgevingsservice kunnen clients veilig communiceren met elk knooppunt in het cluster om een servicenaam op te lossen 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 de huidige netwerklocatie kunnen omzetten, ondanks de knooppuntpiek of de hergrootte van het cluster.
Subsysteem testbaarheid
Testbaarheid 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 talloze statussen en overgangen te valideren die een service gedurende zijn hele levensduur zal ervaren, 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 dat de beschikbaarheid verloren gaat. Dit biedt u een test-in-productieomgeving.