Share via


Kiszolgálókonfiguráció

A siló programozott módon van konfigurálva a UseOrleans(IHostBuilder, Action<HostBuilderContext,ISiloBuilder>) bővítménymetódussal és számos kiegészítő beállításosztálysal. A beállításosztályok Orleans a .NET Beállítások mintáját követve tölthetők be fájlokon, környezeti változókon és bármely érvényes konfigurációszolgáltatón keresztül.

A silókonfigurációnak több fő aspektusa is van:

  • Fürtszolgáltató
  • (Nem kötelező) Orleans fürtözési információk
  • (Nem kötelező) Siló–siló és ügyfél–siló kommunikációhoz használandó végpontok

Ez egy példa egy silókonfigurációra, amely meghatározza a fürtinformációkat, az Azure-fürtözést használja, és konfigurálja az alkalmazásrészeket:

using IHost host = Host.CreateDefaultBuilder(args)
    .UseOrleans(builder =>
    {
        builder.UseAzureStorageClustering(
            options => options.ConfigureTableServiceClient(connectionString));
    })
    .UseConsoleLifetime()
    .Build();

Tipp.

A fejlesztés Orleanssorán meghívhat UseLocalhostClustering(ISiloBuilder, Int32, Int32, IPEndPoint, String, String) egy helyi fürt konfigurálását. Éles környezetben olyan fürtszolgáltatót kell használnia, amely alkalmas az üzembe helyezésre.

Fürtszolgáltató

siloBuilder.UseAzureStorageClustering(
    options => options.ConfigureTableServiceClient(connectionString))

A beépített Orleans szolgáltatás általában egy csomópontfürtön van üzembe helyezve, dedikált hardveren vagy a felhőben. A fejlesztéshez és az alapszintű teszteléshez Orleans egy csomópontos konfigurációban lehet üzembe helyezni. Csomópontfürtön Orleans való üzembe helyezéskor belsőleg implementál egy protokollkészletet a fürt silók tagságának Orleans felderítéséhez és fenntartásához, beleértve a csomóponthibák észlelését és az automatikus újrakonfigurálást.

A fürttagság megbízható kezeléséhez használja az Azure Table, Orleans az SQL Server vagy az Apache ZooKeeper szolgáltatást a csomópontok szinkronizálásához.

Ebben a példában az Azure Tableet használja a rendszer tagságszolgáltatóként.

Orleans fürtözési információk

A fürtözés opcionális konfigurálásához használja ClusterOptions a metódus típusparaméterét Configure a ISiloBuilder példányon.

siloBuilder.Configure<ClusterOptions>(options =>
{
    options.ClusterId = "my-first-cluster";
    options.ServiceId = "SampleApp";
})

Itt két lehetőséget adhat meg:

  • Állítsa a ClusterId következőre "my-first-cluster": ez a Orleans fürt egyedi azonosítója. Minden ügyfél és siló, amely ezt az azonosítót használja, képes lesz közvetlenül beszélni egymással. Dönthet úgy is, hogy más-más ClusterId telepítést használ.
  • Állítsa be a ServiceId következőt "SampleApp": ez az alkalmazás egyedi azonosítója, amelyet egyes szolgáltatók, például a adatmegőrzési szolgáltatók fognak használni. Ennek az azonosítónak stabilnak kell maradnia, és nem kell változnia az üzemelő példányok között.

Alapértelmezés szerint Orleans"default"ServiceIdClusterIda függvény a . Ezeket az értékeket a legtöbb esetben nem kell módosítani. ServiceId a kettő közül a jelentősebb, és a különböző logikai szolgáltatások megkülönböztetésére szolgál, hogy a háttérrendszereket anélkül oszthassák meg, hogy zavarják egymást. ClusterId annak meghatározására szolgál, hogy mely gazdagépek csatlakoznak egymáshoz, és alkotnak fürtöt.

Az egyes fürtökön belül minden gazdagépnek ugyanazt ServiceIdkell használnia. Azonban több fürt is megosztható ServiceId. Ez lehetővé teszi a kék/zöld üzembe helyezési forgatókönyveket, amikor egy új üzembe helyezés (fürt) elindul egy másik leállítása előtt. Ez a Azure-alkalmazás Szolgáltatásban üzemeltetett rendszerekre jellemző.

A gyakoribb eset az, hogy ServiceIdClusterId az alkalmazás teljes élettartama alatt rögzítettek maradnak, és egy gördülő üzembe helyezési stratégiát használnak. Ez jellemző a Kubernetesben és a Service Fabricben üzemeltetett rendszerekre.

Végpontok

Alapértelmezés szerint Orleans a siló-siló közötti kommunikációhoz használt porton 11111 és a porton 30000 az ügyfél-siló kommunikációhoz szükséges összes adaptert figyeli. A viselkedés felülbírálásához hívja meg ConfigureEndpoints(ISiloBuilder, Int32, Int32, AddressFamily, Boolean) és adja meg a használni kívánt portszámokat.

siloBuilder.ConfigureEndpoints(siloPort: 17_256, gatewayPort: 34_512)

A fenti kód a következőket végzi el:

  • A silóport a következőre 17_256van állítva: .
  • Az átjáró portja a következőre 34_512van állítva: .

A Orleans silónak két tipikus végpontkonfigurációja van:

  • Az ugyanabban a fürtben lévő silók közötti kommunikációhoz silók közötti végpontokat használunk.
  • Az ügyfél-siló (vagy átjáró) végpontok ugyanazon a fürtön lévő ügyfelek és silók közötti kommunikációhoz használatosak.

Ennek a módszernek a legtöbb esetben elegendőnek kell lennie, de szükség esetén testre is szabhatja. Íme egy példa egy külső IP-cím porttovábbítással való használatára:

siloBuilder.Configure<EndpointOptions>(options =>
{
    // Port to use for silo-to-silo
    options.SiloPort = 11_111;
    // Port to use for the gateway
    options.GatewayPort = 30_000;
    // IP Address to advertise in the cluster
    options.AdvertisedIPAddress = IPAddress.Parse("172.16.0.42");
    // The socket used for client-to-silo will bind to this endpoint
    options.GatewayListeningEndpoint = new IPEndPoint(IPAddress.Any, 40_000);
    // The socket used by the gateway will bind to this endpoint
    options.SiloListeningEndpoint = new IPEndPoint(IPAddress.Any, 50_000);
})

Belsőleg a siló figyeli 0.0.0.0:400000.0.0.0:50000és , de a tagságszolgáltatóban 172.16.0.42:11111 közzétett érték és 172.16.0.42:30000.

A siló programozott módon van konfigurálva, és számos kiegészítő beállításosztályon keresztül SiloHostBuilder . A beállításosztályok Orleans a .NET Beállítások mintáját követve tölthetők be fájlokon, környezeti változókon és bármely érvényes konfigurációszolgáltatón keresztül.

A silókonfigurációnak több fő aspektusa is van:

  • Orleans fürtözési információk
  • Fürtszolgáltató
  • Siló–siló és ügyfél–siló kommunikációhoz használandó végpontok
  • Alkalmazásrészek

Ez egy példa egy silókonfigurációra, amely meghatározza a fürtinformációkat, az Azure-fürtözést használja, és konfigurálja az alkalmazásrészeket:

var silo = Host.CreateDefaultBuilder(args)
    .UseOrleans(builder =>
    {
        builder
            .UseAzureStorageClustering(
                options => options.ConnectionString = connectionString)
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "my-first-cluster";
                options.ServiceId = "AspNetSampleApp";
            })
            .ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000)
            .ConfigureApplicationParts(
                parts => parts.AddApplicationPart(typeof(ValueGrain).Assembly).WithReferences())
    })
    .UseConsoleLifetime()
    .Build();

Bontsuk le a példában használt lépéseket:

Fürtszolgáltató

siloBuilder.UseAzureStorageClustering(
    options => options.ConnectionString = connectionString)

A beépített Orleans szolgáltatás általában egy csomópontfürtön van üzembe helyezve, dedikált hardveren vagy a felhőben. A fejlesztéshez és az alapszintű teszteléshez Orleans egy csomópontos konfigurációban lehet üzembe helyezni. Csomópontfürtön Orleans való üzembe helyezéskor belsőleg implementál egy protokollkészletet a fürt silók tagságának Orleans felderítéséhez és fenntartásához, beleértve a csomóponthibák észlelését és az automatikus újrakonfigurálást.

A fürttagság megbízható kezeléséhez használja az Azure Table, Orleans az SQL Server vagy az Apache ZooKeeper szolgáltatást a csomópontok szinkronizálásához.

Ebben a példában az Azure Tableet használjuk tagságszolgáltatóként.

Orleans fürtözési információk

.Configure<ClusterOptions>(options =>
{
    options.ClusterId = "my-first-cluster";
    options.ServiceId = "AspNetSampleApp";
})

Itt két dolgot csinálunk:

  • Állítsa a ClusterId következőre "my-first-cluster": ez a Orleans fürt egyedi azonosítója. Minden ügyfél és siló, amely ezt az azonosítót használja, képes lesz közvetlenül beszélni egymással. Dönthet úgy is, hogy más-más ClusterId telepítést használ.
  • Állítsa be a ServiceId következőt "AspNetSampleApp": ez az alkalmazás egyedi azonosítója, amelyet egyes szolgáltatók, például a adatmegőrzési szolgáltatók fognak használni. Ennek az azonosítónak stabilnak kell maradnia, és nem kell változnia az üzemelő példányok között.

Alapértelmezés szerint Orleans"default"ServiceIdClusterIda függvény a . Ezeket az értékeket a legtöbb esetben nem kell módosítani. ServiceId a kettő közül a jelentősebb, és a különböző logikai szolgáltatások megkülönböztetésére szolgál, hogy a háttérrendszereket anélkül oszthassák meg, hogy zavarják egymást. ClusterId annak meghatározására szolgál, hogy mely gazdagépek csatlakoznak egymáshoz, és alkotnak fürtöt.

Az egyes fürtökön belül minden gazdagépnek ugyanazt ServiceIdkell használnia. Azonban több fürt is megosztható ServiceId. Ez lehetővé teszi a kék/zöld üzembe helyezési forgatókönyveket, amikor egy új üzembe helyezés (fürt) elindul egy másik leállítása előtt. Ez a Azure-alkalmazás Szolgáltatásban üzemeltetett rendszerekre jellemző.

A gyakoribb eset az, hogy ServiceIdClusterId az alkalmazás teljes élettartama alatt rögzítettek maradnak, és egy gördülő üzembe helyezési stratégiát használnak. Ez jellemző a Kubernetesben és a Service Fabricben üzemeltetett rendszerekre.

Végpontok

siloBuilder.ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000)

A Orleans silónak két tipikus végpontkonfigurációja van:

  • Siló-siló végpontok, amelyeket ugyanazon fürt silói közötti kommunikációhoz használnak
  • Ügyfél-siló végpontok (vagy átjárók), amelyeket ugyanabban a fürtben lévő ügyfelek és silók közötti kommunikációhoz használnak

A mintában a segédmetódust .ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000) használjuk, amely beállítja a silók közötti kommunikációhoz 11111 használt portot, és az átjáró 30000portját. Ez a metódus észleli, hogy melyik felületet kell figyelni.

Ennek a módszernek a legtöbb esetben elegendőnek kell lennie, de szükség esetén testre is szabhatja. Íme egy példa egy külső IP-cím porttovábbítással való használatára:

siloBuilder.Configure<EndpointOptions>(options =>
{
    // Port to use for silo-to-silo
    options.SiloPort = 11111;
    // Port to use for the gateway
    options.GatewayPort = 30000;
    // IP Address to advertise in the cluster
    options.AdvertisedIPAddress = IPAddress.Parse("172.16.0.42");
    // The socket used for client-to-silo will bind to this endpoint
    options.GatewayListeningEndpoint = new IPEndPoint(IPAddress.Any, 40000);
    // The socket used by the gateway will bind to this endpoint
    options.SiloListeningEndpoint = new IPEndPoint(IPAddress.Any, 50000);
})

Belsőleg a siló figyeli 0.0.0.0:400000.0.0.0:50000és , de a tagságszolgáltatóban 172.16.0.42:11111 közzétett érték és 172.16.0.42:30000.

Alkalmazásrészek

siloBuilder.ConfigureApplicationParts(
    parts => parts.AddApplicationPart(
        typeof(ValueGrain).Assembly)
        .WithReferences())

Bár ez a lépés technikailag nem szükséges (ha nincs konfigurálva, Orleans az aktuális mappában lévő összes szerelvényt megvizsgálja), a fejlesztőknek javasoljuk, hogy ezt konfigurálják. Ez a lépés segít Orleans betölteni a felhasználói szerelvényeket és -típusokat. Ezeket a szerelvényeket alkalmazásrészeknek nevezzük. Minden szemcsés, szemcsés felület és szerializáló az alkalmazásrészek használatával van felderítve.

Az alkalmazásrészek konfigurálása IApplicationPartManagera bővítménymetódussal és a ConfigureApplicationParts bővítménymetódussal IClientBuilderISiloHostBuilderérhető el. A ConfigureApplicationParts metódus egy meghatalmazottat fogad el. Action<IApplicationPartManager>

A következő bővítménymetelyek támogatják a IApplicationPartManager gyakori felhasználási módokat:

A fenti módszerek által hozzáadott szerelvények a visszatérési típusukon a következő bővítménymetelyekkel bővíthetők: IApplicationPartManagerWithAssemblies

  • ApplicationPartManagerExtensions.WithReferences Hozzáadja az összes hivatkozott szerelvényt a hozzáadott alkatrészekből. Ez azonnal betölti a tranzitívan hivatkozott szerelvényeket. A rendszer figyelmen kívül hagyja a szerelvény betöltési hibáit.
  • ApplicationPartManagerCodeGenExtensions.WithCodeGeneration létrehoz egy támogatási kódot a hozzáadott részekhez, és hozzáadja a részkezelőhöz. Vegye figyelembe, hogy ehhez telepíteni kell a Microsoft.Orleans.OrleansCodeGenerator csomagot, amelyet gyakran futtatókörnyezeti kódgenerálásnak neveznek.

A típusfelderítéshez a megadott alkalmazásrészek adott attribútumokat tartalmaznak. A szemcséket, szemcsés felületeket vagy szerializálókat tartalmazó projektekhez ajánlott hozzáadni a buildidős kódgenerálási csomagot (Microsoft.Orleans.CodeGenerator.MSBuild vagy Microsoft.Orleans.OrleansCodeGenerator.Build) annak biztosítására, hogy ezek az attribútumok jelen legyenek. A buildelési időkód létrehozása csak a C#-ot támogatja. Az F#, a Visual Basic és más .NET-nyelvek esetében a WithCodeGeneration kód a konfigurációs idő alatt a fent leírt módszerrel hozható létre. A kódlétrehozásról további információt a megfelelő szakaszban talál.