2010-03-29 7 views
3

Il est donc facile d'équilibrer la charge d'une application Web ASP.NET. Vous configurez un équilibreur de charge entre deux serveurs et si le serveur Web ne répond pas sur le port 80, il ne recevra pas de demandes.Équilibrage de charge d'une application ou d'un service de console

Existe-t-il des techniques éprouvées pour ce faire pour une application de console C# ou un service Windows qui effectue des actions de son propre gré? Existe-t-il des cadres permettant de savoir si les processus d'homologues sont vivants ou morts, s'ils font des battements de cœur, etc.?

J'ai expérimenté un peu avec NServiceBus et il me semble que, pour certains types d'applications, la plupart du travail serait effectué en réponse à un événement, ce qui en fait plus une application web, En fait, j'ai l'impression que c'est une solution à moitié cuite puisque, dans la plupart des cas, il faut généralement avoir un concept de processus «maître» qui est responsable du démarrage du travail.

+0

WCF dispose d'une fonctionnalité d'équilibrage de charge. J'en connais très peu d'autres que cela existe. Étant donné que WCF est indépendant de la configuration, je parie que cela pourrait fonctionner avec plusieurs serveurs exécutant les services ou plusieurs processus sur le même serveur (si vous utilisez des canaux nommés). Juste une pensée - j'espère que vous pouvez aller plus loin que cela ... – Jaxidian

Répondre

3

NServiceBus gère en effet cela pour vous avec son processus de distribution (décrit ici: http://docs.particular.net/nservicebus/scalability-and-ha/distributor/). L'hôte générique fourni avec NServiceBus vous permet d'exécuter exactement le même code et la même configuration en tant qu'application de console et en tant que service Windows (décrit ici: http://docs.particular.net/nservicebus/hosting/nservicebus-host/).

Vous pouvez avoir ceci pour des événements aussi bien que pour des messages de commande réguliers. Si vous voulez un processus "maître" pour décider quoi faire lorsque tout le travail à charge équilibrée se termine, cela vous est fourni sous la forme de l'infrastructure saga (décrit ici: http://docs.particular.net/nservicebus/sagas/ et démontré dans l'exemple de fabrication que vient avec NServiceBus).

En bref, vous devriez être couvert.

+0

Udi, merci pour votre réponse! Connaissez-vous des liens pour des exemples d'utilisation de Sagas pour créer une fonctionnalité de processus maître? Malheureusement, mon exemple de fabrication est cassé - quand j'essaie de l'exécuter Visual Studio demande de trouver la source à un FacadeToIsolatedServiceController.cs sur un lecteur D que je n'ai pas. Quand je ne peux pas le localiser, je reçois un échec pour terminer la configuration de l'assemblage - Sondage terminé dans le service de commande. (NServiceBus 2.0.0.1145) –

+0

J'ai découvert que le problème était que j'ai un système d'exploitation 64 bits et n'avait pas remarqué que System.Data.SQLite.dll avait une version x64. L'exemple de fabrication est maintenant en cours d'exécution et je vais essayer d'apprendre ce que je peux, mais si vous connaissez des liens, ceux-ci seraient certainement encore appréciés. –

Questions connexes