Freigeben über


Typische Konfigurationen

Nachfolgend finden Sie Beispiele für typische Konfigurationen, die Sie für Entwicklungs- und Produktionsbereitstellungen verwenden können.

Lokale Entwicklung

Weitere Informationen finden Sie unter "Konfiguration der lokalen Entwicklung".

Zuverlässige Produktionsbereitstellung mit Azure

Verwenden Sie für eine zuverlässige Produktionsbereitstellung mit Azure die Azure-Tabellenoption für die Clustermitgliedschaft. Diese Konfiguration ist typisch für Bereitstellungen für lokale Server, Container oder Azure Virtual Machine-Instanzen.

Das Format der DataConnection Zeichenfolge ist eine durch Semikolons getrennte Liste von Key=Value Paaren. Die folgenden Optionen werden unterstützt:

Schlüssel Wert
DefaultEndpointsProtocol https
AccountName <Azure storage account>
AccountKey <Azure table storage account key>

Im Folgenden sehen Sie ein Beispiel für eine DataConnection Zeichenfolge für den Azure-Tabellenspeicher:

"DefaultEndpointsProtocol=https;AccountName=<Azure storage account>;AccountKey=<Azure table storage account key>"

Silokonfiguration:

const string connectionString = "YOUR_CONNECTION_STRING_HERE";
var silo = new HostBuilder()
    .UseOrleans(builder =>
    {
        builder.Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "Cluster42";
            options.ServiceId = "MyAwesomeService";
        })
        .UseAzureStorageClustering(
            options => options.ConfigureTableServiceClient(connectionString))
        .ConfigureEndpoints(siloPort: 11_111, gatewayPort: 30_000)
        .ConfigureLogging(builder => builder.SetMinimumLevel(LogLevel.Warning).AddConsole())
    })
    .Build();

Clientkonfiguration:

const string connectionString = "YOUR_CONNECTION_STRING_HERE";

using var host = Host.CreateDefaultBuilder(args)
    .UseOrleansClient(clientBuilder =>
        clientBuilder.Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "Cluster42";
            options.ServiceId = "MyAwesomeService";
        })
        .UseAzureStorageClustering(
            options => options.ConfigureTableServiceClient(connectionString)))
    .Build();

Zuverlässige Produktionsbereitstellung mit SQL Server

Geben Sie für eine zuverlässige Produktionsbereitstellung mit SQL Server eine SQL Server-Verbindungszeichenfolge an.

Silokonfiguration:

const string connectionString = "YOUR_CONNECTION_STRING_HERE";
var silo = new HostBuilder()
    .UseOrleans(builder =>
    {
        builder.Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "Cluster42";
            options.ServiceId = "MyAwesomeService";
        })
        .UseAdoNetClustering(options =>
        {
          options.ConnectionString = connectionString;
          options.Invariant = "System.Data.SqlClient";
        })
        .ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000)
        .ConfigureLogging(builder => builder.SetMinimumLevel(LogLevel.Warning).AddConsole())
    })
    .Build();

Clientkonfiguration:

const string connectionString = "YOUR_CONNECTION_STRING_HERE";

using var host = Host.CreateDefaultBuilder(args)
    .UseOrleansClient(clientBuilder =>
        clientBuilder.Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "Cluster42";
            options.ServiceId = "MyAwesomeService";
        })
        .UseAdoNetClustering(options =>
        {
          options.ConnectionString = connectionString;
          options.Invariant = "System.Data.SqlClient";
        }))
    .Build();

Unzuverlässige Bereitstellung auf einem Cluster dedizierter Server

Zum Testen auf einem Cluster dedizierter Server, bei denen Zuverlässigkeit kein Problem darstellt, können Sie die Abhängigkeit von Azure Table nutzen MembershipTableGrain und vermeiden. Sie müssen nur einen der Knoten als primär festlegen.

Auf den Silos:

var primarySiloEndpoint = new IPEndpoint(PRIMARY_SILO_IP_ADDRESS, 11_111);
var silo = new HostBuilder()
    .UseOrleans(builder =>
    {
        builder
            .UseDevelopmentClustering(primarySiloEndpoint)
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "Cluster42";
                options.ServiceId = "MyAwesomeService";
            })
            .ConfigureEndpoints(siloPort: 11_111, gatewayPort: 30_000)
            .ConfigureLogging(logging => logging.AddConsole())
    })
    .Build();

Auf den Clients:

var gateways = new IPEndPoint[]
{
    new IPEndPoint(PRIMARY_SILO_IP_ADDRESS, 30_000),
    new IPEndPoint(OTHER_SILO__IP_ADDRESS_1, 30_000),
    // ...
    new IPEndPoint(OTHER_SILO__IP_ADDRESS_N, 30_000),
};

using var host = Host.CreateDefaultBuilder(args)
    .UseOrleansClient(clientBuilder =>
        clientBuilder.UseStaticClustering(gateways)
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "Cluster42";
                options.ServiceId = "MyAwesomeService";
            }))
    .Build();