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