"To join or become joined together; unite."
Conjoiner is intended to be a truely distributed management network for large sets of hosts. There are no central management servers or messaging servers. All nodes are equal.
- Distributed message driven architecture
- Standardized message payloads
- Deployment of new modules via message events
- Passing messages between local mods and verticals within the instance and the cluster.
The local servers "internal" messaging bus, this is actually on the cluster but the addressing schema is only known by the local machine and is something down the line of: myserver.mydomain.com.local
The shared messaging network with the entire cluster. The topic name is known to ALL instances on all servers. eg: "conjoiner.clusterbus"
Conjoiner is a grouping of some core modules, these modules are interacted with via messaging. The core of Conjoiner provides messaging capabilities to the Cluster and the ability to deploy new code and attach that code to the Cluster though indirectly via the "transponder". See transponder below.
The Deployer is a core feature of Conjoiner, It should be a simple module which should subscribe to both the ClusterBus and the local-ModBus. Deploy / Undeploy messages are received on the ClusterBus, and after determining if the message is intended for this node, the deployment task is performed. This could include:
- Download of mod package from nexus
- Creation of the mods/MODULENAME/mod.json manifest within conjoiner
- Creation of the module's initial config object
- Deployment of the module with its initial config
- Publishing Deploy/Undeploy result back to ClusterBus
- Notifying local modules on local-ModBus of the deployment change
Transponder would be the first module to be shipped and deployed by the "Deployer" module mentioned above. Transponder is in charge of:
- Listening for events on EventBus
- Determining if messages are intended for this node
- Passing messages to the ModBus
- Serialization / Deserialization of Messages
- Adding metadata to messages eg: hostname, timestamp, messagetype…
- Heartbeat messages
A Monitoring module should post occasional requests as to the status of various modules on the ModBus and then notify Transponder to notify the EventBus of the status's