Architecture
2 minute read
Message bus
- All services rely on centralized message bus. Which leads we can have micro service for each block shown above.
- Most of the components based on a plugin approach. Other services can be included easily
Gateway
- Gateway is a service that collects data from different networks. Also can do changes on the target network.
- Gateway is as plugin component, we can implement gateway for any provider
- Supported providers list
Gateway Message Processor
- Collects data from a gateway and updates in storage and metrics database
- Sends received data as events, will be used in other services (Task, Forward Payload, etc.,)
Forward Payload
- Forwards a payload from a
Field
to anotherField
- Fields can be on a different gateways
Task Service
- User defined tasks will be executed by
Task Service
- Two types of tasks are available
- Event based
- Tasks can listen to specific events.
- Execute on an interval
- executes tasks based on the interval defined
- If task meets the defined criteria, posts the given parameters to the
Handler Service
Scheduler Service
- User defined schedules are executed by
Scheduler Service
- outcome of the schedule execution handover the defined parameters to the
Handler Service
Handler Service
- Receives requests from
Task Service
andScheduler Service
- Submits the parameters to a specific handler
- new handlers can be implemented easily as it is a plugin component
API and Websocket Service
- Exposes set of APIs to consume and operate resources
- Websocket notifies the changes on the resources, helps to sync the dashboard realtime
- Web UI is client consumes query service APIs
- User can add/modify most of the data here
- Update Gateway details
- Create a dashboard with different widgets
- Add a schedule, task, handler, firmware
- Run a backup, restore
- etc…
Storage Database
- Stores all the data other than metrics
- gateways, Node, Source, Fields, Dashboard, Task, Scheduler, Handler, etc.,
- storage is a plugin type
- Currently there are two type of supported storage plugin
in-memory
- Keeps all the configurations on the memory/RAM
- Dumps into disk with defined intervals
- On startup loads from the disk
MongoDB
Metric Database
- Stores only the metrics data
- Metric is a plugin type
- Currently supports
InfluxDB
Last modified May 13, 2021: rename message processor (2db3908)