Replikák és példányok

Ez a cikk áttekintést nyújt az állapotalapú szolgáltatások replikáinak és az állapot nélküli szolgáltatások példányainak életciklusáról.

Állapot nélküli szolgáltatások példányai

Az állapot nélküli szolgáltatások példánya a fürt egyik csomópontján futó szolgáltatáslogika másolata. A partíción belüli példányokat az InstanceId egyedileg azonosítja. Egy példány életciklusát a következő diagram modellezheti:

Példány életciklusa

InBuild (IB)

Miután a fürt Resource Manager meghatározta a példány elhelyezését, ezt az életciklus-állapotot adja meg. A példány a csomóponton indul el. Az alkalmazás gazdagépe elindul, a példány létrejön, majd megnyílik. Az indítás befejezése után a példány kész állapotba vált.

Ha a példányhoz tartozó alkalmazás gazdagépe vagy csomópontja összeomlik, az eldobott állapotba vált.

Kész (RD)

Kész állapotban a példány működik és fut a csomóponton. Ha ez a példány megbízható szolgáltatás, a RunAsync meghívása megtörtént.

Ha a példányhoz tartozó alkalmazás gazdagépe vagy csomópontja összeomlik, az eldobott állapotba vált.

Záró (CL)

A lezárási állapotban az Azure Service Fabric éppen leállítja a példányt ezen a csomóponton. Ennek a leállításnak számos oka lehet, például egy alkalmazásfrissítés, terheléselosztás vagy a szolgáltatás törlése. A leállítás befejezése után az elvetett állapotba vált.

Eldobott (DD)

Az elvetett állapotban a példány már nem fut a csomóponton. Ezen a ponton a Service Fabric megőrzi a példány metaadatait, amelyek végül törlődnek.

Megjegyzés

A ForceRemove beállítással bármilyen állapotról át lehet váltani az elvetett állapotra Remove-ServiceFabricReplica.

Állapotalapú szolgáltatások replikái

Az állapotalapú szolgáltatások replikája a fürt egyik csomópontján futó szolgáltatáslogika másolata. Emellett a replika megőrzi a szolgáltatás állapotának másolatát. Az állapotalapú replikák életciklusát és viselkedését két kapcsolódó fogalom ismerteti:

  • Replika életciklusa
  • Replikaszerepkör

Az alábbi vitafórum a tartós állapotalapú szolgáltatásokat ismerteti. Az ideiglenes (vagy memóriabeli) állapotalapú szolgáltatások esetében a le- és elvetett állapotok egyenértékűek.

Replika életciklusa

InBuild (IB)

Az InBuild replika a replikakészlethez való csatlakozásra létrehozott vagy előkészített replika. A replikaszerepkörtől függően az IB szemantikája eltérő.

Ha egy InBuild replika alkalmazás-gazdagépe vagy csomópontja összeomlik, az állapotba vált.

  • Elsődleges inBuild replikák: Az elsődleges inBuild a partíció első replikája. Ez a replika általában a partíció létrehozásakor fordul elő. Az elsődleges InBuild replikák akkor is felmerülnek, ha egy partíció összes replikája újraindul vagy el lett vetve.

  • Üresjáratisecondary InBuild replikák: Ezek vagy a fürt Resource Manager által létrehozott új replikák, vagy a meglévő replikák, amelyek leálltak, és újra hozzá kell adni a készlethez. Ezeket a replikákat az elsődleges állítja be vagy építi fel, mielőtt ActiveSecondaryként csatlakoztathatják a replikakészletet, és részt vehetnek a műveletek kvórum-nyugtázásában.

  • ActiveSecondary InBuild replikák: Ez az állapot bizonyos lekérdezésekben figyelhető meg. Ez egy olyan optimalizálás, amelyben a replikakészlet nem változik, de létre kell állítani egy replikát. Maga a replika követi a normál állapotú gépek áttűnéseit (a replikaszerepkörökről szóló szakaszban leírtak szerint).

Kész (RD)

A Kész replika olyan replika, amely részt vesz a műveletek replikációjában és kvórum nyugtázásában. A kész állapot az elsődleges és az aktív másodlagos replikákra érvényes.

Ha az alkalmazás gazdagépe vagy egy kész replika csomópontja összeomlik, a rendszer leállítja az állapotot.

Záró (CL)

A replika a következő esetekben lép be a záró állapotba:

  • A replika kódjának leállítása: Előfordulhat, hogy a Service Fabricnek le kell állítania egy replika futó kódját. Ennek a leállításnak számos oka lehet. Ez történhet például egy alkalmazás, háló vagy infrastruktúra frissítése vagy a replika által jelentett hiba miatt. Amikor a replika bezárul, a replika lefelé állapotba vált. A lemezen tárolt replikához társított állandó állapot nem törlődik.

  • A replika eltávolítása a fürtből: Előfordulhat, hogy a Service Fabricnek el kell távolítania a megőrzött állapotot, és le kell állítania a replika futó kódját. A leállításnak számos oka lehet, például a terheléselosztás.

Eldobott (DD)

Az elvetett állapotban a példány már nem fut a csomóponton. A csomóponton sem maradt állapot. Ezen a ponton a Service Fabric megőrzi a példány metaadatait, amelyek végül törlődnek.

Le (D)

A le állapotban a replikakód nem fut, de a replika megőrzött állapota létezik az adott csomóponton. A replika számos okból leállhat– például a csomópont leállása, a replikakód összeomlása, az alkalmazás frissítése vagy a replika hibái miatt.

A Service Fabric szükség szerint megnyit egy lefelé irányuló replikát, például amikor a frissítés befejeződik a csomóponton.

A replikaszerepkör nem releváns a leállási állapotban.

Megnyitás (OP)

A leállásos replika akkor lép be a megnyitási állapotba, ha a Service Fabricnek újból vissza kell állítania a replikát. Ez az állapot például akkor lehet, ha az alkalmazás kódfrissítése befejeződött egy csomóponton.

Ha az alkalmazás gazdagépe vagy egy nyitó replika csomópontja összeomlik, a rendszer leállítja az állapotot.

A replikaszerepkör nem releváns a megnyitási állapotban.

StandBy (SB)

A StandBy replika egy megőrzött szolgáltatás replikája, amely leállt, majd meg lett nyitva. Ezt a replikát használhatja a Service Fabric, ha egy másik replikát kell hozzáadnia a replikakészlethez (mivel a replika már rendelkezik az állapot egy részével, és a létrehozási folyamat gyorsabb). A StandByReplicaKeepDuration lejárata után a készenléti replika el lesz vetve.

Ha az alkalmazás gazdagépe vagy egy készenléti replika csomópontja összeomlik, a rendszer leállítja az állapotot.

A replikaszerepkör készenléti állapotban nem releváns.

Megjegyzés

A nem leállt vagy elvetett replikák felfelé tekintenek.

Megjegyzés

A ForceRemove beállítással bármilyen állapotról áttérhet az elvetett állapotra Remove-ServiceFabricReplica.

Replikaszerepkör

A replika szerepköre határozza meg annak függvényét a replikakészletben:

  • Elsődleges (P): A replikakészletben van egy elsődleges, amely az olvasási és írási műveletek végrehajtásáért felelős.
  • ActiveSecondary (S): Ezek olyan replikák, amelyek állapotfrissítéseket fogadnak az elsődlegestől, alkalmazzák őket, majd nyugtázásokat küldenek vissza. A replikakészletben több aktív másodlagos fájl található. Ezen aktív másodlagos fájlok száma határozza meg, hogy a szolgáltatás hány hibát képes kezelni.
  • IdleSecondary (I): Ezeket a replikákat az elsődleges építi fel. Állapotot kapnak az elsődlegestől, mielőtt előléptethetők az aktív másodlagosra.
  • Nincs (N): Ezek a replikák nem tartoznak felelősséggel a replikakészletben.
  • Ismeretlen (U): Ez a replika kezdeti szerepköre, mielőtt bármilyen ChangeRole API-hívást fogad a Service Fabrictől.

Az alábbi ábra a replikaszerepkör áttűnéseit és néhány példaforgatókönyvet szemléltet, amelyekben előfordulhatnak:

Replikaszerepkör

  • U –> P: Új elsődleges replika létrehozása.
  • U –> I: Új üresjárati replika létrehozása.
  • U –> N: Készenléti replika törlése.
  • I -> S: Az inaktív másodlagos és az aktív másodlagos előléptetése annak érdekében, hogy nyugtázása hozzájáruljon a kvórumhoz.
  • I -> P: Az inaktív másodlagos előléptetése az elsődleges felé. Ez speciális újrakonfigurálások esetén fordulhat elő, ha a tétlen másodlagos a megfelelő elsődleges jelölt.
  • I –> N: A tétlen másodlagos replika törlése.
  • S –> P: Az aktív másodlagos előléptetése az elsődlegesre. Ennek oka lehet az elsődleges vagy a fürt Resource Manager által kezdeményezett elsődleges mozgás feladatátvétele. Előfordulhat például, hogy egy alkalmazásfrissítésre vagy terheléselosztásra reagál.
  • S –> N: Az aktív másodlagos replika törlése.
  • P –> S: Az elsődleges replika lefokozása. Ennek oka lehet a fürt Resource Manager által kezdeményezett elsődleges mozgás. Előfordulhat például, hogy egy alkalmazásfrissítésre vagy terheléselosztásra reagál.
  • P –> N: Az elsődleges replika törlése.

Megjegyzés

A magasabb szintű programozási modellek, például a Reliable Actors és a Reliable Services elrejtik a replikaszerepkörök fogalmát a fejlesztő elől. Az Actorsben a szerepkör fogalma szükségtelen. A Szolgáltatásokban ez a legtöbb forgatókönyv esetében jelentősen leegyszerűsítve van.

Következő lépések

A Service Fabric fogalmaival kapcsolatos további információkért lásd a következő cikket:

A Reliable Services életciklusa – C#