多集群Silo配置

为了快速了解概况,我们在下面以XML展示了所有相关的配置参数(包括可选参数):

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <OrleansConfiguration xmlns="urn:orleans">
  3. <Globals>
  4. <MultiClusterNetwork
  5. ClusterId="clusterid"
  6. DefaultMultiCluster="uswest,europewest,useast"
  7. BackgroundGossipInterval="30s"
  8. UseGlobalSingleInstanceByDefault="false"
  9. GlobalSingleInstanceRetryInterval="30s"
  10. GlobalSingleInstanceNumberRetries="3"
  11. MaxMultiClusterGateways="10">
  12. <GossipChannel Type="..." ConnectionString="..."/>
  13. <GossipChannel Type="..." ConnectionString="..."/>
  14. </MultiClusterNetwork>
  15. <SystemStore ... ServiceId="some-guid" .../>
  16. </Globals>
  17. </OrleansConfiguration>
  1. var silo = new SiloHostBuilder()
  2. [...]
  3. .Configure<ClusterInfo>(options =>
  4. {
  5. options.ClusterId = "us3";
  6. options.ServiceId = "myawesomeservice";
  7. })
  8. .Configure<MultiClusterOptions>(options =>
  9. {
  10. options.HasMultiClusterNetwork = true;
  11. options.DefaultMultiCluster = new[] { "us1", "eu1", "us2" };
  12. options.BackgroundGossipInterval = TimeSpan.FromSeconds(30);
  13. options.UseGlobalSingleInstanceByDefault = false;
  14. options.GlobalSingleInstanceRetryInterval = TimeSpan.FromSeconds(30);
  15. options.GlobalSingleInstanceNumberRetries = 3;
  16. options.MaxMultiClusterGateways = 10;
  17. options.GossipChannels.Add("AzureTable", "DefaultEndpointsProtocol=https;AccountName=usa;AccountKey=...");
  18. options.GossipChannels.Add("AzureTable", "DefaultEndpointsProtocol=https;AccountName=europe;AccountKey=...")
  19. [...]
  20. })
  21. [...]

像往常一样,所有的配置设置也可以通过GlobalConfiguration类的相应成员,以编程方式进行读写。

Service Id是一个任意的ID,用于识别该服务。它对所有集群和所有Silo都必须是相同的。

MultiClusterNetwork部分是可选的,如果不指明,则该Silo的所有多集群支持都将被禁用。

多集群通信一节中解释了必要参数ClusterIdGossipChannel

可选参数MaxMultiClusterGatewaysBackgroundGossipInterval亦在多集群通信一节中解释。

可选参数DefaultMultiCluster多集群配置一节中解释。

可选参数UseGlobalSingleInstanceByDefaultGlobalSingleInstanceRetryIntervalGlobalSingleInstanceNumberRetries全局单例Grains一节中解释。

Orleans客户端配置

Orleans客户端不需要额外的配置。同一个客户端可能无法连接到不同集群中的Silo(在这种情况下,Silo会拒绝连接)。