我有一个由两种服务类型组成的 SF 应用程序类型——无状态 WebApi 网关服务类型和无状态 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 在不同进程中的一个节点上托管多个相同类型的服务实例?
(我认为来宾可执行文件就是这样工作的。)