Frage

Kann nichts zu diesem Thema finden.

Ich habe einen Windows-TCP C ++ Server-Anwendung, die ich von Zeit zu Zeit aktualisiert werden soll.


Wie Sie offensichtlich Dies führt zu einem Problem verstehen - sollte der Server 24/7 aus der Sicht der Nutzer sein
. Bei der Aktualisierung wird auch die aktuellen TCP-Verbindungen mit den Benutzern zu halten gewünscht wird.


Ich habe nachgedacht über ein Modul-ähnliches System, so zum Beispiel des Buchsenmodul an „sockets.dll“ würde residieren Umgang mit der Logik des Servers würde in „logic.dll“ befindet.
Möchten Sie für diesen Ansatz scheint Öffnung der Büchse der Pandora;
- Wie mache ich die tatsächlich der Module „Swapping“? Stellen Sie sich vor, dass die X-Worker-Threads halten Daten von einem Modul zum anderen zu senden - wenn Swapping ich brauche eine (Licht & schnell) Weg zum Stillstand / Pause ihnen; Signale vielleicht?
- Protokoll Version oder sogar Funktionen Signatur könnte, wenn die Aktualisierung ändern. Wie man damit umgehen?
-. Andere Probleme wie unbemerkt Logik Bugs
-. Wer Art von anderen Fragen kennt entstehen


Neben den oben Ich habe Bedenken wie, wie aktualisiere ich 10 Server sagen? Ich meine, sie sind alle miteinander verbunden sind, in Verbindung steht.
Wenn das Update ein Protokoll Modifikation führt könnte es große Probleme verursachen, und in einem solchen Fall werde ich brauche das gesamte Cluster zu aktualisieren (Server) als Ganzes; Abfahren der gesamten Operation? Das klingt nicht gut, überhaupt nicht! Wie mache ich das? Welches Konzept (s) bin ich hier fehlt und wie kann ich lernen, es / sie?


Gibt es etwas, was ich dagegen tun kann?
Was würden Sie tun? Haben Sie so etwas getan?
Kennen Sie einen beliebigen Mechanismus / article / Projekt / Quelle-Beispiel / etc‘, dass löst das Problem?

Jede wertvolle Ratschläge ist sehr appriciated !!

War es hilfreich?

Lösung

In Bezug auf die Protokolländerungen, empfehle ich Ihnen Version Ihr Protokoll. Zu Beginn einer Verbindung zwischen den beteiligten Servern, entweder der Initiator oder der Empfänger (nicht wirklich wichtig, was, glaube ich), um die neueste Version des Protokolls verkünden es versteht, und dann die andere Seite reagiert in Art. Sie fallen zurück auf die neueste Version sie beide verstehen.

Ja, das bedeutet Code für beiden Protokollversionen für eine Weile beibehalten, aber man kann den alten Code zurückziehen, sobald Sie wissen alle Ihr Server aktualisiert und die Arbeit mit dem neuen Protokoll.

Angenommen, Sie Kontrolle über alle möglichen Client-Software haben, als auch, können Sie das gleiche mit Ihren Kunden tun. Natürlich ist dies mehr alten Protokollcode beibehalten werden zur Folge haben kann, wenn man nicht die Kontrolle darüber hat, wenn Benutzer aktualisieren.

Andere Tipps

Hier ist eine Idee:

  • Alte Version Downloads Update und startet es.
  • Alte Version stoppt neue Verbindungen zu akzeptieren, indem sie auf die aktualisierte Version Spedition (die auf einem anderen Port hört).
  • Alte Version abschaltet, wenn es fertig ist mit seinen Anschlüssen.
  • Neue Version erkennt, wenn alte Version quitt und Ports schaltet.

Im Grunde ist die Idee, beide Versionen haben, die gleichzeitig ausgeführt werden.

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