Architecture

The Edge Compute Platform uses standalone modules (containers) that communicate with each other using an API.

Several modules are required to run the minimum edge system. Others can be plugged in for extra functionality and removed without impacting the core system. A container setup facilitates deployment and interoperability.

For simplicity, think of the containers in groups of similar services.

Figure 1.


The various services are described in the next sections.

Core Services

The core comprises of modules such as:

  • Cloud subscriber: to receive messages from the cloud (config, actions, etc.) and process
  • Metadata: store all device twin data, config and state
  • Health: to keep track of running core services' state
  • RabbitMQ: message queues for inter-service communication; (semi) persistent storage of telemetry data for export
  • Cache: used to share variable state when services are scaled up
  • API: processes API call from external services, allows for Web-of-Things like REST format to be used

Export Services

Use export services to send data northbound. This is optional, though needed for getting data to clouds. Currently available is the Export MQTT service which can publish to multiple MQTT brokers/topics.

Support Services

These tap into the data streams from core for further processing, for example, label conversion and rules.

  • Should be able to be removed from system without impact.
  • Can trigger commands sent to devices (i.e. use core command API).
  • Can send to export services by injecting a processed data stream into the telemetry data stream.

Device Drivers

Device drivers are standalone drivers that communicate with physical devices (each protocol has its own driver). Data is sent to core in raw form.

Drivers can be plugged in independently (individual containers).