【发布时间】:2017-06-11 03:05:06
【问题描述】:
我有一个 SF 应用程序类型,它包含两种服务类型——无状态 WebApi Gateway 服务类型和无状态 Worker 服务类型。我正在使用默认网关服务实例创建一个应用程序实例。 Gateway 服务实例使用这样的代码按需动态创建 Worker 服务实例(client 变量为System.Fabric.FabricClient 实例):
var serviceDescription = new StatefulServiceDescription()
{
ApplicationName = new Uri("fabric:/Gateway"),
ServiceName = new Uri("fabric:/Gateway/Worker-" + SomeUniqueWorkerId),
ServiceTypeName = "WorkerType",
HasPersistedState = true,
PartitionSchemeDescription = new UniformInt64RangePartitionSchemeDescription(),
MinReplicaSetSize = 1,
TargetReplicaSetSize = 1
};
await client.ServiceManager.CreateServiceAsync(serviceDescription);
当 SF 将两个或多个 Worker 服务类型的实例放在一个节点上时,它们都共享同一个进程(即 Worker.exe)。这是有问题的,因为不同的 Worker 服务实例需要从不同的文件共享中动态加载不同版本的程序集。因此,我的问题是:
是否可以强制SF在不同进程中的一个节点上托管多个相同类型的服务实例?
(我认为来宾可执行文件就是这样工作的。)
【问题讨论】:
标签: c# azure-service-fabric service-fabric-stateful