Guten Tag zusammen,
ich habe eine Frage bzgl. der Performance, wenn es darum geht regelmäßig und in kurzen Zeitabschnitten
zw. verschiedenen Rechnern in einem Netzwerk zu kommunizieren. Dafür kurz eine Beschreibung der Situation.
Ich habe einen Rechner ("Leitrechner") im Netz, welcher Daten über eine Schnittstelle bekommt und diese bearbeitet und verwertet,
sowie in eine Datenbank schreibt. Diese müssen im Nachgang im Sekundentakt an verschiedene weitere Clients im Netzwerk verteilt werden.
Zusätzlich müssen die Clients einige Befehle an den Leitrechner senden können, die er ausführen muss.
Bisher habe ich es wie folgt gelöst: Jeder Client baut sekündlich eine Connection zum Leitrechner auf (über ein TCP Socket, Leitrechner hat einen Connection-Pool und ist der Server), fordert die Daten an, bekommt diese geschickt und schließt die Verbindung wieder. Je nach Bedarf kann er weitere Befehle senden, wie oben beschrieben.
Ist das Performance-technisch die beste Variante?
Vorab vielen Dank für mögliche Ideen/Anmerkungen/Vorschläge!
ich habe eine Frage bzgl. der Performance, wenn es darum geht regelmäßig und in kurzen Zeitabschnitten
zw. verschiedenen Rechnern in einem Netzwerk zu kommunizieren. Dafür kurz eine Beschreibung der Situation.
Ich habe einen Rechner ("Leitrechner") im Netz, welcher Daten über eine Schnittstelle bekommt und diese bearbeitet und verwertet,
sowie in eine Datenbank schreibt. Diese müssen im Nachgang im Sekundentakt an verschiedene weitere Clients im Netzwerk verteilt werden.
Zusätzlich müssen die Clients einige Befehle an den Leitrechner senden können, die er ausführen muss.
Bisher habe ich es wie folgt gelöst: Jeder Client baut sekündlich eine Connection zum Leitrechner auf (über ein TCP Socket, Leitrechner hat einen Connection-Pool und ist der Server), fordert die Daten an, bekommt diese geschickt und schließt die Verbindung wieder. Je nach Bedarf kann er weitere Befehle senden, wie oben beschrieben.
Ist das Performance-technisch die beste Variante?
- Sollten die TCP-Socket Verbindungen aller Clients lieber geöffnet bleiben?
- Wäre es performanter wenn die Clients die Daten sekündlich aus der Datenbank beziehen (sind dort eh schon vorhanden)?
- Wäre UDP und Broadcast eine Möglichkeit (Was ich eher nicht denke wegen Packet-Verlust, falsche Reihenfolge etc.)?
- Gibt es evtl. noch eine bessere Möglichkeit die ich nicht auf dem Schirm habe?
Vorab vielen Dank für mögliche Ideen/Anmerkungen/Vorschläge!