Categorygithub.com/soadmized/sentinel
modulepackage
0.0.0-20250209192236-40f4ea77942e
Repository: https://github.com/soadmized/sentinel.git
Documentation: pkg.go.dev

# README

SENTINEL

Что такое SENTINEL

Проект состоит из трех частей:

  • микроконтроллер с датчиками
  • сервер для хранения и обработки полученных с датчиков значений
  • tg-бот для получения значений пользователем

Устройство сервера

API сервера:

  • /save_values - сохраняет полученную от микроконтроллера пачку данных, используется микроконтроллером
  • /last_values - получение последней сохраненной пачки данных (из faststorage), используется пользователем и ботом
  • /status - проверка состояния микроконтроллеров, используется пользователем и ботом
  • /sensor_ids - получение списка подключенных микроконтроллеров, используется пользователем и ботом

Сделан на echo. Основное хранилище данных - InfluxDB. Микроконтроллер шлет пачку данных каждые три секунды. Последнее полученное значение сохраняется в памяти, так как чаще всего пользователю нужно именно оно (см internal/repo/faststorage). При этом пачки данных от микроконтроллера не пишутся сразу в Influx. Они попадают в очередь (сделана на asynq), где собираются в пачки побольше, и уже эти большие пачки записываюся в Influx либо раз в 5 минут, либо если количество маленьких тасок превысит 100.

TODO:

  • При ошибке обработки таски перекладывать ее в retry очередь
  • Если таска не обработалась в retry очереди, то отправлять сообщение в кафку

# Packages

No description provided by the author
No description provided by the author