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


Szolgáltatásszintű funkciók implementálása az aktorszolgáltatásban

A szolgáltatásrétegezésben leírtak szerint maga az aktorszolgáltatás egy megbízható szolgáltatás. A saját szolgáltatását is megírhatja, amely a forrásból ActorServiceszármazik. A szolgáltatásszintű funkciókat ugyanúgy implementálhatja, mint egy állapotalapú szolgáltatás öröklésekor, 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 megszakítóhoz.
  • A távoli eljárás meghívja magát az aktorszolgáltatást és az egyes szereplőket.

Az aktorszolgáltatás használata

A színészpéldányok hozzáféréssel rendelkeznek ahhoz az aktorszolgáltatáshoz, amelyben futnak. Az aktorszolgáltatáson keresztül a színészpéldányok programozott módon szerezhetik be a szolgáltatáskörnyezetet. A szolgáltatáskörnyezet rendelkezik a partícióazonosítóval, a szolgáltatás nevével, az alkalmazás nevével és más Azure Service Fabric-platformspecifikus információkkal.

Task MyActorMethod()
{
    Guid partitionId = this.ActorService.Context.PartitionId;
    string serviceTypeName = this.ActorService.Context.ServiceTypeName;
    Uri serviceInstanceName = this.ActorService.Context.ServiceName;
    string applicationInstanceName = this.ActorService.Context.CodePackageActivationContext.ApplicationName;
}
CompletableFuture<?> MyActorMethod()
{
    UUID partitionId = this.getActorService().getServiceContext().getPartitionId();
    String serviceTypeName = this.getActorService().getServiceContext().getServiceTypeName();
    URI serviceInstanceName = this.getActorService().getServiceContext().getServiceName();
    String applicationInstanceName = this.getActorService().getServiceContext().getCodePackageActivationContext().getApplicationName();
}

A Reliable Serviceshez hasonlóan az aktorszolgáltatást is regisztrálni kell egy szolgáltatástípussal a Service Fabric-futtatókörnyezetben. Ahhoz, hogy az aktorszolgáltatás futtathassa a színészpéldányokat, a színész típusát is regisztrálnia kell az aktorszolgáltatásban. Az aktorok esetében ezt a feladatot az ActorRuntime regisztrációs metódus végzi el. A legegyszerűbb esetben regisztrálhatja a színész típusát, és az aktor szolgáltatás ezután az alapértelmezett beállításokat használja.

static class Program
{
    private static void Main()
    {
        ActorRuntime.RegisterActorAsync<MyActor>().GetAwaiter().GetResult();

        Thread.Sleep(Timeout.Infinite);
    }
}

Másik lehetőségként használhatja a regisztrációs módszer által biztosított lambdát az aktorszolgáltatás létrehozására. Ezután konfigurálhatja az aktorszolgáltatást, és explicit módon létrehozhatja a színészpéldányokat. A konstruktoron keresztül függőségeket szúrhat be a színésznek.

static class Program
{
    private static void Main()
    {
        ActorRuntime.RegisterActorAsync<MyActor>(
            (context, actorType) => new ActorService(context, actorType, () => new MyActor()))
            .GetAwaiter().GetResult();

        Thread.Sleep(Timeout.Infinite);
    }
}
static class Program
{
    private static void Main()
    {
      ActorRuntime.registerActorAsync(
              MyActor.class,
              (context, actorTypeInfo) -> new FabricActorService(context, actorTypeInfo),
              timeout);

        Thread.sleep(Long.MAX_VALUE);
    }
}

Aktorszolgáltatás módszerei

Az aktorszolgáltatás implementálja IActorService a (C#) vagy ActorService a (Java) szolgáltatást, amely viszont implementálja IService a (C#) vagy Service a (Java) műveletet. Ezt a felületet használja a Reliable Services újrametszetelése, amely lehetővé teszi a távoli eljáráshívásokat a szolgáltatás metódusaihoz. Szolgáltatásszintű metódusokat tartalmaz, amelyeket távolról lehet meghívni szolgáltatás-újraküldéssel. Segítségével számba vehet és törölhet szereplőket.

Egyéni aktorszolgáltatás

Az aktorregisztrációs lambda használatával regisztrálhatja saját egyéni aktorszolgáltatását, amely a (C#) és FabricActorService a (Java) függvényből ActorService származik. Ezt követően saját szolgáltatásszintű funkciókat valósíthat meg egy öröklő ActorService (C#) vagy FabricActorService (Java) szolgáltatásosztály megírásával. Az egyéni aktorszolgáltatás a (C#) vagy FabricActorService a (Java) összes aktor-futtatókörnyezeti funkcióját ActorService örökli. Használható saját szolgáltatási módszerek implementálásához.

class MyActorService : ActorService
{
    public MyActorService(StatefulServiceContext context, ActorTypeInformation typeInfo, Func<ActorBase> newActor)
        : base(context, typeInfo, newActor)
    { }
}
class MyActorService extends FabricActorService
{
    public MyActorService(StatefulServiceContext context, ActorTypeInformation typeInfo, BiFunction<FabricActorService, ActorId, ActorBase> newActor)
    {
         super(context, typeInfo, newActor);
    }
}
static class Program
{
    private static void Main()
    {
        ActorRuntime.RegisterActorAsync<MyActor>(
            (context, actorType) => new MyActorService(context, actorType, () => new MyActor()))
            .GetAwaiter().GetResult();

        Thread.Sleep(Timeout.Infinite);
    }
}
public class Program
{
    public static void main(String[] args)
    {
        ActorRuntime.registerActorAsync(
                MyActor.class,
                (context, actorTypeInfo) -> new FabricActorService(context, actorTypeInfo),
                timeout);
        Thread.sleep(Long.MAX_VALUE);
    }
}

Aktor biztonsági mentésének és visszaállításának implementálása

Az egyéni aktorszolgáltatás a már meglévő ActorServiceátnevező figyelő kihasználásával közzétehet egy módszert a színészadatok biztonsági mentésére. Példa: Backup and restore actors.

Remoting V2 (interfészkompatibilis) vermet használó aktor

A V2 -remoting V2 (interfészkompatibilis, más néven V2_1) verem tartalmazza a V2-remoting verem összes funkcióját. A felülete kompatibilis az újraegyesítő V1 veremmel, de nem kompatibilis a V2 és az 1. virtuális géppel. Ha az 1- es verzióról V2_1 szeretne frissíteni, és nincs hatással a szolgáltatás rendelkezésre állására, kövesse a következő szakasz lépéseit.

Az újraegyenlítő V2_1 verem használatához a következő módosítások szükségesek:

  1. Adja hozzá a következő szerelvényattribútumot az aktor-felületekhez.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2_1,RemotingClientVersion = RemotingClientVersion.V2_1)]
    
  2. Az aktorszolgáltatás- és aktor-ügyfélprojektek létrehozása és frissítése a V2-verem használatának megkezdéséhez.

Az aktorszolgáltatás frissítése a V2 (interfészkompatibilis) verem újrahangolására a szolgáltatás rendelkezésre állásának befolyásolása nélkül

Ez a módosítás kétlépéses frissítés. Kövesse a sorozat lépéseit.

  1. Adja hozzá a következő szerelvényattribútumot az aktor-felületekhez. Ez az attribútum két figyelőt indít el az aktorszolgáltatás, a V1 (meglévő) és a V2_1 figyelő számára. Ezzel a módosítással frissítse az aktorszolgáltatást.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V1|RemotingListenerVersion.V2_1,RemotingClientVersion = RemotingClientVersion.V2_1)]
    
  2. Frissítse az aktor-ügyfeleket az előző frissítés befejezése után. Ez a lépés gondoskodik arról, hogy az aktorproxy az újrametszési V2_1 vermet használja.

  3. Ez a lépés nem kötelező. Módosítsa az előző attribútumot a V1 figyelő eltávolításához.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2_1,RemotingClientVersion = RemotingClientVersion.V2_1)]
    

A V2-vermet használó színész

A 2.8-os NuGet-csomaggal a felhasználók most már használhatják az újrahangoló V2 vermet, amely jobb teljesítményt nyújt, és olyan funkciókat biztosít, mint az egyéni szerializálás. A V2 újraküldése nem kompatibilis a meglévő újrametszési veremmel (amelyet most V1-remoting veremnek nevezünk).

Az újraegyensúlyozási V2-verem használatához a következő módosítások szükségesek.

  1. Adja hozzá a következő szerelvényattribútumot az aktor-felületekhez.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2,RemotingClientVersion = RemotingClientVersion.V2)]
    
  2. Az aktorszolgáltatás és az aktor ügyfélprojektjének létrehozása és frissítése a V2-verem használatának megkezdéséhez.

Az aktorszolgáltatás frissítése az újraegyesítő V2-veremre a szolgáltatás rendelkezésre állásának befolyásolása nélkül

Ez a módosítás kétlépéses frissítés. Kövesse a sorozat lépéseit.

  1. Adja hozzá a következő szerelvényattribútumot az aktor-felületekhez. Ez az attribútum két figyelőt indít el az aktorszolgáltatás, a V1 (meglévő) és a V2 figyelő számára. Ezzel a módosítással frissítse az aktorszolgáltatást.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V1|RemotingListenerVersion.V2,RemotingClientVersion = RemotingClientVersion.V2)]
    
  2. Frissítse az aktor-ügyfeleket az előző frissítés befejezése után. Ez a lépés gondoskodik arról, hogy az aktorproxy a V2-vermet használja.

  3. Ez a lépés nem kötelező. Módosítsa az előző attribútumot a V1 figyelő eltávolításához.

    [assembly:FabricTransportActorRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2,RemotingClientVersion = RemotingClientVersion.V2)]
    

Következő lépések