Hallo Leute,
ich habe eine Grundsatzfrage zur Planung eines neuen Projektes.
Folgende Situation:
Ich möchte ein queuing-system für unsere Firma schreiben, dass FE-Berechnungen auf unsere Berechnungsservern (Linux) in einer Queue verteilt.
Wir haben 31 Berechnungsingenieuren und 17 Berechnungsserver (Teilweise im Cluster) mit vier verschiedenen FE-Solvern. Momentan gibt es durch die Kombinatorik dieser 3 Faktoren sehr viel Chaos bei der Auslastung und Verteilung der Berechnungsserver.
Die Software soll nicht nur das queuing der Jobs übernehmen sondern auch eine Art Systeminformation zu den einzelnen Servern und Clustern für die Usern zur Verfügung stellen.
Auf den Berechnungsservern werde ich jeweils einen Java-RMI-Server aufsetzen und die Infos (CPU Auslastung ‚mpstat -P ALL’, Speicherbenutzung , alles was ‚ps –eFl’ liefert, HDD Auslastung etc..) und Befehle (Jobs der User) im Sekundentakt von/zu einem zentralen Middle-Tier (RMI) senden/empfangen. Und das möglichst im Sekundentakt. Die Nutzer bekommen eine GUI zur Steuerung der Jobs und zur Anzeige des Status der Berechnungsserver.
Jetzt die eigentliche Frage. Ich bin mich nicht sicher wie ich die Kommunikation zwischen Client und Middle-Tier ablaufen soll. Ich denke die Daten im Sekundentakt vom Middle-Tier in eine MS-SQL 2005 Server DB zu schaufeln und den Clients über SQL Abfragen auf der DB die Infos zur Verfügung zu stellen. Allerdings sind die Datenmengen sehr groß. Jeder Berechungsserver hat 8 CPUs und es sollen die letzten 400 werte pro CPU gespeichert werden. Also 8 pro Sekunde und pro Server. Das gleiche für den Speicher, die Prozesse ect… Dazu kommt, dass 31 Berechnungsingenieure diese Daten im Sekundentakt von der DB abrufen könnten. Also sehr viele Transaktionen und Abfragen auf dem SQL-Server.
Ist das zuviel für den SQL-Server und das Transaktionsprotokoll? Sollte ich besser über RMI zwischen Middle-Tier und Client die Daten verteilen (Obwohl ich die Daten letztendlich sowieso für statistische Auswertungen in der DB brauche).
Oder gibt es da noch bessere Optionen. Ich würde die SQL Variante bevorzugen, da ich über SQL Abfragen die Daten dem Clienten sehr einfach aufbereiten kann.
Da ich die Software (die Clients und die Server über RMI) eigentlich schon vor 5 Jahren geschrieben habe und diese Software seit dem auch im Einsatz ist. Hier mal ein Bild zur Veranschaulichung, was der Client Darstellt und gespeichert werden soll.
http://www.bilder-hochladen.net/files/fyn0-1-png.html
Damals vor 5 Jahren sind es 9 Berechnungsingenieure, 4 Berechnungsserver und 2 FE-Solvern gewesen. Was da fehlt ist die mittlere Schicht die ich einfügen will, um die Berechnungsserver zu entlasten, da es vorkommen kann, das 15 Berechnungsingenieuren gleichzeitig die Daten von einem Server abfragen, was sehr viel Last für den Server bedeutet.
Außerdem fehlt noch das eigentliche queuing-system wofür die mittlere Schicht auf jeden Fall erforderlich ist. Momentan ist es eine Art Remot-Task-Manager und Job Überwachung für die Berechner die dann manuell entscheiden wo der Job dann ausgeführt wird.
ich habe eine Grundsatzfrage zur Planung eines neuen Projektes.
Folgende Situation:
Ich möchte ein queuing-system für unsere Firma schreiben, dass FE-Berechnungen auf unsere Berechnungsservern (Linux) in einer Queue verteilt.
Wir haben 31 Berechnungsingenieuren und 17 Berechnungsserver (Teilweise im Cluster) mit vier verschiedenen FE-Solvern. Momentan gibt es durch die Kombinatorik dieser 3 Faktoren sehr viel Chaos bei der Auslastung und Verteilung der Berechnungsserver.
Die Software soll nicht nur das queuing der Jobs übernehmen sondern auch eine Art Systeminformation zu den einzelnen Servern und Clustern für die Usern zur Verfügung stellen.
Auf den Berechnungsservern werde ich jeweils einen Java-RMI-Server aufsetzen und die Infos (CPU Auslastung ‚mpstat -P ALL’, Speicherbenutzung , alles was ‚ps –eFl’ liefert, HDD Auslastung etc..) und Befehle (Jobs der User) im Sekundentakt von/zu einem zentralen Middle-Tier (RMI) senden/empfangen. Und das möglichst im Sekundentakt. Die Nutzer bekommen eine GUI zur Steuerung der Jobs und zur Anzeige des Status der Berechnungsserver.
Jetzt die eigentliche Frage. Ich bin mich nicht sicher wie ich die Kommunikation zwischen Client und Middle-Tier ablaufen soll. Ich denke die Daten im Sekundentakt vom Middle-Tier in eine MS-SQL 2005 Server DB zu schaufeln und den Clients über SQL Abfragen auf der DB die Infos zur Verfügung zu stellen. Allerdings sind die Datenmengen sehr groß. Jeder Berechungsserver hat 8 CPUs und es sollen die letzten 400 werte pro CPU gespeichert werden. Also 8 pro Sekunde und pro Server. Das gleiche für den Speicher, die Prozesse ect… Dazu kommt, dass 31 Berechnungsingenieure diese Daten im Sekundentakt von der DB abrufen könnten. Also sehr viele Transaktionen und Abfragen auf dem SQL-Server.
Ist das zuviel für den SQL-Server und das Transaktionsprotokoll? Sollte ich besser über RMI zwischen Middle-Tier und Client die Daten verteilen (Obwohl ich die Daten letztendlich sowieso für statistische Auswertungen in der DB brauche).
Oder gibt es da noch bessere Optionen. Ich würde die SQL Variante bevorzugen, da ich über SQL Abfragen die Daten dem Clienten sehr einfach aufbereiten kann.
Da ich die Software (die Clients und die Server über RMI) eigentlich schon vor 5 Jahren geschrieben habe und diese Software seit dem auch im Einsatz ist. Hier mal ein Bild zur Veranschaulichung, was der Client Darstellt und gespeichert werden soll.
http://www.bilder-hochladen.net/files/fyn0-1-png.html
Damals vor 5 Jahren sind es 9 Berechnungsingenieure, 4 Berechnungsserver und 2 FE-Solvern gewesen. Was da fehlt ist die mittlere Schicht die ich einfügen will, um die Berechnungsserver zu entlasten, da es vorkommen kann, das 15 Berechnungsingenieuren gleichzeitig die Daten von einem Server abfragen, was sehr viel Last für den Server bedeutet.
Außerdem fehlt noch das eigentliche queuing-system wofür die mittlere Schicht auf jeden Fall erforderlich ist. Momentan ist es eine Art Remot-Task-Manager und Job Überwachung für die Berechner die dann manuell entscheiden wo der Job dann ausgeführt wird.
Comment