Orleans silo的配置
为了快速了解到概貌,我们将在下面的XML语法中,显示所有相关配置参数(包括可选配置参数):
<?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 SiloHostBuilder()
[...]
.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=...")
[...]
})
[...]
像往常一样,所有配置的设置,也可以通过GlobalConfiguration
类的各个成员,以编程的方式读取和写入。
Service Id
是用于标识服务的任意ID。对于所有的集群和所有的silo,它必须相同。
MultiClusterNetwork
部分是可选的 —— 如果不存在,则针对此silo,禁用所有的多集群支持。
必需的参数 ClusterId
和GossipChannel
,在上一节的多群集通信中进行了说明。
可选的参数MaxMultiClusterGateways
和BackgroundGossipInterval
,在上一节的多群集通信中进行了说明。
可选的参数DefaultMultiCluster
,在多群集配置一节中进行了说明。
可选的参数UseGlobalSingleInstanceByDefault
, GlobalSingleInstanceRetryInterval
和GlobalSingleInstanceNumberRetries
,在全局单实例grain一节中进行了说明。
Orleans客户端配置
Orleans客户端无需额外配置。同一客户端不可以连接到不同群集中的silo(silo拒绝在此情况下的连接)。