Introduction of nyssr.net
A mesh of Java nodes with distributed services, applications, and components
Nodes
A
Services
Plugins contain local services (based on interfaces), microservices (services for the network) and nanoservices (services that only process one message type).
The node network
Nodes are networked with each other in a mesh, i.e. each node is connected to several other nodes via TCP channels. Services communicate with each other exclusively by means of messages, network-wide.
High-performance communication
The asynchronous messaging between nodes is optimized for speed and data efficiency. Therefore, nodes can operate off the main data highways.
Microservice resolution
Services are found automatically. Each microservice has a unique ID. A message to a microservice that has this ID in the header is automatically delivered to the service, regardless of which node the service is running on.
Load balancing
The same microservice can be used simultaneously on different nodes. The system automatically distributes the load across the instances. The same applies to applications and UI dialogs.
Like one big system
No configuration
You can only control and use thousands of microservices if no configuration is necessary. The microservices only need to be present in the network.
No code sharing
Generally, no source code is shared between service providers and service consumers. This avoids dependencies on shared interfaces and eliminates the need to upgrade all services simultaneously to a new level.
100% Asynchronous Design
Everything in
Peer-to-peer
The
Maximum scaling
A node network can scale as required. Additional nodes can be added during operation. We do not scale monoliths, but asynchronous services.
Maximum resilience
You can operate everything redundantly: Nodes, services, UI components. If a link fails, the messages use a different route. If a node fails, the other nodes and service instances survive.
Work scaling
Host UI dialogs where the team works. The team can monitor the nodes and intervene if necessary. It can independently distribute new versions and drive further development.