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.