I1820

module
v0.0.0-...-0dca507 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2021 License: GPL-3.0

README

I1820

GitHub Workflow Status Codecov PkgGoDev

Introduction

Link component of I1820 platfrom. This service collects raw data from bottom layer (protocols), stores them into mongo database and decodes them using user's selected decoder. This service also sends data into bottom layer (protocols) after encoding them using user's selected encoder.

Link uses MQTT for communicating with the bottom layer and this communication can be customized using Protocol's interface which is defined in protocols/protocol.go.

Thing Manager

Thing manager manages I1820 Things and their properties. Things belong to the projects, but this component doesn't validate this relationship so other services must verify project identification and existence before calls this project APIs.

Data Manager

DM is a Data Manager component of the I1820 platform. It has some useful built-in queries that can returns data from the database (MongoDB) to the API backend.

Profiler

Enable MongoDB built-in profiler:

use i1820
db.setProfileLevel(2)

The profiling results will be in a special capped collection called system.profile which is located in the database where you executed the setProfileLevel command.

db.system.profile.find().pretty();

Project Manager

PM is a project manager component of the I1820 platform. It builds things, projects, things to project relationship, and project's dockers. Each project consists of two dockers one of them provides a sandbox for user scripts that are in python and based on ElRunner and another runs redis as in-memory storage for user scripts. It builds these dockers in localhost and uses Linux sockets for communicating with docker host.

PMs can run on many hosts to provide load balancing. To distribute requests among them, you can use vulcand. this feature still in development phase so it would be better not to use it now 😂

This component provides API based on HTTP ReST so other components can utilize these APIs for creating and destroying things and projects.

PM requires only MongoDB to persist things and projects data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL