Arkitektur för Service Fabric

Service Fabric skapas med lagerundersystem. Med dessa undersystem kan du skriva program som är:

  • Högt tillgänglighet
  • Skalbarhet
  • Hanterbara
  • Testbara

Följande diagram visar de viktigaste delsystemen i Service Fabric.

Diagram över Service Fabric-arkitektur

I ett distribuerat system är möjligheten att kommunicera säkert mellan noder i ett kluster avgörande. I basen av stacken finns transportundersystemet, som ger säker kommunikation mellan noder. Ovanför transportundersystemet ligger federationsundersystemet, som klustrade de olika noderna i en enda entitet (namngivna kluster) så att Service Fabric kan identifiera fel, utföra val av ledare och tillhandahålla konsekvent routning. Undersystemet för tillförlitlighet, som ligger ovanpå federationsundersystemet, ansvarar för Service Fabric-tjänsternas tillförlitlighet genom mekanismer som replikering, resurshantering och redundans. Federationsundersystemet ligger också till grund för värd- och aktiveringsundersystemet, som hanterar livscykeln för ett program på en enda nod. Undersystemet för hantering hanterar livscykeln för program och tjänster. Undersystemet för testbarhet hjälper programutvecklare att testa sina tjänster genom simulerade fel före och efter distribution av program och tjänster till produktionsmiljöer. Service Fabric ger möjlighet att lösa tjänstplatser via dess kommunikationsundersystem. De programprogrammeringsmodeller som exponeras för utvecklare läggs ovanpå dessa undersystem tillsammans med programmodellen för att aktivera verktyg.

Transportundersystem

Undersystemet transport implementerar en punkt-till-punkt-datagramkommunikationskanal. Den här kanalen används för kommunikation i Service Fabric-kluster och kommunikation mellan Service Fabric-klustret och klienterna. Den stöder enkelriktade och begärandesvarskommunikationsmönster, vilket utgör grunden för implementering av broadcast och multicast i federationsskiktet. Undersystemet transport skyddar kommunikationen med hjälp av X509-certifikat eller Windows-säkerhet. Det här undersystemet används internt av Service Fabric och är inte direkt tillgängligt för utvecklare för programprogrammering.

Federationsundersystem

För att kunna resonera kring en uppsättning noder i ett distribuerat system måste du ha en konsekvent vy över systemet. Federationsundersystemet använder kommunikationsprimitiver som tillhandahålls av transportundersystemet och syr ihop de olika noderna i ett enda enhetligt kluster som det kan resonera kring. Den tillhandahåller de distribuerade systemprimitiver som behövs av de andra undersystemen – felidentifiering, val av ledare och konsekvent routning. Federationsundersystemet bygger på distribuerade hash-tabeller med ett 128-bitars tokenutrymme. Undersystemet skapar en ringtopologi över noderna, där varje nod i ringen tilldelas en delmängd av tokenutrymmet för ägarskap. För felidentifiering använder lagret en leasingmekanism baserad på hjärtslag och skiljeförfarande. Federationsundersystemet garanterar också genom invecklade anslutnings- och avgångsprotokoll att det bara finns en enda ägare av en token när som helst. Detta ger val av ledare och konsekventa routningsgarantier.

Undersystem för tillförlitlighet

Undersystemet för tillförlitlighet ger en mekanism för att ge tillstånd för en Service Fabric-tjänst hög tillgänglighet med hjälp av Replicator, Failover Manager och Resource Balancer.

  • Replikatorn ser till att tillståndsändringar i den primära tjänstrepliken automatiskt replikeras till sekundära repliker, vilket upprätthåller konsekvensen mellan de primära och sekundära replikerna i en tjänstreplikuppsättning. Replikatorn ansvarar för kvorumhantering bland replikerna i replikuppsättningen. Den interagerar med redundansenheten för att hämta listan över åtgärder som ska replikeras, och omkonfigurationsagenten tillhandahåller konfigurationen av replikuppsättningen. Den konfigurationen anger vilka repliker som åtgärderna måste replikeras. Service Fabric tillhandahåller en standardreplikator med namnet Fabric Replicator, som kan användas av programmeringsmodell-API:et för att göra tjänsttillståndet högtillgängligt och tillförlitligt.
  • Redundanshanteraren säkerställer att när noder läggs till i eller tas bort från klustret distribueras belastningen automatiskt över de tillgängliga noderna. Om en nod i klustret misslyckas konfigurerar klustret automatiskt om tjänstreplikerna för att upprätthålla tillgängligheten.
  • Resource Manager placerar tjänstrepliker över feldomäner i klustret och säkerställer att alla redundansenheter fungerar. Resource Manager balanserar även tjänstresurser över den underliggande delade poolen med klusternoder för att uppnå optimal enhetlig belastningsfördelning.

Hanteringsundersystem

Undersystemet för hantering tillhandahåller tjänst- och programlivscykelhantering från slutpunkt till slutpunkt. Med PowerShell-cmdletar och administrativa API:er kan du etablera, distribuera, korrigera, uppgradera och avetablera program utan förlust av tillgänglighet. Hanteringsundersystemet utför detta via följande tjänster.

  • Klusterhanteraren: Det här är den primära tjänsten som interagerar med redundanshanteraren från tillförlitlighet för att placera programmen på noderna baserat på tjänstplaceringsbegränsningarna. Resource Manager i redundansundersystemet säkerställer att begränsningarna aldrig bryts. Klusterhanteraren hanterar livscykeln för programmen från etablering till avetablering. Den integreras med hälsohanteraren för att säkerställa att programmets tillgänglighet inte går förlorad ur ett semantiskt hälsoperspektiv under uppgraderingar.
  • Hälsohanteraren: Den här tjänsten möjliggör hälsoövervakning av program, tjänster och klusterentiteter. Klusterentiteter (till exempel noder, tjänstpartitioner och repliker) kan rapportera hälsoinformation, som sedan aggregeras till det centraliserade hälsoarkivet. Den här hälsoinformationen ger en övergripande hälsoögonblicksbild för tidpunkt av tjänsterna och noderna som distribueras över flera noder i klustret, så att du kan vidta nödvändiga korrigerande åtgärder. Med API:er för hälsofrågor kan du köra frågor mot hälsohändelserna som rapporteras till undersystemet för hälsotillstånd. Hälsofråge-API:erna returnerar rådata som lagras i hälsoarkivet eller aggregerade, tolkade hälsodata för en specifik klusterentitet.
  • Avbildningsarkiv: Den här tjänsten tillhandahåller lagring och distribution av programmets binärfiler. Den här tjänsten tillhandahåller ett enkelt distribuerat filarkiv där programmen laddas upp till och laddas ned från.

Värdundersystem

Klusterhanteraren informerar värdundersystemet (som körs på varje nod) vilka tjänster som krävs för att hantera en viss nod. Värdundersystemet hanterar sedan programmets livscykel på den noden. Den interagerar med komponenterna för tillförlitlighet och hälsa för att säkerställa att replikerna är korrekt placerade och felfria.

Undersystem för kommunikation

Det här undersystemet tillhandahåller tillförlitliga meddelanden i klustret och tjänstidentifieringen via namngivningstjänsten. Namngivningstjänsten löser tjänstnamn till en plats i klustret och gör det möjligt för användare att hantera tjänstnamn och egenskaper. Med hjälp av namngivningstjänsten kan klienter kommunicera säkert med valfri nod i klustret för att matcha ett tjänstnamn och hämta tjänstens metadata. Med hjälp av ett enkelt namngivningsklient-API kan användare av Service Fabric utveckla tjänster och klienter som kan matcha den aktuella nätverksplatsen trots noddynamik eller storleksändring av klustret.

Undersystem för testbarhet

Testbarhet är en uppsättning verktyg som är särskilt utformade för testning av tjänster som bygger på Service Fabric. Med verktygen kan en utvecklare enkelt framkalla meningsfulla fel och köra testscenarier för att träna och validera de många tillstånd och övergångar som en tjänst kommer att uppleva under hela livslängden, allt på ett kontrollerat och säkert sätt. Testbarhet ger också en mekanism för att köra längre tester som kan iterera genom olika möjliga fel utan att förlora tillgängligheten. På så sätt får du en test-i-produktionsmiljö.