Share via


Orleans-Silokonfiguration

Um einen schnellen Überblick zu bieten, zeigen wir unten alle relevanten Konfigurationsparameter (einschließlich optionaler Parameter) in der XML-Syntax:

<?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=...")
        });
    });

Wie gewohnt können alle Konfigurationseinstellungen über die jeweiligen Member der Klasse GlobalConfiguration auch programmgesteuert gelesen und geschrieben werden.

Die GlobalConfiguration.ServiceId ist eine beliebige ID zum Identifizieren dieses Diensts. Sie muss für alle Cluster und alle Silos identisch sein.

Der Abschnitt Orleans.Runtime.MultiClusterNetwork ist optional. Ohne ihn bleibt die gesamte Multiclusterunterstützung für dieses Silo deaktiviert.

Die erforderlichen ParameterClusterId und GossipChannels werden im Abschnitt zur Multiclusterkommunikation erläutert.

Die erforderlichen Parameter MaxMultiClusterGateways und BackgroundGossipInterval werden im Abschnitt zur Multiclusterkommunikation erläutert.

Der erforderliche Parameter DefaultMultiCluster wird im Abschnitt zur Multiclusterkonfiguration erläutert.

Die optionalen Parameter UseGlobalSingleInstanceByDefault, GlobalSingleInstanceRetryIntervalund GlobalSingleInstanceNumberRetries werden im Abschnitt über globale Einzelinstanz-Grains erläutert.

Orleans-Clientkonfiguration

Für den Orleans-Client ist keine zusätzliche Konfiguration erforderlich. Derselbe Client stellt möglicherweise keine Verbindung mit Silos in verschiedenen Clustern her (das Silo lehnt die Verbindung in dieser Situation ab).