# Lynx Architecture

# Overview

Lynx has a service oriented architecture. It runs each component in separate docker containers. These can be run in Kubernetes or standalone using docker-compose.

The main site by IoT Open is run in our own Kubernetes cluster with full redundancy.

# Main components

The figure below shows a schematic picture of the main components of the platform.


# MQTT Bus

The MQTT (opens new window) Bus is the bloodstream or the highway of the platform. All telemetry data flows on the MQTT bus and may be read by the applications subscribing to the bus.

MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol. Designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery.

# Stream processing Modules

Within the platform there are modules listening to MQTT that handles the messages on the bus. For instance there are one components responsible of storing the data for history and retrieval of last known values.

Other modules handles integrations with other systems and other tasks of the platform. Each component are redundant to minimize downtime and can be scaled up to handle bursts of data on the bus.

# Short and long term storage

Data in the platform are stored in two types of database storage. There is one SQL-database storing configuration data and data regarding users, installations, organizations, and other objects. Measurements are stored in a times eries database in order to quickly access them for reports.


The API is both the MQTT Bus described above and a REST API. The API documentation can be found here.