Process-Based Architecture
Information
- The architecture of the PLANTA Server relies on a process-based approach, which means that each client session runs in an isolated process and can therefore neither jeopardize other sessions nor the server operation as a whole.
- This offers the following advantages:
- Stability: Session break-offs have no impact on the PLANTA Server as a whole since the individual sessions are now separated from one another.
- Lower resource contention: Since exclusive resources, like e.g. the Python interpreter, are not only used by one session any longer, there will be performance improvements.
- Prevention of unnecessary resource reservation: In the case of a storage protection infringement, the respective session can safely be terminated right away. As a result, this storage will immediately be available again to the entire system.
Details
- Each client session is run within a process.
- The layer responsible for database communication and session administration is based on Java only.
- In parallel to this, a purely native component for accepting client connections and allocation of the DataDictionary (Master) is running.
- The session component, which is also native and is created for each client connection, copies, e.g., the authentication, the module design, and the general event processing.
- For communication between the components, the PLANTA Server uses serialized messages via protocol floats, which are exchanged by network sockets that can only be called locally.
Effects
- Upon successful server start, now at least three processes (service wrapper, PlantaServer, Master (DataDictionary, accepting connections)), and another process for each session, will be run instead of two processes (service wrapper and PlantaServer).
- Since communication takes place via sockets, the maximum number of file descriptors must be increased.
- Sessions can also be quit individually through operating system means (kill, task manager).
- Due to the process space division, a session crash/break-off has no immediate effect on other sessions (e.g. storage violation, etc.).
- All existing Python interpreters are now integrated in each session.
- Especially in the case of high parallel utilization of the server, this leads to a performance enhancement since access is always exclusive.
- The interpreters can no longer be used for shared data usage; at the same time, this prevents incorrect or abusive application which can cause the above mentioned storage violations.