【问题标题】:configure service fabrics microservices on which node to run配置服务结构微服务在哪个节点上运行
【发布时间】:2017-04-06 16:17:18
【问题描述】:
我们有一个包含 5 个无状态服务的微服务应用程序
- eShopWeb
- eShopAPI
- eShopOrder
- eShopBasket 和 eShopPayments
我们在 azure 中创建了一个具有 3 个节点的 Service Fabric 集群。现在我们要进行如下配置
- eShopWeb 和 eShopOrder 需要在节点 1 上运行
- eShopAPI 和 eShopPayments 需要在节点 2 上运行
- eShopOrder 需要在节点 3 上运行。
如何实现上述配置在同一个节点上运行多个微服务
【问题讨论】:
标签:
azure
azure-service-fabric
【解决方案1】:
您不应该关心哪个节点运行哪个服务。通过将服务绑定到节点,您会破坏 SF 的self-healing 功能(如果节点 2 出现故障怎么办?)。此外,您不能以这种方式进行滚动升级(eShopOrder 除外)。
如果可以的话,我建议避免放置限制。除非您有多种节点类型或大型集群。
服务亲和性适用于由于通信延迟而在不同节点上运行不佳的旧服务。
(对于生产,您应该使用5 nodes。)
【解决方案2】:
这里有两个选择。
- 放置限制。您可以在this 问题中获取详细信息。但我不建议这样做,因为自然平衡能力在这里毫无用处。
- 服务关联性。您可以找到更多信息here。当某些服务与另一个服务位于同一节点上时。但请注意:这条规则可能会被打破;仔细阅读文档。
我会采用第二种方法,看看它至少在暂存环境中是如何工作的。