Prozessbasierte Architektur
Information
- Die Architektur des PLANTA-Servers basiert auf einem prozessbasierter Ansatz, was bedeutet, dass jede Client-Sitzung in einem isolierten Prozess abläuft und weder andere Sitzungen noch den gesamten Serverbetrieb gefährden kann.
- Dies bietet folgende Vorteile:
- Stabilität: Sitzungsabbrüche haben keine Auswirkungen auf den gesamten PLANTA-Server, da die einzelnen Sitzungen nun getrennt voneinander sind.
- Geringere Ressourcenkonkurrenz: Da exklusive Ressourcen, wie z.B. der Python-Interpreter, nicht mehr nur von einer Sitzung in Anspruch genommen werden, kommt es zu Performance-Verbesserungen.
- Vermeidung von unnötiger Ressourcenbelegung: Bei einer Speicherschutzverletzung kann die entsprechende Session sofort gefahrlos beendet werden. Dadurch steht dieser Speicher dem Gesamtsystem sofort wieder zur Verfügung.
Details
- Jede Client-Sitzung wird innerhalb eines Prozesses ausgeführt.
- Die für die Datenbank-Kommunikation und Sitzungsverwaltung verantwortliche Schicht ist rein Java-basiert.
- Parallel hierzu läuft eine rein native Komponente zur Annahme von Client-Verbindungen und Verteilung des DataDictionary (Master).
- Die ebenfalls native Sitzungskomponente, die für jede Client-Verbindung erstellt wird, übernimmt z.B. die Authentifizierung, den Modulaufbau und die allgemeine Ereignisverarbeitung.
- Zur Kommunikation zwischen den Komponenten nutzt der PLANTA-Server über Protocol Buffers serialisierte Nachrichten, die über ausschließlich lokal ansprechbare Netzwerk-Sockets ausgetauscht werden.
Auswirkungen
- Bei erfolgreichem Start des Servers laufen mindestens drei Prozesse: service wrapper, PLANTAServer, Master (DataDictionary, Verbindungsannahme) und für jede Sitzung ein weiterer Prozess.
- Da die Kommunikation über Sockets erfolgt, muss u.U. die Maximalanzahl von Dateideskriptoren angehoben werden.
- Sitzungen können über Betriebssystemmittel (kill, Task-Manager) auch einzeln beendet werden.
- Ein Sitzungsabsturz/-abbruch hat durch die Prozessraumtrennung keine direkten Auswirkungen auf andere Sitzungen (z.B. Speicherverletzungen etc.).
- Alle Python-Interpreter sind in jede Sitzung integriert.
- Insbesondere bei hoher paralleler Nutzung des Servers führt dies zur Verbesserung der Performance, da immer ein exklusiver Zugriff gegeben ist.
- Die Python-Interpreter können nicht mehr zur gemeinsamen Nutzung von Daten verwendet werden; gleichzeitig verhindert dies fehlerhafte bzw. missbräuchliche Applikation, die o.g. Speicherverletzungen hervorrufen können.