There are many project, that form together OdysseusNet. Here we will give a short overview. We omit the de.uniol.inf.is.odysseus part of the project and will only show non feature projects.
Remark: The are two different ways to use OdysseusNet.
In this project all the base and common classes can be found.
Here all basic interfaces for the inter node communication can be found. Odysseus currenlty provides two ways to communicate. Message based (here all nodes must be OdysseusNet nodes and all node must be part of the same subnet) and REST-based (only the master node must be an OdysseusNet node, the other nodes are default Odysseus nodes). Only one communication kind can be used at the same time and is configured with the net.node.communicator
configuration. The main interface here is IOdysseusNodeCommunicator.
This project implements the message based OdysseusNet communication. Here all nodes must belong to the same subnet, as the worker will send messages to the master. More concrete: Internally, OdysseusNet internally communicates with message object. This layer just sends the message objects to other Odysseus node and receives messages from other nodes. net.connect (see below) is used for this.
This project allows a master to communicate with default Odysseus nodes by using the REST interface V2 of Odysseus. The internal messages of OdysseusNet are caught and translated to REST class and the results are send as messages again. The configure this rest based communication, use net.node.communicator='rest'
in the OdsseusNet configuration.
This project handles the access to the net config file.
This project is used for the object based communication via tcp sockets. It has some associated project:
This project provides OSGi console commands for OdysseusNet
All distributed source handling is done here. This is not tested with the REST based communication yet.
A console for distributed source handling.
The discovery of nodes is handled here. There are currently three discoverer implemented:
This project handles node alive checking with ping messages.
This project handles the basics of query distribution (see Distributing Queries). A large set of associated projects implement different strategies:
Any frontend related stuff can be found here (e.g. node view)
TODO
Providing information about free hardware resources.
The basics for distributed data source management
Provides some startup handling
Handling of node updates. This works only for object based communication. When using docker, this should not be used.
This package provides some helper classes..