【问题标题】:Accessing a specific node in local service fabric cluster [duplicate]访问本地服务结构集群中的特定节点[重复]
【发布时间】:2018-03-13 00:16:30
【问题描述】:

我正在开发一个 Service Fabric 应用程序,我在其中运行我的应用程序,其中包含一堆 ASP.NET Core Web API。现在,当我在配置有 5 个节点的本地服务结构集群上运行我的应用程序时,应用程序成功运行,并且我能够发送发布请求公开的 Web API。实际上,我想通过对该特定节点上不同公开 API 的不同发布请求来命中在同一集群节点上运行的代码。

为了进一步解释,例如在节点“0”上公开了一个 API,它接受一个发布请求并从节点“0”上运行的 exe 服务执行作业,还有一个 API 中止运行工作。现在,当我请求执行作业时,它开始在节点“0”上执行,但是当我尝试中止作业时,服务结构集群将请求转发到另一个节点,例如节点“1”。结果我无法中止正在运行的作业,因为节点“1”上没有可用的正在运行的作业。我不知道如何处理这种情况。

对于这种情况,有一些解决方案,例如在开始处理 Job 并将 ID 返回给调用者之前,维护一个将保存一些唯一 ID 的存储。现在,当一个人想要中止作业时,他/她调用发送 id 的 api 来中止但这里的问题再次出现在我正在运行的服务中,有多个线程正在运行。我想中止那些正在运行的线程。这些线程只能在作业运行的特定节点上找到。所以我必须以某种方式到达那个特定的节点。

对于状态,我正在使用 ASP.Net Core Web API 类型的 Statefull 服务,并在我的本地服务结构集群的 5 个节点上运行该应用程序。

请建议最好的方法。

【问题讨论】:

    标签: azure azure-service-fabric service-fabric-stateful


    【解决方案1】:

    正如帕特里克所指出的,我在这里回答了一个类似的问题: sending-request-to-asp-net-core-web-api-running-on-a-specific-node-in-a-service

    您遇到问题是因为您设计系统的方式。 您不应该依赖运行任务的节点,而应该依赖任务本身,因为它可能会被停用或移动,并且如果将两者都放在同一个节点中,也很难扩展。

    有很多方法可以解决这个问题,在我提到的问题中,您可以从几个地方着手。

    【讨论】:

      猜你喜欢
      • 2017-10-18
      • 2018-09-21
      • 2019-01-31
      • 1970-01-01
      • 2018-09-12
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多