Repliky a instance

Tento článek poskytuje přehled životního cyklu replik stavových služeb a instancí bezstavových služeb.

Instance bezstavových služeb

Instance bezstavové služby je kopie logiky služby, která běží na jednom z uzlů clusteru. Instance v rámci oddílu je jedinečně identifikována id instance. Životní cyklus instance je modelován v následujícím diagramu:

Instance lifecycle

InBuild (IB)

Jakmile Správce prostředků clusteru určí umístění instance, zadá tento stav životního cyklu. Instance se spustí v uzlu. Hostitel aplikace se spustí, instance se vytvoří a pak se otevře. Po dokončení spuštění instance přejde do připraveného stavu.

Pokud dojde k chybovému ukončení hostitele nebo uzlu aplikace pro tuto instanci, přejde do vyřazeného stavu.

Připraveno (RD)

V připraveném stavu je instance v uzlu spuštěná a spuštěná. Pokud je tato instance spolehlivou službou, byla vyvolána funkce RunAsync .

Pokud dojde k chybovému ukončení hostitele nebo uzlu aplikace pro tuto instanci, přejde do vyřazeného stavu.

Uzavření (CL)

Ve koncovém stavu je Azure Service Fabric v procesu vypnutí instance na tomto uzlu. Toto vypnutí může být způsobeno mnoha důvody – například upgrade aplikace, vyrovnávání zatížení nebo odstraněná služba. Po dokončení vypnutí přejde do vyřazeného stavu.

Vyřazeno (DD)

V vyřazeném stavu už instance na uzlu neběží. V tomto okamžiku Service Fabric udržuje metadata o této instanci, která se nakonec odstraní také.

Poznámka

Je možné přejít z libovolného stavu na vyřazený stav pomocí možnosti ForceRemove na Remove-ServiceFabricReplica.

Repliky stavových služeb

Replika stavové služby je kopie logiky služby spuštěné na jednom z uzlů clusteru. Kromě toho replika udržuje kopii stavu této služby. Dva související koncepty popisují životní cyklus a chování stavových replik:

  • Životní cyklus repliky
  • Role repliky

Následující diskuze popisuje trvalé stavové služby. U stavových služeb nestálých (nebo v paměti) jsou stavy mimo provoz a vyřazení ekvivalentní.

Replica lifecycle

InBuild (IB)

Replika InBuildu je replika vytvořená nebo připravená pro připojení sady replik. V závislosti na roli repliky má IB různou sémantiku.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu repliky InBuild, přejde do stavu down.

  • Primární repliky InBuild: Primární inBuild jsou první repliky oddílu. K této replice obvykle dochází při vytváření oddílu. Primární repliky InBuild také vznikají, když se všechny repliky restartu oddílu nebo se zahodí.

  • IdleSecondary InBuild repliky: Jedná se o nové repliky vytvořené Správcem prostředků clusteru nebo existující repliky, které se snížily a je potřeba je přidat zpět do sady. Tyto repliky jsou počáteční nebo sestavené primárním serverem, než se můžou připojit k sadě replik jako ActiveSecondary a účastnit se potvrzení operací kvora.

  • Repliky Nástroje ActiveSecondary InBuild: Tento stav se vyskytuje v některých dotazech. Jedná se o optimalizaci, kdy se sada replik nemění, ale je potřeba sestavit repliku. Samotná replika se řídí přechody počítačů normálního stavu (jak je popsáno v části o rolích replik).

Připraveno (RD)

Připravená replika je replika, která se účastní replikace a potvrzení kvora operací. Připravený stav se vztahuje na primární a aktivní sekundární repliky.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu pro připravenou repliku, přejde do stavu down.

Uzavření (CL)

Replika zadá konečný stav v následujících scénářích:

  • Vypnutí kódu repliky: Service Fabric může potřebovat vypnout spuštěný kód repliky. Toto vypnutí může být z mnoha důvodů. Může k tomu dojít například kvůli upgradu aplikace, prostředků infrastruktury nebo infrastruktury nebo kvůli chybě hlášené replikou. Po dokončení repliky se replika přesune do stavu down. Trvalý stav přidružený k této replice, která je uložená na disku, se nevyčistí.

  • Odebrání repliky z clusteru: Service Fabric může potřebovat odebrat trvalý stav a vypnout spuštěný kód repliky. Toto vypnutí může být z mnoha důvodů, například vyrovnávání zatížení.

Vyřazeno (DD)

V vyřazeném stavu už instance na uzlu neběží. Na uzlu také není žádný stav. V tomto okamžiku Service Fabric udržuje metadata o této instanci, která se nakonec odstraní také.

Dolů (D)

Ve stavu down není kód repliky spuštěný, ale trvalý stav této repliky na daném uzlu existuje. Replika může být mimo provoz z mnoha důvodů – například dochází k výpadku uzlu, chybovému ukončení v kódu repliky, upgradu aplikace nebo chybám repliky.

Service Fabric otevře repliku down podle potřeby, například po dokončení upgradu na uzlu.

Role repliky není ve stavu down relevantní.

Otevření (OP)

Když Service Fabric potřebuje repliku znovu zálohovat, přejde do stavu otevření repliky. Tento stav může být například po dokončení upgradu kódu aplikace na uzlu.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu pro levou repliku, přejde do stavu down.

Role repliky není ve stavu otevření relevantní.

StandBy (SB)

Replika StandBy je replika trvalé služby, která se snížila a pak byla otevřena. Tuto repliku může Service Fabric používat, pokud potřebuje do sady replik přidat další repliku (protože replika už má část stavu a proces sestavení je rychlejší). Po vypršení platnosti StandByReplicaKeepDuration se pohotovostní replika zahodí.

Pokud dojde k chybovému ukončení hostitele aplikace nebo uzlu pro pohotovostní repliku, přejde do stavu down.

Role repliky není v pohotovostním stavu relevantní.

Poznámka

Jakákoli replika, která není down nebo vyřazena, se považuje za nahoru.

Poznámka

Je možné přejít z libovolného stavu na vyřazený stav pomocí možnosti ForceRemove na Remove-ServiceFabricReplica.

Role repliky

Role repliky určuje její funkci v sadě replik:

  • Primární (P): V sadě replik existuje jedna primární primární sada, která zodpovídá za provádění operací čtení a zápisu.
  • ActiveSecondary (S): Jedná se o repliky, které přijímají aktualizace stavu z primárního serveru, aplikují je a pak odesílají zpět potvrzení. V sadě replik existuje několik aktivních sekund. Počet těchto aktivních sekund určuje počet chyb, které může služba zpracovat.
  • IdleSecondary (I):: Tyto repliky jsou sestaveny primárním serverem. Přijímají stav z primárního serveru, než je možné je zvýšit na aktivní sekundární.
  • Žádná (N): Tyto repliky nemají odpovědnost v sadě replik.
  • Neznámá (U): Jedná se o počáteční roli repliky před tím, než přijme volání rozhraní API pro roli změny ze služby Service Fabric.

Následující diagram znázorňuje přechody rolí repliky a některé ukázkové scénáře, ve kterých mohou nastat:

Replica role

  • U -> P: Vytvoření nové primární repliky.
  • U -> I: Vytvoření nové nečinné repliky.
  • U -> N: Odstranění pohotovostní repliky.
  • I -> S: Povýšení nečinného sekundárního na aktivní sekundární, aby jeho potvrzení přispívá k kvoru.
  • I -> P: Povýšení nečinného sekundárního na primární. K tomu může dojít v rámci speciálních rekonfigurací, když sekundární nečinný je správným kandidátem, který má být primární.
  • I -> N: Odstranění nečinné sekundární repliky.
  • S -> P: Povýšení aktivní sekundární na primární. Příčinou může být převzetí služeb při selhání primárního nebo primárního přesunu iniciovaného Správcem prostředků clusteru. Může například reagovat na upgrade nebo vyrovnávání zatížení aplikace.
  • S -> N: Odstranění aktivní sekundární repliky.
  • P -> S: Snížení úrovně primární repliky Příčinou může být primární přesun iniciovaný Správcem prostředků clusteru. Může například reagovat na upgrade nebo vyrovnávání zatížení aplikace.
  • P -> N: Odstranění primární repliky.

Poznámka

Programovací modely vyšší úrovně, jako jsou Reliable Actors a Reliable Services, skryjí koncept rolí replik od vývojáře. V Actors je pojem role nepotřebný. Ve službách je pro většinu scénářů do značné míry zjednodušená.

Další kroky

Další informace o konceptech Service Fabric najdete v následujícím článku:

Životní cyklus Reliable Services – C#