0

我正在开发一个公开端点的服务(我们称之为 ServiceA)。该服务将托管在 Service Fabric 中,并将在(例如)五个可用节点中的三个上运行。另一个服务 (ServiceB) 需要能够联系所有三个正在运行的 ServiceA 实例。为此,我使用 ServiceB 中的 ServicePartitionResolver 来查找(单个)ServiceA 服务分区公开的所有端点。这工作得很好,直到我杀死正在运行 ServiceA 的节点之一。我希望在其他节点之一上创建另一个 ServiceA 实例,并且更新 ServicePartitionResolver.Resolve 返回的端点列表以反映更改。不过,这似乎不会发生。事实上,即使我直接查询 REST API(使用 Postman 打:http://[cluster-ip]:19080/Services/ApplicationA~ServiceA/ $/ResolvePartition?api-version=6.0) 我继续看到“陈旧”的结果。我还尝试使用 FabricClient 而不是 ServicePartitionResolver 来检查它是否不是我看到的本地缓存结果。

我错过了什么明显的东西吗?

4

1 回答 1

0

做了更多的实验后,我想我知道发生了什么。Service Fabric 确实做到了我的预期,但在我的情况下,我用于测试的集群不够大。我认为当我删除三个节点之一时,命名服务无法再有效运行,因此结果不一致。如果我使用一个四节点集群并删除一个,我会得到我期望的结果。

于 2018-02-27T15:37:08.603 回答