【发布时间】:2018-07-27 21:39:55
【问题描述】:
风景:
-
我们有一个包含两个微服务的应用程序。
微服务 A 用于将应用程序暴露在集群(我们的 Web 服务器)之外
微服务 B 是我们的业务功能。
我们在微服务 A 前面有一个 F5 来处理硬编码端口 (onPrem) 上的负载平衡。
- 在微服务 A 中,我们为清单中的 http 端点硬编码特定端口。
问题: 我们见证了有时微服务 B(业务功能)可能会窃取微服务 A 硬编码使用的端口。那么它将永远无法正确启动服务。
我们还看到 SF 似乎按顺序使用可用端口。因此,如果我们硬编码微服务 A 使用端口 001,而微服务 B 是随机的。当 A 重新启动时,有时 B 会抓取 001。
可能的解决方案:
- 我们可以对所有微服务进行硬编码 - 不喜欢。
- 我们可以为这些硬编码端口保留更高的范围。例如,如果 Service Fabric 使用 1000 个端口,我们可以为服务 A 保留 501-1000,让服务 B 获取 001-499。这只会延迟问题,直到您拥有超过 500 个实例。 - 也不是这个的忠实粉丝。
- 将端口硬编码为集群范围之外的端口?例如,如果我们在设置集群时使用 20001-20500 作为 ApplicationEndpoints 范围,如果我们将 MicroService A 硬编码给用户 21000,它似乎可以工作?我不确定这会产生什么意想不到的后果?
请给我一个不错的选择 4 :)
谢谢,
格雷格
【问题讨论】:
-
除此之外还有其他人有什么想法吗?我需要在接下来的 24 小时内做出决定,我想知道是否有其他解决方案。谢谢,
标签: microservices azure-service-fabric service-fabric-on-premises