Hogyan használják a Reliable Actors a Service Fabric platformot?
Ez a cikk bemutatja, hogyan működnek a Reliable Actors az Azure Service Fabric platformon. A Reliable Actors egy olyan keretrendszerben fut, amely az aktorszolgáltatás nevű állapotalapú megbízható szolgáltatás implementációjában fut. Az aktorszolgáltatás tartalmazza a szereplők életciklusának és üzenetküldésének kezeléséhez szükséges összes összetevőt:
- Az Aktor-futtatókörnyezet kezeli az életciklust, a szemétgyűjtést, és kényszeríti az egyszálas hozzáférést.
- Az aktorszolgáltatás átnevező figyelője fogadja a szereplőkhöz intézett távelérési hívásokat, és elküldi őket egy diszpécsernek, hogy a megfelelő szereplőpéldányra irányt vehessen.
- Az Aktorállapot-szolgáltató körbefuttatja az állapotszolgáltatókat (például a Reliable Collections állapotszolgáltatót), és adaptert biztosít az aktorállapot-kezeléshez.
Ezek az összetevők együttesen alkotják a Reliable Actor keretrendszert.
Szolgáltatásrétegezés
Mivel maga az aktorszolgáltatás egy megbízható szolgáltatás, a Reliable Services összes alkalmazásmodellje, életciklusa, csomagolása, üzembe helyezése, frissítése és skálázása ugyanúgy vonatkozik az aktorszolgáltatásokra.
Az előző diagram a Service Fabric-alkalmazás-keretrendszerek és a felhasználói kód közötti kapcsolatot mutatja be. A kék elemek a Reliable Services alkalmazás-keretrendszert, a narancssárga a Reliable Actor keretrendszert, a zöld pedig a felhasználói kódot jelölik.
A Reliable Servicesben a szolgáltatás örökli az osztályt StatefulService
. Ez az osztály maga származik ( StatefulServiceBase
vagy StatelessService
állapot nélküli szolgáltatásokból). A Reliable Actorsben az aktorszolgáltatást használja. Az aktorszolgáltatás a osztály egy másik implementációja StatefulServiceBase
, amely implementálja azt az aktormintát, ahol a színészek futnak. Mivel maga az aktorszolgáltatás csak a implementációja StatefulServiceBase
, megírhatja saját szolgáltatását, amely ugyanúgy származik ActorService
és implementál szolgáltatási szintű funkciókat, mint az öröklésekor StatefulService
, például:
- Szolgáltatás biztonsági mentése és visszaállítása.
- Megosztott funkciók az összes szereplőhöz, például egy áramkör-megszakítóhoz.
- A távoli eljárás magát az aktorszolgáltatást és az egyes szereplőket hívja meg.
További információ: Szolgáltatásszintű szolgáltatások implementálása az aktorszolgáltatásban.
Alkalmazásmodell
Az aktorszolgáltatások megbízható szolgáltatások, így az alkalmazásmodell ugyanaz. Az aktor-keretrendszer buildelési eszközei azonban létrehoznak néhány alkalmazásmodell-fájlt.
Szolgáltatásjegyzék
Az aktor-keretrendszer buildelési eszközei automatikusan generálják az aktorszolgáltatás ServiceManifest.xml fájljának tartalmát. Ez a fájl a következőket tartalmazza:
- Aktorszolgáltatás típusa. A típusnév a színész projektneve alapján jön létre. Az aktor adatmegőrzési attribútuma alapján a HasPersistedState jelölő is ennek megfelelően van beállítva.
- Kódcsomag.
- Konfigurációs csomag.
- Erőforrások és végpontok.
Alkalmazásjegyzék
Az aktor-keretrendszer buildelési eszközei automatikusan létrehoznak egy alapértelmezett szolgáltatásdefiníciót az aktorszolgáltatáshoz. A buildelési eszközök feltöltik az alapértelmezett szolgáltatástulajdonságokat:
- A replikakészletek számát az aktor adatmegőrzési attribútuma határozza meg. Minden alkalommal, amikor a szereplő adatmegőrzési attribútuma módosul, a replikakészletek száma az alapértelmezett szolgáltatásdefinícióban ennek megfelelően alaphelyzetbe áll.
- A partícióséma és a tartomány egységes Int64 értékre van állítva a teljes Int64-kulcstartománysal.
Service Fabric-partíciók fogalmai aktorokhoz
Az aktorszolgáltatások particionált állapotalapú szolgáltatások. Az aktorszolgáltatás minden partíciója szereplőkészletet tartalmaz. A szolgáltatáspartíciók automatikusan el vannak osztva több csomóponton a Service Fabricben. Az aktorpéldányok ennek eredményeképpen lesznek elosztva.
A Reliable Services különböző partíciós sémákkal és partíciókulcs-tartományokkal hozható létre. Az aktorszolgáltatás az Int64 particionálási sémát és a teljes Int64-kulcstartományt használja az aktorok partíciókhoz való leképezéséhez.
Színész azonosítója
A szolgáltatásban létrehozott összes szereplőhöz tartozik egy egyedi azonosító, amelyet az ActorId
osztály jelöl.
ActorId
egy átlátszatlan azonosítóérték, amely véletlenszerű azonosítók létrehozásával használható a szereplőknek a szolgáltatáspartíciók közötti egyenletes elosztásához:
ActorProxy.Create<IMyActor>(ActorId.CreateRandom());
ActorProxyBase.create<MyActor>(MyActor.class, ActorId.newId());
Mindegyik ActorId
egy Int64-hez van kivonatolva. Ezért az aktorszolgáltatásnak int64 particionálási sémát kell használnia a teljes Int64-kulcstartománysal. Az egyéni azonosítóértékek azonban használhatók ActorID
a , beleértve a GRAFIKUS AZONOSÍTÓkat/UUID-ket, sztringeket és int64-eket is.
ActorProxy.Create<IMyActor>(new ActorId(Guid.NewGuid()));
ActorProxy.Create<IMyActor>(new ActorId("myActorId"));
ActorProxy.Create<IMyActor>(new ActorId(1234));
ActorProxyBase.create(MyActor.class, new ActorId(UUID.randomUUID()));
ActorProxyBase.create(MyActor.class, new ActorId("myActorId"));
ActorProxyBase.create(MyActor.class, new ActorId(1234));
Ha GRAFIKUS AZONOSÍTÓkat/UUID-ket és sztringeket használ, az értékek kivonatolva lesznek egy Int64-re. Ha azonban kifejezetten egy Int64-et ad meg egy ActorId
adottnak, az Int64 közvetlenül egy partícióra lesz leképezve további kivonatolás nélkül. Ezzel a technikával szabályozhatja, hogy a szereplők melyik partícióba kerüljenek.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: