客户端配置

用于连接到 silo 的群集并将请求发送到 grain 的客户端是通过 IHostBuilder 和一些补充选项类以编程方式配置的。 与 silo 选项一样,客户端选项类遵循 .NET 中的“选项”模式

用于连接到 silo 的群集并将请求发送到 grain 的客户端是通过 ClientBuilder 和一些补充选项类以编程方式配置的。 与 silo 选项一样,客户端选项类遵循 .NET 中的“选项”模式

提示

如果只想启动本地 silo 和本地客户端以进行开发,请参阅本地开发配置

Microsoft.Orleans.Clustering.AzureStorage NuGet 包添加到客户端项目。

客户端配置有几个关键方面:

  • Orleans 群集信息
  • 群集提供程序
  • 应用程序部件

客户端配置示例:

var client = new HostBuilder()
    .UseOrleansClient((context, clientBuilder) =>
    {
        clientBuilder.Configure<ClusterOptions>(options =>
        {
            options.ClusterId = "my-first-cluster";
            options.ServiceId = "MyOrleansService";
        })
        .UseAzureStorageClustering(
            options => options.ConfigureTableServiceClient(
                context.Configuration["ORLEANS_AZURE_STORAGE_CONNECTION_STRING"]));
    })
    .Build();
using Orleans.Hosting;

var client = new ClientBuilder()
    .Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "my-first-cluster";
        options.ServiceId = "MyOrleansService";
    })
    .UseAzureStorageClustering(
        options => options.ConnectionString = connectionString)
    .ConfigureApplicationParts(
        parts => parts.AddApplicationPart(
            typeof(IValueGrain).Assembly))
    .Build();

让我们分解此示例中使用的步骤:

Orleans 群集信息

    .Configure<ClusterOptions>(options =>
    {
        options.ClusterId = "orleans-docker";
        options.ServiceId = "AspNetSampleApp";
    })

这里我们设置了两个项:

  • ClusterOptions.ClusterId 设置为 "my-first-cluster":这是 Orleans 群集的唯一 ID。 使用此 ID 的所有客户端和 silo 都可以直接相互通信。 例如,有些人会选择对每个部署使用不同的 ClusterId
  • ClusterOptions.ServiceId 设置为了 "AspNetSampleApp":这是应用程序的唯一 ID,该 ID 将由某些提供程序(例如持久性提供程序)使用。 此 ID 在各部署中应该是稳定的(不更改)。

群集提供程序

.UseAzureStorageClustering(
    options => options.ConfigureTableServiceClient(connectionString);
.UseAzureStorageClustering(
    options => options.ConnectionString = connectionString)

客户端将使用此提供程序发现群集中可用的所有网关。 有多个提供程序可供使用,这里我们在此示例中使用 Azure 表提供程序。

有关详细信息,请参阅服务器配置

应用程序部件

.ConfigureApplicationParts(
    parts => parts.AddApplicationPart(
        typeof(IValueGrain).Assembly))
        .WithReferences())

有关详细信息,请参阅服务器配置