Megosztás a következőn keresztül:


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 modellje modellezheti:

Példány életciklusa

InBuild (IB)

Miután a Fürterőforrás-kezelő 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ásgazda elindul, a példány létrejön, majd megnyílik. Az indítás befejezése után a példány átáll a kész állapotra.

Ha a példányhoz tartozó alkalmazásgazda vagy csomópont összeomlik, az eldobott állapotba vált.

Kész (RD)

Kész állapotban a példány működik 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ásgazda vagy csomópont összeomlik, az eldobott állapotba vált.

Záró (CL)

A záró á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ésnek, terheléselosztásnak vagy a törölt szolgáltatásnak. A leállítás befejezése után az eldobott állapotra vált.

Eldobott (DD)

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

Feljegyzés

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

Állapotalapú szolgáltatások replikái

Az állapotalapú szolgáltatás 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 illékony (vagy memórián belüli) á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 különböző szemantikával rendelkezik.

Ha egy InBuild replika alkalmazás-állomása vagy csomópontja összeomlik, az a leállási á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 létre jönnek, ha egy partíció összes replikája újraindul vagy elvetődik.

  • Üresjáratisecondary inbuild replikák: Ezek vagy a fürterőforrás-kezelő által létrehozott új replikák, vagy a meglévő replikák, amelyek lementek, és vissza kell adni a készletbe. Ezeket a replikákat az elsődleges állítja be vagy állítja össze, mielőtt ActiveSecondaryként csatlakozhatnának a replikakészlethez, é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 optimalizálás, ahol 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 replikációban és a műveletek kvórumának 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 a kész replika csomópontja összeomlik, az a leállási állapotra vált.

Záró (CL)

A replika a következő esetekben adja meg a záró állapotot:

  • A replika kódjának leállítása: Előfordulhat, hogy a Service Fabricnek le kell állítania a 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 a leállás á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ásnak.

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 fenntartja a példány metaadatait, amelyek végül törlődnek is.

Le (D)

A le állapotban a replikakód nem fut, de a replika megmaradó állapota az adott csomóponton található. A replika több okból is leállhat– például a csomópont leállása, a replikakód összeomlása, az alkalmazásfrissítés vagy a replika hibái.

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 lenyíló replika akkor lép be a megnyitási állapotba, amikor a Service Fabricnek újból biztonsági másolatot kell készítenie a replikaról. Ez az állapot például akkor lehet, ha az alkalmazás kódfrissítése befejeződik egy csomóponton.

Ha az alkalmazás gazdagépe vagy a nyitó replika csomópontja összeomlik, az a le állapotba vált.

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

StandBy (SB)

A StandBy-replika egy lement, majd megnyitott szolgáltatás replikája. Ezt a replikát akkor 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 a készenléti replika csomópontja összeomlik, az a leállási állapotba vált.

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

Feljegyzés

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

Feljegyzés

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

Replikaszerepkör

A replika szerepköre határozza meg a replikakészletben lévő függvényt:

  • Elsődleges (P): A replikakészletben van egy elsődleges, amely olvasási és írási műveletek végrehajtásáért felelős.
  • ActiveSecondary (S): Ezek olyan replikák, amelyek állapotfrissítéseket kapnak az elsődlegestől, alkalmazzák őket, majd nyugtázásokat küldenek vissza. A replikakészletben több aktív másodpéldány található. Az aktív másodfokok száma határozza meg, hogy hány hibát képes kezelni a szolgáltatás.
  • 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 rendelkeznek felelősséggel a replikakészletben.
  • Ismeretlen (U): Ez a replika kezdeti szerepe, 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 tétlen 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ái hozzájáruljanak 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 az inaktív másodlagos a megfelelő elsődleges jelölt.
  • I –> N: Az inaktív másodlagos replika törlése.
  • S -> P: Az aktív másodlagos előléptetése az elsődleges felé. Ennek oka lehet a fürterőforrás-kezelő által kezdeményezett elsődleges vagy 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ürterőforrás-kezelő á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.

Feljegyzé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 tekintse meg a következő cikket:

A Reliable Services életciklusa – C#