Question

Nous concevons un programme client / serveur et j'ai besoin d'aide avec une décision de conception.

Le côté serveur du programme sera exécuté en tant que service sur un certain nombre de serveurs Windows, le service surveille les serveurs, en cas de besoin le service par courriel un rapport.

Le client sera utilisé pour contrôler et gérer les services en cours d'exécution sur les serveurs, mais ne sera pas toujours en cours d'exécution.

Ma question est où et comment dois-je enregistrer la configuration du service. Les paramètres (smtp, etc.) seront définies sur le client, mais les services en cours d'exécution sur des serveurs distants (il peut y avoir beaucoup) doivent être mis à jour avec les paramètres et également conserver ces paramètres Unitil ils sont mises à jour.

Je peux penser à deux options, une part centrale de Windows où les services lisent les paramètres à partir ou lorsque les hits client de Save 'les paramètres sont enregistrés dans un emplacement sur chaque serveur.

Que feriez-vous? Tout ce que je devrais être au courant?

Merci

Était-ce utile?

La solution

Je n'ai pas d'expérience avec ces services, mais une suggestion peut-être pour stocker les paramètres dans une base de données centrale, ils ont tous accès. Donc, chaque fois que vous créez un nouveau serveur vous créez une nouvelle entrée de paramètres dans la base de données.

Il suffit de jeter cela dans la discussion.

Autres conseils

Je l'ai mis au point un système qui implique un client et plusieurs serveurs. Les exigences de mon système comprennent qu'il soit très fiable et hautement disponible (qui ne peuvent pas être vos besoins). De ce point de vue, voici quelques réflexions:

  • Si vous enregistrez les paramètres dans un emplacement central - soit un partage de fichiers ou une base de données - vous avez créé un point de défaillance unique dans votre système distribué. Une solution serait de stocker les paramètres dans 2 ou plusieurs emplacements centraux. Mais, comment vous assurez-vous que les sont en phase 2 emplacements ou plus?)

  • Si votre magasin les paramètres avec chaque serveur, si la communication client / serveur échoue avec un serveur au moment où vous essayez d'enregistrer les paramètres, ou si l'un des serveurs est pas. Maintenant, vous avez une situation où les serveurs ne sont pas d'accord sur ce que les paramètres sont. Alors, encore une fois, comment vous assurez-vous que les plusieurs serveurs sont synchronisés?

  • Alors .... pensez à comment vous pouvez garder de manière fiable les serveurs de synchronisation, et comment ils peuvent détecter quand ils ne sont pas synchronisés. Dans mon système, il existe un système maître / esclave entre les serveurs, les battements de coeur avec des numéros de séquence de sorte que les esclaves peuvent s'assurer constamment qu'ils sont synchronisés et ont pas manqué un message. Si le maître est en panne, le système se dégrade, mais fonctionne encore trop, de sorte que maître n'est pas un seul point de défaillance catastrophique.

Il y a nombre de choses à considérer ici.

Le choix évident est un dépôt que ce soit registre, fichier, base de données à la fin du serveur. Et quand vos charges de service vous allés chercher tous ces paramètres dans une collection. Cependant ce qui se passe lorsque vous ajoutez un service supplémentaire à la fin du serveur pour laisser dire la surveillance d'autres tâches.

Maintenant, vous êtes dans le problème car si les paramètres mis à jour dans le se sont databse par un serveur l'autre service / s doit être informé de la mise à jour et ils ont besoin réinitialisation.

Vous pouvez venir sur cela en introduisant de nombreux IPC machenism à savoir Queues, la mémoire partagée, Prises entre Tubes de nombreux services. Je suggère mémoire partagée si les services ne sont pas distribués ou Queues sur un serveur central ou une base de données si ce n'est pas; comme meilleures options. Cependant les services a encore besoin de collaborer d'une façon de donner une indication à d'autres services sur le updation des paramètres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top