【问题标题】:Locating a Correlated service's endpoints定位相关服务的端点
【发布时间】:2018-02-22 00:09:03
【问题描述】:

使用服务关联关联方案,我有一个无状态的健康监控服务 (WatchdogService),它会定期 ping 我的 Timeservice 以检查健康状况。

应用程序清单定义了 TimeService 和 WatchdogService 之间的这种关联。

<DefaultServices>
    <Service Name="WatchdogService">
      <StatelessService ServiceTypeName="WatchdogServiceType" InstanceCount="[InstanceCount]">
        <SingletonPartition />
        <ServiceCorrelations>
          <ServiceCorrelation ServiceName="fabric:/TimeServiceApplication/TimeService" Scheme="Affinity" />
        </ServiceCorrelations>
      </StatelessService>
    </Service>
<Service Name="TimeService">
  <StatelessService ServiceTypeName="TimeServiceType" InstanceCount="[InstanceCount]">
    <SingletonPartition />
  </StatelessService>
</Service>
</DefaultServices>

所以在 WatchdogService 中,我想检查同一节点中服务的运行状况。

目前我的服务是一个实例计数为 1 的单例,但如果我将其更改为 -1,我想确保 node1 上的 WatchdogService 实例检查 node1 上 TimeService 的运行状况。

有没有一种快速的方法可以在同一个节点上找到服务的实例,然后找到它的端点?

在 localhost:8088 行下方是我希望智能地使用我的托管服务的地方,因为此代码不适用于每个节点的实例。 https://github.com/tbertenshaw/FabricAllTheThings/blob/master/src/GuestApplication/WatchdogService/WatchdogService.cs

【问题讨论】:

    标签: c# web-services azure-service-fabric


    【解决方案1】:

    【讨论】:

    • 我以前看过这个答案。但是在我的情况下,我的看门狗服务将在同一节点中有一个时间服务实例。如果不回到集群的根目录并进行搜索,直到找到我的节点和时间服务,似乎就没有简单的搜索。好像有点啰嗦
    • 添加了问题所在的回购链接。代码是根据 mspress fabric book 中的示例修改的
    • 最快的方法可能是让时间服务通知看门狗它的健康端点。拨打localhost/watchdog 之类的看门狗。可能不是你喜欢的..
    • 是的,似乎有点疏忽,即结构具有以亲和力分发服务的功能,但不容易发现这一点。好像您要求服务位于附近,那么您肯定应该能够快速找到它们
    • 添加了整个亲和力功能以支持在集群中托管的聊天服务,同时您可以对其进行现代化改造。位置透明 + 将节点视为牛而不是宠物,是创建可靠应用程序的预期方式。我建议不要使用关联,缓存发现的端点并监控更改以更新缓存。
    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2011-02-26
    相关资源
    最近更新 更多