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