Compartilhar via


Configuração de silos do Orleans

Para uma visão geral rápida, mostramos todos os parâmetros de configuração relevantes (inclusive os opcionais) na sintaxe XML abaixo:

<?xml version="1.0" encoding="utf-8"?>
<OrleansConfiguration xmlns="urn:orleans">
  <Globals>
    <MultiClusterNetwork
      ClusterId="clusterid"
      DefaultMultiCluster="uswest,europewest,useast"
      BackgroundGossipInterval="30s"
      UseGlobalSingleInstanceByDefault="false"
      GlobalSingleInstanceRetryInterval="30s"
      GlobalSingleInstanceNumberRetries="3"
      MaxMultiClusterGateways="10">
         <GossipChannel Type="..." ConnectionString="..."/>
         <GossipChannel Type="..." ConnectionString="..."/>
    </MultiClusterNetwork>
    <SystemStore ServiceId="some-guid" />
  </Globals>
</OrleansConfiguration>
var silo = new HostBuilder()
    .UseOrleans(builder =>
    {
        builder.Configure<ClusterInfo>(options =>
        {
            options.ClusterId = "us3";
            options.ServiceId = "myawesomeservice";
        })
        .Configure<MultiClusterOptions>(options =>
        {
            options.HasMultiClusterNetwork = true;
            options.DefaultMultiCluster = new[] { "us1", "eu1", "us2" };
            options.BackgroundGossipInterval = TimeSpan.FromSeconds(30);
            options.UseGlobalSingleInstanceByDefault = false;
            options.GlobalSingleInstanceRetryInterval = TimeSpan.FromSeconds(30);
            options.GlobalSingleInstanceNumberRetries = 3;
            options.MaxMultiClusterGateways = 10;
            options.GossipChannels.Add(
                "AzureTable",
                "DefaultEndpointsProtocol=https;AccountName=usa;AccountKey=...");
            options.GossipChannels.Add(
                "AzureTable",
                "DefaultEndpointsProtocol=https;AccountName=europe;AccountKey=...")
        });
    });

Como de costume, todas as configurações também podem ser lidas e gravadas programaticamente, por meio dos respectivos membros da classe GlobalConfiguration.

GlobalConfiguration.ServiceId é uma ID arbitrária para identificar esse serviço. Ela deve ser a mesma para todos os clusters e silos.

A seção Orleans.Runtime.MultiClusterNetwork é opcional; se não estiver presente, todo o suporte a vários clusters será desabilitado para este silo.

Os parâmetros necessários ClusterId e GossipChannels são explicados na seção sobre Comunicação entre Vários Clusters.

Os parâmetros necessáriosMaxMultiClusterGateways e BackgroundGossipInterval são explicados na seção sobre Comunicação entre Vários Clusters.

O parâmetro opcional DefaultMultiCluster é explicado na seção sobre Configuração de Vários Clusters.

Os parâmetros opcionais UseGlobalSingleInstanceByDefault, GlobalSingleInstanceRetryIntervale GlobalSingleInstanceNumberRetries são explicados na seção sobre Grãos de Instância Única Global.

Configuração de cliente do Orleans

Não é necessária configuração adicional para o cliente Orleans. O mesmo cliente não pode se conectar a silos em diferentes clusters (o silo recusa a conexão nessa situação).