Зависимости
Postgresql
Postgresql - открытая, кластерная реляционная база данных с языком запросов SQL
. Pepeunit использует её для:
- Хранения информации о всех сущностях - Repo, Unit, UnitNode
- Хранения шифрованной информации
- Хранения информации о доступах и видимости
EMQX MQTT Broker
EMQX MQTT Broker - это серверное приложение, которое координирует сообщения между издателями и подпищиками MQTT протокола. Брокер обеспечивает взаимодействие через 1883
и 8883
порты между Unit и Backend. Его можно назвать рельсой данных, на которую завязано основное взаимодействие.
Ключевые моменты взаимодействия MQTT Broker, Backend и Unit
Backend выполняет Административные функции, а именно:
- Авторизация всех Unit для доступа к определённым топикам
- Агрегация данных из определённых топиков, согласно политике имён топиков
- Управление Unit, при помощи системы команд, позволяющей публиковать в топики задания на обновление schema.json, env.json или программы целиком.
- Получение состояний Unit через специальный топик.
Брокер EMQX
на два порядка производительней чем Backend, но благодаря системе кэширования авторизации EMQX
и кэшированию через Redis
, Backend может справится с нагрузкой.
Redis
Redis - NoSQL
кластерная база данных использующая парадигму key-value
- Обеспечивает кэширование и хранение промежуточной информации о состоянии UnitNode, во время обращения Unit к MQTT Broker через топики.
- Используется также для авторизации Backend в момент подписки на основные топики
unit.example.com/+/pepeunit
иunit.example.com/+/+/+/pepeunit
в MQTT Broker.