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.

  • All nodes are OdysseusNet nodes
  • A least the master node is an OdysseusNet node and the other node are default Odysseus nodes (Remark: Even if the worker are OdysseusNet nodes, they are treatet like default Odysseus nodes, i.e. no extra worker capabilities are used).

net

In this project all the base and common classes can be found.

net.communication

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.

net.communication.object

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.

net.communication.rest

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.

net.config

This project handles the access to the net config file.

net.connect

This project is used for the object based communication via tcp sockets. It has some associated project:

  • net.connect.select.all: Group ids of nodes are ignored.
  • net.connect.select.group: Handle different groups of nodes.
  • net.connect.socket: Basis socket communication between OdysseusNet nodes.

net.console

This project provides OSGi console commands for OdysseusNet

net.data

All distributed source handling is done here. This is not tested with the REST based communication yet.

net.data.console

A console for distributed source handling.

net.discovery

The discovery of nodes is handled here. There are currently three discoverer implemented:

  • net.discovery.broadcast: Only for object based communication. Uses a broadcast to look for existing nodes. Nodes will reply to a broadcast message. (If the workers are OdysseusNet, this can be combined with the REST communication.)
  • net.discovery.multicast: Only for object based communication. Uses a multicast to look for existing nodes. Nodes will reply to a multicast message. (If the workers are OdysseusNet, this can be combined with the REST communication.)
  • net.discovery.iplist: The discoverer reads nodes from a config file. The nodes can be any kind of nodes.

net.ping

This project handles node alive checking with ping messages.

net.querydistribute

This project handles the basics of query distribution (see Distributing Queries). A large set of associated projects implement different strategies:

  • allocate.*: The different strategies for query allocation. Other strategies should be implemented similar.
    • direct
    • querycount
    • roundrobin
    • user
  • modify: The modify strategies. 
    • replication
    • TODO: partition 
  • partition: The strategies that handle the way to partition the query plan can be found here:
    • operatorcloud
    • query (cloud)
  • postprocess: Different postprocessing strategies
    • calculations
    • discardreplicates
    • localsink
    • localsource
    • merge
  • proprocess: Preprocessing strategies
    • sources


net.rcp

Any frontend related stuff can be found here (e.g. node view)

net.recovery

TODO

net.resource

Providing information about free hardware resources.

net.sources

The basics for distributed data source management

net.startup

Provides some startup handling

net.update

Handling of node updates. This works only for object based communication. When using docker, this should not be used.

net.util

This package provides some helper classes..


  • No labels