Azure service fabric 如何为每个节点部署相同服务类型的多个实例?

Azure service fabric 如何为每个节点部署相同服务类型的多个实例?,azure-service-fabric,Azure Service Fabric,我有一个“微型”的无状态服务,我希望在我的结构集群中的每个节点上运行几个。这一点尤其正确,因为一个节点似乎相当于服务结构世界中的一个VM(本地开发集群除外)。默认情况下,服务结构似乎期望在给定节点上最多运行一个服务。如果我将InstanceCount设置为大于可用节点数,我将得到一个警告,提示没有足够的可用节点来满足请求的实例数 我可以通过创建给定服务类型的多个命名服务来解决这个问题,并为每个命名服务分别设置InstanceCount。这是实现这一点的正确方法还是我遗漏了一些明显的东西?是的,您

我有一个“微型”的无状态服务,我希望在我的结构集群中的每个节点上运行几个。这一点尤其正确,因为一个节点似乎相当于服务结构世界中的一个VM(本地开发集群除外)。默认情况下,服务结构似乎期望在给定节点上最多运行一个服务。如果我将InstanceCount设置为大于可用节点数,我将得到一个警告,提示没有足够的可用节点来满足请求的实例数


我可以通过创建给定服务类型的多个命名服务来解决这个问题,并为每个命名服务分别设置InstanceCount。这是实现这一点的正确方法还是我遗漏了一些明显的东西?

是的,您需要创建多个无状态服务类型的实例(也称为命名服务)


对于无状态服务,“实例”一词是重载的。对于任何类型的服务(有状态或无状态),您都可以创建一个或多个服务类型的“实例”(也称为“命名服务”)。有状态服务的实例获取一组副本,无状态服务的实例获取一组“实例”(这就是术语重载!)。换句话说,在这两种情况下,您都会得到一组属于服务实例(命名服务)的内容,这些内容将分布在各个节点上,而不会在单个节点上分组。如果创建服务类型的另一个实例(命名服务),该实例有自己的一组内容,可以与另一个实例(命名服务)分组在同一节点上,事实上,相同服务类型的实例(命名服务)甚至将共享同一主机进程(.EXE)在同一个节点上运行时。

听起来您只是需要更多的服务分区?您是否尝试过使用不同的分区模式,而不是服务的默认单个分区


它将为每个分区运行一个.exe。请记住,如果他们使用任何通信并侦听端口,您需要使用一个可以共享端口或为每个分区使用多个端口的端口。

在一个节点上运行多个实例会带来什么好处?它不会给您带来更好的性能,因为服务的资源使用没有限制。可用性将不会显著增加。以更好地利用VM的资源。我不得不想象,有许多进程做同样的事情会比只有一个进程带来性能的提高。每个进程都在使用NuGet包从服务总线读取和处理消息,我相信:)酷:)真的,如果您的服务受I/O限制,并且无法使用一个实例使用所有可用带宽。添加服务类型的多个实例(如您所说)将起作用。您能给我们指出一个命名服务的示例吗?谢谢“命名服务”只是我用来描述服务实例以帮助解释服务结构术语的另一个术语。当您创建一个服务实例并为其命名时,例如,“fabric:/MyApp/MyService”-这是一个“命名服务”。感谢您的澄清。我对这个答案有点困惑。您是否提到“属于服务实例的一组内容将分布在节点上”?如果是这样的话,那么我们怎么能在同一个节点上拥有相同服务类型的多个实例呢?我最终选择了这种方法。多个命名服务也可以工作,但使用分区似乎更简单。