Frage

Wir entwerfen eine Client / Server-Programm, und ich brauche Hilfe bei einer Design-Entscheidung.

Die Server-Seite des Programms wird auf einer Reihe von Windows-Server als Dienst ausgeführt, wird der Dienst den Server überwacht wird, wenn der Dienst benötigt wird mailt Sie uns einen Bericht aus.

wird der Client verwendet werden, um die Dienste zu kontrollieren und verwalten auf den Servern ausgeführt wird, wird aber nicht immer ausgeführt werden.

Meine Frage ist, wo und wie soll ich speichern Sie die Konfiguration für den Dienst. Die Einstellungen (SMTP usw.) werden auf dem Client definiert werden, aber die Dienste auf entfernten Servern ausgeführt werden (es können viele sein) müssen mit den Einstellungen aktualisiert werden und auch diese Einstellungen behalten Unitil sie Updates wieder.

kann ich von zwei Möglichkeiten denkt, ein zentraler Windows-Anteil, wenn die Dienste die Einstellungen aus oder wenn die Client Hits ‚Speicher‘ die Einstellungen gespeichert auf jedem Server zu einem Ort gelesen werden.

Was würden Sie tun? Alles, was ich bewusst sein sollten?

Danke

War es hilfreich?

Lösung

ich keine Erfahrung mit solchen Dienstleistungen haben aber einen Vorschlag zur Speicherung von Einstellungen in einer zentralen Datenbank könnten sie alle Zugriff haben. So ist jedes Mal, wenn Sie einen neuen Server erstellen Sie einen neuen Einstellung Eintrag in der Datenbank erstellen.

Just werfen diese in die Diskussion.

Andere Tipps

Ich habe ein System entwickelt, das einen Client und mehreren Servern umfasst. Die Anforderungen für mein System beinhalten, dass es sehr zuverlässig sein und hochverfügbar (die Ihre Anforderungen möglicherweise nicht). Von diesem Standpunkt aus betrachtet, sind hier einige Gedanken:

  • Wenn Sie die Einstellungen an einem zentralen Ort speichern - entweder eine Dateifreigabe oder eine Datenbank - Sie haben einen Single Point of Failure in Ihrem verteilten System erstellt. Eine Abhilfe wäre die Einstellungen in zwei oder mehreren zentralen Standorten zu speichern. Aber wie stellen Sie sicher, dass die 2 oder mehr Stellen synchron sind?)

  • Wenn Ihr Speicher die Einstellungen mit jedem Server, was passiert, wenn der Client / Server-Kommunikation mit einem Server im Moment schlägt fehl, wenn Sie versuchen, die Einstellungen zu speichern, oder was ist, wenn einer der Server nicht aktiv ist. Jetzt haben Sie eine Situation, wo der Server nicht übereinstimmen, was die Einstellungen. Also, noch einmal, wie stellen Sie sicher, dass die mehrere Server synchron sind?

  • So .... darüber nachdenken, wie Sie den Server synchronisiert zuverlässig halten können, und wie können sie erkennen, wenn sie nicht synchron sind. In meinem System gibt es eine Master / Slave-Schema zwischen den Servern, Takte mit Sequenznummern, so dass Slaves können sich ständig versichern, dass sie synchron sind und haben keine Nachricht verpasst. Wenn der Master ausfällt, verschlechtert sich das System, funktioniert aber immer noch zu, so dass der Meister nicht ein einziger Punkt eines katastrophalen Versagens ist.

Es gibt eine Reihe von Dingen, hier zu berücksichtigen.

Die offensichtliche Wahl ist ein Repository, ob es Registry, Datei, Datenbank auf dem Server Ende sein. Und wenn Sie Ihr Dienst lädt Sie holt all diese Einstellungen in einer Sammlung. Doch was passiert, wenn Sie einen weiteren Service an Server Ende für let fügen Sie einige andere Aufgaben sagen zu überwachen.

Sie befinden sich nun in Problem, da, wenn die Parameter in der databse durch einen Server aktualisiert wurde der andere Service / s des Updates informiert werden muss, und sie brauchen Neuinitialisierung.

Sie können dies über kommen viele IPC machenism heißt Queues, Shared Memory, Pipes, Sockets zwischen vielen der Dienste einzuführen. Ich würde Shared Memory vorschlagen, wenn Dienste nicht verteilt werden oder Queues auf einem zentralen Server oder eine Datenbank, wenn es nicht; als bessere Möglichkeiten. Allerdings Dienstleistungen muss noch einige zusammenarbeiten, wie ein Hinweis auf andere Dienste über die updation der Parameter geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top