一个 Service Fabric 节点中的多个来宾可执行文件
Multiple Guest Executable in one Service Fabric node
我想在一个节点中部署多个来宾可执行文件,但我不确定它在屏幕后是如何工作的?虚拟机资源如何在每个可执行文件之间分配?它是以有效的方式完成的吗?我是否需要配置一些东西来将所有可执行文件打包到 VM 中以节省内存?我怎么知道同一台虚拟机上可以 运行 多少个可执行文件?
要了解 Service Fabric 如何在节点内分配服务,您需要了解其 hosting model。
Service Fabric 托管模型在使用 Service Fabric 编程模型(无状态和有状态服务和参与者)时非常强大,但在使用来宾可执行文件和容器时会受到更多限制,尽管它仍然很有效。
基本上,Service Fabric 将为每个来宾可执行文件(服务)激活一个 ServicePackage
(一个进程)。根据为每项服务配置的实例数,Service Fabric 将 运行 每个节点每个服务的一个实例(如果 InstanceCount = -1
),或者它将实例分布到所有节点(如果 InstanceCount
是一个小于节点数的数字)。
单个节点上可以运行的服务数量没有限制,但每个服务都会消耗资源(CPU、RAM、端口等),它可以成为一个问题。在这种情况下,您有多种选择:
增加该节点类型的 VM 大小
横向扩展节点类型(添加更多节点)并为每个服务指定较少的实例数(以便不是每个节点都拥有所有服务)
创建更多节点类型并使用放置约束相应地组织服务(例如,您可以拥有高计算节点、高 Ram 节点、Public 节点、后端节点、金融节点、分析节点......这取决于什么对你的场景有意义)。
How can I know how many executables can be run on the same VM?
正如我之前提到的,这不取决于数量,而是取决于这些可执行文件使用的资源和 VM 的大小。根据您的服务,您可能能够估计他们需要的资源,但您肯定需要测试和监控您的集群,因为再多的计算也无法证明事实。
更新:添加有趣的链接
您可以通过让您的服务报告动态指标并限制单个服务可以占用的资源(例如,避免服务消耗节点的所有内存)来帮助 Service Fabric 更有效地管理您的集群):
我想在一个节点中部署多个来宾可执行文件,但我不确定它在屏幕后是如何工作的?虚拟机资源如何在每个可执行文件之间分配?它是以有效的方式完成的吗?我是否需要配置一些东西来将所有可执行文件打包到 VM 中以节省内存?我怎么知道同一台虚拟机上可以 运行 多少个可执行文件?
要了解 Service Fabric 如何在节点内分配服务,您需要了解其 hosting model。
Service Fabric 托管模型在使用 Service Fabric 编程模型(无状态和有状态服务和参与者)时非常强大,但在使用来宾可执行文件和容器时会受到更多限制,尽管它仍然很有效。
基本上,Service Fabric 将为每个来宾可执行文件(服务)激活一个 ServicePackage
(一个进程)。根据为每项服务配置的实例数,Service Fabric 将 运行 每个节点每个服务的一个实例(如果 InstanceCount = -1
),或者它将实例分布到所有节点(如果 InstanceCount
是一个小于节点数的数字)。
单个节点上可以运行的服务数量没有限制,但每个服务都会消耗资源(CPU、RAM、端口等),它可以成为一个问题。在这种情况下,您有多种选择:
增加该节点类型的 VM 大小
横向扩展节点类型(添加更多节点)并为每个服务指定较少的实例数(以便不是每个节点都拥有所有服务)
创建更多节点类型并使用放置约束相应地组织服务(例如,您可以拥有高计算节点、高 Ram 节点、Public 节点、后端节点、金融节点、分析节点......这取决于什么对你的场景有意义)。
How can I know how many executables can be run on the same VM?
正如我之前提到的,这不取决于数量,而是取决于这些可执行文件使用的资源和 VM 的大小。根据您的服务,您可能能够估计他们需要的资源,但您肯定需要测试和监控您的集群,因为再多的计算也无法证明事实。
更新:添加有趣的链接
您可以通过让您的服务报告动态指标并限制单个服务可以占用的资源(例如,避免服务消耗节点的所有内存)来帮助 Service Fabric 更有效地管理您的集群):