Nodes

Spheres, van Gogh

A node consists of a small Java microkernel, that is, a JAR file about 1.2 MByte in size. It includes the messaging core, timers, threads, the namespaces and the logging. All other functionalities, especially networking, are loaded via plugins at start time.

This leads to the fact that containers containing a node are usually all identical. A configuration determines which plugins should be loaded. Only the plugins add specific functions to the nodes, i.e. the tasks that make up the character of a node.

The nyssr.net usually consists of several nodes. However, this is more a matter of workload and order. Even a single node can offer all the services that a smaller installation offers. The distribution of plugins to other nodes in a network is done at your own choice. The advantage of this approach is a particularly high flexibility. Basically, all services of a nyssr.net are structured in such a way that it is irrelevant on which nodes they are offered.

The microkernel as well as the included system plugins are almost independent of libraries from other manufacturers. This is intended because the microkernel can be included as a library in normal client and server programs. A dependency on other software would only make integration more difficult, and the advantages of a microkernel would be lost.

The following third-party libraries are used:

Library Vendor Size in KBytes
annotations JetBrains 19
json-simple Google 24

Together, that's just over 40 KBytes (!) of third-party libraries.

One consequence of the small size and significant asynchronicity is the rapid startup of the node. A central system node, incorporating various central registries and TCP servers, launches in approximately 200 ms. This is achieved even though about 400 dependency resolution jobs are executed at startup.