Skip to content
Florent Clairambault edited this page Feb 5, 2018 · 26 revisions

Architecture

The general architecture is made to be avoid single point of failure, so that it can resist any kind of data-center failure. It uses cassandra for storing all the data and NSQ for handling the real-time events. In the end it looks a little bit like that:

General architecture

Languages

  • The core system is built in Go.
  • Some checkup and conversion tools are built in python.
  • The management web interface (which is not open-source) is in java. This is the language that was used for everything prior to Go.

Database

Everything is organized around a simple and extensible cassandra database.

These are the main column families of this database:

Messaging

Messaging is used between the different components of the system. Everything is done through a NSQ server.

Protocols

There are two protocols supported as-is by the system:

They both support:

  • Transmission of location-specific data in a bandwidth-optimized way
  • Transmission of generic data
  • Real-time settings and commands transmission

Some sample client implementations:

Clone this wiki locally