-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Florent Clairambault edited this page Feb 5, 2018
·
26 revisions
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:
- 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.
Everything is organized around a simple and extensible cassandra database.
These are the main column families of this database:
- Registry and registry structure : For pretty much everything
- Time series and time series data types: For devices and general time-related events
Messaging is used between the different components of the system. Everything is done through a NSQ server.
There are two protocols supported as-is by the system:
- The M2MP protocol is a binary, bandwidth efficient protocol
- The ALIP protocol is a text based, simple protocol
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: