Additional Features
Configuration Providers
Upon booting, nodes can retrieve their configuration from a remote node.
FileStores
FileStores are services that provide files from a subdirectory to other services. These files can be requested by name and/or hash. They are then delivered over the network, ending up in the local FileStore of the requesting node. All nodes can have FileStores, which may be disk-based or memory-based. The transfer of files from one FileStore to another provides redundancy and minimizes transportation paths. Various services use the FileStore as a service, such as the software update plugin for transporting JAR files or RemoteSkin for transporting icons and images.
Console
Each node includes a console where status information can be accessed and commands can be entered. This console is accessible from any other node, regardless of whether the nodes are operating remotely behind firewalls or within containers. Only a local node is required, whose console is visible.
Software Update
Nodes often operate behind firewalls, making them inaccessible from remote locations and difficult to maintain through conventional means. For this reason, we provide services that simplify the updating of software (libraries and plugins) from a local node. To update, it is only necessary to copy a control file into a specified directory. This file includes lists of required libraries (including the kernel to be used), stored plugins, and plugins to be loaded. These lists are then transferred to the affected nodes, which immediately load the needed software via a FileStore and restart. In addition to the version numbers of the JARs, hashes and timestamps are also supported to allow the loading of identical but newer software.
Reboot
Nodes can be rebooted at any time: individually, in groups, or the entire network at once, either immediately, in a few minutes, or at a specified time. This only requires entering the appropriate command on the console of a local node. The network will be up and running again in approximately one second.
Applications
Applications are services that can be started and stopped during runtime. When launched, each application instance runs in a new namespace. This allows thousands of instances to be started on a single node, even if, for example, they all use the same message API. Since applications are launched via an app registry, the same application can be run on many different nodes. Automatic load balancing ensures optimal scaling.
RemoteSkin (Swing)
Nyssr.net supports a special type of Swing applications that run on server nodes. The client consists of a node that uses a few special plugins to render the user interface (UI). The server sends a description of the UI in the form of JSON files to the client node. Keyboard, mouse inputs, and widget events are sent from the client back to the application. This architecture enables maximum scalability as parts of the same application can be executed on different nodes. The UI on the client is indistinguishable from that of a normal local Swing program.
RemoteSkin (Web)
Another form of distributed applications allows for running Single-Page Web Applications on server nodes. A small node, written in Google Dart, is converted into JavaScript and executed along with the webpage in the browser. The web application establishes a WebSocket connection to the server node and receives HTML code for the user interface from the application. In this setup, parts of the application can be distributed and run on different nodes, such as one dialog on Node A and parts of another dialog on Nodes B, etc. RemoteSkin for Web is still under development.