Repliker och instanser

Den här artikeln ger en översikt över livscykeln för repliker av tillståndskänsliga tjänster och instanser av tillståndslösa tjänster.

Instanser av tillståndslösa tjänster

En instans av en tillståndslös tjänst är en kopia av tjänstlogik som körs på en av noderna i klustret. En instans i en partition identifieras unikt av dess InstanceId. Livscykeln för en instans modelleras i följande diagram:

Instance lifecycle

InBuild (IB)

När Klusterresurshanteraren har fastställt en placering för instansen går den in i det här livscykeltillståndet. Instansen startas på noden. Programvärden startas, instansen skapas och öppnas sedan. När starten är klar övergår instansen till tillståndet redo.

Om programvärden eller noden för den här instansen kraschar övergår den till det borttagna tillståndet.

Klar (RD)

I tillståndet klar är instansen igång på noden. Om den här instansen är en tillförlitlig tjänst har RunAsync anropats.

Om programvärden eller noden för den här instansen kraschar övergår den till det borttagna tillståndet.

Avslutande (CL)

I sluttillståndet håller Azure Service Fabric på att stänga av instansen på den här noden. Den här avstängningen kan bero på många orsaker, till exempel en programuppgradering, belastningsutjämning eller den tjänst som tas bort. När avstängningen är klar övergår den till nedsläppt tillstånd.

Borttagen (DD)

I det borttagna tillståndet körs inte längre instansen på noden. Nu underhåller Service Fabric metadata om den här instansen, som så småningom också tas bort.

Anteckning

Det går att övergå från alla tillstånd till det borttagna tillståndet med hjälp av alternativet ForceRemoveRemove-ServiceFabricReplica.

Repliker av tillståndskänsliga tjänster

En replik av en tillståndskänslig tjänst är en kopia av tjänstlogiken som körs på en av noderna i klustret. Dessutom behåller repliken en kopia av tjänstens tillstånd. Två relaterade begrepp beskriver livscykeln och beteendet för tillståndskänsliga repliker:

  • Repliklivscykel
  • Replikroll

I följande diskussion beskrivs beständiga tillståndskänsliga tjänster. För ej beständiga (eller minnesinterna) tillståndskänsliga tjänster är ned- och nedrullningsbara tillstånd likvärdiga.

Replica lifecycle

InBuild (IB)

En InBuild-replik är en replik som skapas eller förbereds för att ansluta till replikuppsättningen. Beroende på replikrollen har IB olika semantik.

Om programvärden eller noden för en InBuild-replik kraschar övergår den till nedtillståndet.

  • Primära InBuild-repliker: Primär InBuild är de första replikerna för en partition. Den här repliken inträffar vanligtvis när partitionen skapas. Primära InBuild-repliker uppstår också när alla repliker av en partition startas om eller tas bort.

  • IdleSecondary InBuild-repliker: Det här är antingen nya repliker som skapas av Klusterresurshanteraren eller befintliga repliker som har inaktiverats och som måste läggas till i uppsättningen igen. Dessa repliker seedas eller skapas av den primära innan de kan ansluta replikuppsättningen som ActiveSecondary och delta i kvorum-bekräftelse av åtgärder.

  • ActiveSecondary InBuild-repliker: Det här tillståndet observeras i vissa frågor. Det är en optimering där replikuppsättningen inte ändras, men en replik måste skapas. Själva repliken följer de normala tillståndsdatorövergångarna (enligt beskrivningen i avsnittet om replikroller).

Klar (RD)

En Klar replik är en replik som deltar i replikering och kvorum-bekräftelse av åtgärder. Tillståndet redo gäller för primära och aktiva sekundära repliker.

Om programvärden eller noden för en klar replik kraschar övergår den till nedtillståndet.

Avslutande (CL)

En replik anger stängningstillståndet i följande scenarier:

  • Stänger av koden för repliken: Service Fabric kan behöva stänga av koden som körs för en replik. Den här avstängningen kan vara av många skäl. Det kan till exempel inträffa på grund av en program-, infrastruktur- eller infrastrukturuppgradering, eller på grund av ett fel som rapporterats av repliken. När repliken stängs övergår repliken till nedläge. Det beständiga tillstånd som är associerat med den här repliken som lagras på disken rensas inte.

  • Tar bort repliken från klustret: Service Fabric kan behöva ta bort det beständiga tillståndet och stänga av koden som körs för en replik. Den här avstängningen kan vara av många orsaker, till exempel belastningsutjämning.

Borttagen (DD)

I det borttagna tillståndet körs inte längre instansen på noden. Det finns inte heller något tillstånd kvar på noden. Nu underhåller Service Fabric metadata om den här instansen, som så småningom också tas bort.

Nedåt (D)

I det nedkopplade tillståndet körs inte replikkoden, men det beständiga tillståndet för repliken finns på den noden. En replik kan vara nere av många orsaker – till exempel att noden är nere, en krasch i replikkoden, en programuppgradering eller replikfel.

En nedreplik öppnas av Service Fabric efter behov, till exempel när uppgraderingen har slutförts på noden.

Replikrollen är inte relevant i nedläge.

Öppning (OP)

En nedreplik går in i öppningstillståndet när Service Fabric behöver säkerhetskopiera repliken igen. Det här tillståndet kan till exempel vara när en koduppgradering för programmet har slutförts på en nod.

Om programvärden eller noden för en inledande replik kraschar övergår den till nedtillståndet.

Replikrollen är inte relevant i öppningstillståndet.

StandBy (SB)

En StandBy-replik är en replik av en beständig tjänst som gick ned och sedan öppnades. Den här repliken kan användas av Service Fabric om den behöver lägga till en annan replik till replikuppsättningen (eftersom repliken redan har en del av tillståndet och kompileringsprocessen går snabbare). När StandByReplicaKeepDuration upphör att gälla ignoreras väntelägesrepliken.

Om programvärden eller noden för en väntelägesreplik kraschar övergår den till nedtillståndet.

Replikrollen är inte relevant i vänteläge.

Anteckning

Alla repliker som inte ligger nere eller tas bort anses vara upp.

Anteckning

Det går att övergå från alla tillstånd till det borttagna tillståndet med hjälp av alternativet ForceRemoveRemove-ServiceFabricReplica.

Replikroll

Replikens roll avgör dess funktion i replikuppsättningen:

  • Primär (P): Det finns en primär i replikuppsättningen som ansvarar för att utföra läs- och skrivåtgärder.
  • ActiveSecondary (S): Det här är repliker som tar emot tillståndsuppdateringar från den primära, tillämpar dem och skickar sedan tillbaka bekräftelser. Det finns flera aktiva sekundärfiler i replikuppsättningen. Antalet aktiva sekundärfiler avgör antalet fel som tjänsten kan hantera.
  • IdleSecondary (I): Dessa repliker skapas av den primära repliken. De tar emot tillstånd från den primära innan de kan befordras till aktiv sekundär.
  • Ingen (N): Dessa repliker har inget ansvar i replikuppsättningen.
  • Okänt (U): Det här är den första rollen för en replik innan den tar emot ett ChangeRole API-anrop från Service Fabric.

Följande diagram illustrerar replikrollövergångarna och några exempelscenarier där de kan inträffa:

Replica role

  • U –> P: Skapa en ny primär replik.
  • U –> I: Skapa en ny inaktiv replik.
  • U –> N: Borttagning av en standby-replik.
  • I -> S: Befordran av den inaktiva sekundära till aktiva sekundära så att dess bekräftelser bidrar till kvorum.
  • I –> P: Befordran av den inaktiva sekundära till den primära. Detta kan inträffa under särskilda omkonfigurationer när den inaktiva sekundära är rätt kandidat för att vara primär.
  • I –> N: Borttagning av den inaktiva sekundära repliken.
  • S –> P: Befordran av den aktiva sekundära till den primära. Detta kan bero på redundansväxling av den primära eller en primär förflyttning som initierats av Klusterresurshanteraren. Det kan till exempel vara ett svar på en programuppgradering eller belastningsutjämning.
  • S –> N: Borttagning av den aktiva sekundära repliken.
  • P –> S: Degradering av den primära repliken. Detta kan bero på en primär förflyttning som initieras av Klusterresurshanteraren. Det kan till exempel vara ett svar på en programuppgradering eller belastningsutjämning.
  • P –> N: Borttagning av den primära repliken.

Anteckning

Programmeringsmodeller på högre nivå, till exempel Reliable Actors och Reliable Services, döljer begreppet replikroller från utvecklaren. I Actors är begreppet roll onödigt. I Tjänster är det i stort sett förenklat för de flesta scenarier.

Nästa steg

Mer information om Service Fabric-begrepp finns i följande artikel:

Reliable Services-livscykel – C#