1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-28 13:48:49 +08:00
Mainflux.mainflux/docs/architecture.md
Dejan Mijić d5b913d432 MF-199 - Create documentation skeleton (#218)
* Copy basic docs contents to the main repo

Signed-off-by: Dejan Mijic <dejan@mainflux.com>

* Include licensing and contributing info to docs

Signed-off-by: Dejan Mijic <dejan@mainflux.com>

* Create documentation skeleton

Signed-off-by: Dejan Mijic <dejan@mainflux.com>
2018-04-08 23:03:12 +02:00

2.5 KiB

Components

Mainflux IoT platform is comprised of the following services:

Service Description
manager Manages platform entities, and auth concerns
http-adapter Provides an HTTP interface for accessing communication channels
normalizer Normalizes SenML messages and generates the "processed" messages stream

The following diagram is an (obsolete) overview of platform architecture

arch

Domain model

The platform is built around 3 main entities: users, clients and channels.

User represents the real (human) user of the system. It is represented via its e-mail and password, which he uses as platform access credentials in order to obtain an access token. Once logged into the system, user can manage his resources in CRUD fashion (i.e. channels and clients), and define access control policies between them.

Device is used to represent any device that connects to Mainflux. It is a generic model that describes any client device of the system.

Application is very similar to the Device and is represented by the same Client structure (just with different type info). Application represents an end-user application that communicates with devices through Mainflux, and can be running somewhere in the cloud, locally on the PC or on the mobile phone. Usually it acquires data from sensor measurement and displays it on various dashboards.

Channel represents a communication channel. It serves as message topic that can be consumed by all of the clients connected to it.

Messaging

Mainflux uses NATS as its messaging backbone, due to its lightweight and performant nature. You can treat its subjects as physical representation of Mainflux channels, where subject name is constructed using channel unique identifier.

In general, there is no constrained put on content that is being exchanged through channels. However, in order to be post-processed and normalized, messages should be formatted using SenML.