Orleans 接收器配置
为了快速了解情况,我们在下面的 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 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=...")
});
});
与往常一样,还可以通过 GlobalConfiguration 类的相应成员以编程方式读取和写入所有配置设置。
GlobalConfiguration.ServiceId 是用于标识此服务的任意 ID。 所有群集和所有接收器必须采用同一个 ID。
Orleans.Runtime.MultiClusterNetwork 部分是可选的,如果未选择,则为此接收器禁用所有多群集支持。
多群集通信部分介绍了必需参数 ClusterId 和 GossipChannels。
多群集通信部分介绍了可选参数 MaxMultiClusterGateways 和 BackgroundGossipInterval。
多群集配置部分介绍了可选参数 DefaultMultiCluster。
全局单一实例粒度部分介绍了可选参数 UseGlobalSingleInstanceByDefault、GlobalSingleInstanceRetryInterval 和 GlobalSingleInstanceNumberRetries。
Orleans 客户端配置
Orleans 客户端无需进行额外配置。 同一客户端可能不会连接到不同群集中的接收器(在此情况下,接收器拒绝连接)。