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


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.

Aktorszolgáltatás rétegezése

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.

Aktor particionálása és terjesztése

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 ActorIDa , 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 ActorIdadottnak, 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