(currently work-in-progress)
OdysseusNet allows the configuration of each OdysseusNode using a separate XML-based configuration file. This file is located in the ODYSSEUS_HOME folder and is called odysseusNet.conf
. With the activation of OdysseusNet, the contents of the file are read once (if the file did not exist, it will be created with default values). Further changes to the file during execution are not applied (Odysseus has to be started again, then). The configuration of OdysseusNet is based on key-value-pairs,whereas each key has to be unique. Developers can add/reuse own configuration keys (and values) described in Configuration for developers.
The following text is an example of such a OdysseusNet configuration file:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>OdysseusNet Property File edit only if you know what you are doing</comment> <entry key="net.networkoperatorgenerator">websocket</entry> <entry key="net.node.default.username">System</entry> <entry key="net.nodemanager.storetype">filestore</entry> <entry key="net.nodemanager.filename">C:/Users/Marco/odysseus/store/nodes.store</entry> <entry key="net.node.communicator">rest</entry> <entry key="net.querydistribute.maxport">20000</entry> <entry key="net.remoteUpdate">false</entry> <entry key="net.discoverer.name">BroadcastOdysseusNodeDiscoverer,IPListOdysseusNodeDiscoverer</entry> <entry key="net.source.lifetime">3600000</entry> <entry key="net.querydistribute.minport">10000</entry> <entry key="net.node.preserveid">false</entry> <entry key="net.autostart">true</entry> <entry key="net.querydistribute.randomport">false</entry> <entry key="net.dd.local">true</entry> <entry key="net.node.group">OdysseusGroup</entry> <entry key="net.querydistribute.partition">querycloud</entry> <entry key="net.querydistribute.allocation">querycount</entry> <entry key="net.node.name">OdysseusNode_1554</entry> <entry key="net.discoverer.interval">5000</entry> <entry key="net.dd.checkinterval">30000</entry> <entry key="net.logging.receive">false</entry> <entry key="net.connect.selector.name">GroupSelectorComponent</entry> </properties>
Key | Default value | Description | See |
---|---|---|---|
net.node.name | OdysseusNode | Human-readable non-unique name of the OdysseusNode. If value is OdysseusNode , a randomly generated 4-digit number is added to the name (e.g., OdysseusNode_1234 ). | |
net.node.group | OdysseusGroup | Name of the group the node is participating in. The node connects only to other nodes with the same NodeGroup. Groups are only considered when net.connect.selector.name = GroupSelectorComponent | OdysseusNet |
net.node.preserveid | false | If true, the generated nodeID is saved and restored after each start of OdysseusNet. | |
net.autostart | false | If true, OdysseusNet is actived immediately when Odysseus starts. | OdysseusNet |
net.remoteUpdate | false | If true, the node allows update/restart/reinstall-signals from remote nodes to be processed (do not set to true if using OdysseusStudio!). This setting is useful e.g., for RaspberryPi and remote updates. | Update/Restart/Reinstall |
net.logging.receive | false | If true, the node receives and prints log messages from remote nodes. | Logging |
net.querydistribute.minport | 10000 | Sets the minimum port number which is allowed to be used in transmitting data stream between distributed query parts (useful for configuring firewalls). | |
net.querydistribute.maxport | 20000 | Sets the maximum port number which is allowed to be used in transmitting data stream between distributed query parts (useful for configuring firewalls). | |
net.querydistribute.randomport | false | If true, a port is randomly selected between net.querydistribute.minport and net.querydistribute.maxport . If false, free ports are selected in sequence (beginning with net.querydistribute.minport ). | |
net.querydistribute.preprocess | <empty> | Comma-separated list of strategies of preprocessors, which are used during query distribution if the user had not specified one in the query. | |
net.querydistribute.partition | querycloud | Default strategy for partitioning queries during query distribution if the user had not specified one in the query. | |
net.querydistribute.modification | <empty> | Comma-separated list of strategies of modifications, which are used during query distribution if the user had not specified one in the query. | |
net.querydistribute.allocation | querycount | Default strategy for allocating query parts to nodes if the user had not specified one in the query. | |
net.querydistribute.postprocess | merge | Comma-separated list of strategies of postprocessors, which are used during query distribution if the user had not specified one in the query. | |
net.discoverer.interval | 5000 | Time interval in milliseconds in which the node discoverer checks for new OdysseusNodes in the network. | Discovery of OdysseusNodes |
net.discoverer.name | BroadcastOdysseusNodeDiscoverer | Name of the discoverer to be used to detect other nodes in the network. | Discovery of OdysseusNodes |
net.source.lifetime | 3600000 | Time in milliseconds in which a source definition is distributed across the network. | Distributing data sources |
net.dd.local | true | If true, the node stores distributed data locally. | Distribution of (static) data |
net.dd.checkinterval | 30000 | Time interval in milliseconds in which the node checks for invalid distributed data (e.g., exceeded lifetimes). | Distribution of (static) data |
net.connect.selector.name | GroupSelectorComponent | Name of the selector which decides which connections the node has to establish. | Connection to OdysseusNodes |
If OdysseusNet reads a configuration setting and the value is somewhat invalid, it uses the default value.