2017-09-13 3 views
0

en utilisant le schéma d'affinité de corrélation de service J'ai un service de surveillance de l'état sans surveillance (WatchdogService) qui interroge périodiquement mon service Timeservice pour vérifier l'intégrité.Localisation des points de terminaison d'un service corrélé

Le manifeste d'application définit cette corrélation entre TimeService et 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> 

Ainsi, dans le WatchdogService Je veux vérifier la santé du service dans le même nœud.

Actuellement, mon service est un singleton avec un nombre d'instances de 1, mais si je le change en -1, je veux m'assurer que l'instance de WatchdogService sur le noeud 1 vérifie l'intégrité du TimeService sur le noeud 1.

Existe-t-il un moyen rapide de trouver des instances d'un service sur le même nœud, puis de trouver ses points de terminaison?

Ci-dessous la ligne avec localhost: 8088 est l'endroit où je veux utiliser intelligemment mon service colocalisé car ce code ne fonctionnera pas avec une instance par nœud. https://github.com/tbertenshaw/FabricAllTheThings/blob/master/src/GuestApplication/WatchdogService/WatchdogService.cs

Répondre

0
  • Vérifiez this answer sur la façon de localiser points de terminaison de service.

  • Assurez-vous également de monitor endpoint changes.

  • Assurez-vous tous les cas obtient un point final de santé unique, afin que vous puissiez cibler
  • Utilisez le QueryManager à la liste des noeuds si nécessaire
+0

vu que penses que je réponse avant. Mais mes circonstances avec une affinité mon service de surveillance aura une instance du timeservice dans le même noeud. Il ne semble pas y avoir de recherche simple sans revenir à la racine de la grappe et foreaching jusqu'à ce que je trouve mon nœud et le timeservice. Semble un peu longwinded – Tim

+0

ajouté lien à repo où le problème est. Le code est modifié à partir d'un exemple de livre de tissu mspress – Tim

+0

Le moyen le plus rapide serait probablement d'avoir le service de temps notifier le chien de garde sur son point de fin de santé. Appelez le chien de garde sur quelque chose comme http: // localhost/watchdog. Peut-être pas ce que vous aimez .. – LoekD