【问题标题】:Multiple Guest Executable in one Service Fabric node一个 Service Fabric 节点中的多个来宾可执行文件
【发布时间】:2020-08-12 10:00:28
【问题描述】:

我想在一个节点中部署多个来宾可执行文件,但我不确定它在屏幕后面是如何工作的? VM 资源如何在每个可执行文件之间分配?是否以有效的方式完成?我是否需要配置一些东西以将所有可执行文件很好地打包在 VM 中以节省内存?我怎么知道可以在同一个虚拟机上运行多少个可执行文件?

【问题讨论】:

  • 相当肯定你必须对此进行测试

标签: azure-service-fabric guest-executable


【解决方案1】:

要了解 Service Fabric 如何在节点内分配服务,您需要了解其hosting model

使用 Service Fabric 编程模型(无状态和有状态服务和参与者)时,Service Fabric 托管模型非常强大,但在来宾可执行文件和容器方面受到限制,尽管它仍然很有效。

基本上,Service Fabric 将为每个来宾可执行文件(服务)激活一个ServicePackage(一个进程)。根据为每个服务配置的实例数,Service Fabric 将在每个节点上运行每个服务的一个实例(如果 InstanceCount = -1),或者将实例分布到所有节点(如果 InstanceCount 是一个低于节点数)。

您可以在单个节点上运行的服务数量没有限制,但每个服务都会消耗资源(CPU、RAM、端口等),这可能会成为问题。在这种情况下,您有多种选择:

  1. 为该节点类型增加 VM 的大小

  2. 横向扩展节点类型(添加更多节点)并为每个服务指定更少的实例数(这样并不是每个节点都拥有所有服务)

  3. 创建更多节点类型并使用放置约束相应地组织服务(例如,您可以拥有高计算节点、高 RAM 节点、公共节点、后端节点、财务节点、分析节点......这取决于什么对你的场景有意义)。

我如何知道可以在同一个 VM 上运行多少个可执行文件?

正如我之前提到的,这不取决于数量,而是取决于这些可执行文件使用的资源和 VM 的大小。根据您的服务,您可能能够估计他们需要的资源,但您肯定需要测试和监控您的集群,因为没有任何计算量能胜过现实。


更新:添加有趣的链接

您可以通过让服务报告动态指标以及限制单个服务可以占用的资源(例如,避免服务消耗节点的所有内存)来帮助 Service Fabric 更有效地管理集群:

Custom Metrics

Resource Governance

【讨论】:

  • 谢谢@Francesc!我想知道 SF 是否可以以有效的方式对 VM 内存中的所有可执行文件进行排序以节省内存(和 cogs)?就像我读过的那样,它是用容器来做的。
  • 我实际上不知道,但您可以简单地运行一个来宾可执行文件,看看它是否 SF 会自动报告指标 servicefabric:/_MemoryInMB。或者,如果您碰巧可以控制这些来宾可执行文件的代码,您可以轻松地将它们转换为 StatelessServices,然后您可以添加自定义运行状况检查和指标。
  • 如果我不使用 Service Fabric SDK,是否可以使用运行状况检查和指标?我只使用 SF 来宾 exe,我不想迁移
  • 我不知道。但是,正如我在之前的评论中所说,也许 CPU 和内存指标是由 SF 自动填充的。你需要检查一下。
猜你喜欢
  • 2018-10-04
  • 2016-12-10
  • 2018-06-02
  • 2018-03-11
  • 2017-01-28
  • 2019-08-16
  • 2017-07-07
  • 2018-03-22
  • 2019-04-26
相关资源
最近更新 更多