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).