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:
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.
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:
- 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: