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

How do I deploy multiple instances of the same service type per node?

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

我可以通过创建多个给定服务类型的命名服务并为每个命名服务单独设置 InstanceCount 来解决这个问题。这是完成此任务的正确方法还是我错过了一些明显的东西?

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

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

听起来您只需要对服务进行更多分区?您是否尝试过使用不同的分区架构,而不是服务的默认单个分区。

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