Как организовать сервер для опроса и хранения данных 10000 датчиков?

Попробую сформулировать задачу, есть некая система контроля солнечной энергии, мозги этой системы я разрабатываю лично и с нуля, теоретически, во власти есть абсолютно любой интерфейс передачи данных в компьютер... Пока прототип мозгов работает автономно, то есть без участия человека (почти), но не суть.. Нужно организовать сервер для того, что бы все данные с этих мозгов отображались в веб-интерфейсе, пользоваться сторонними хостингами не хочу, так как параллельно разработке осваиваю debian и хотелось бы не зависеть ни от кого.

Для начала, в планах сделать такую систему:
Есть, например, 1000 домов с такими мозгами все они осуществляют передачу данных о работе системы на головной компьютер через интернет. Данные представляют из себя значения разнообразных датчиков типа, температуры, напряжения, тока, освещенности и много чего еще...

Я думаю, что мне нужна база данных, в которую бы писались значения каждых мозгов и по требованию, я мог прочитать всё об их состоянии. Естественно через веб - интерфейс.
Какие требованиями должно обладать железо для такой задачи?

И как вообще организуются подобные системы?
Что курить, чтобы понять как это все работает?
  • Вопрос задан
  • 5153 просмотра
Решения вопроса 2
Для сбора такой статистики хватит любого железа.
mysql+ выделенный ип на сервере. Что в принципе тоже не обязательно (можно и ddns прикрутить)

Для мониторинга/отображения - любой язык на котором умеете писать. Интерфейс на bootstrap+php можно за несколько часов собрать.

В общей сложности задача не сложная.
Ответ написан
@malerix
Судя по этому комментарию, вы хотите хотите сделать всё "с нуля". Тогда вам понадобится что-то вроде этого: Boost Asio. Или любая другая подобная библиотека. На хабре было много статей по этой теме (Asio, libevent). Ну, а соединение с базой данных - это уже меньшая проблема - есть много биндингов к C++, например MySQL; есть даже такое.
Если же вам не хочется мучится с "низкоуровневыми" сокетами, многопоточностью и отладкой всего этого, то можете попробовать Erlang. Для решения вашей задачи он подойдёт идеально.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Properrr
@Properrr
Напишите себе Web_API для работы с базой. На стороне каждого дома реализуйте клиент который будет использовать это API.
2)Напишите веб-морду для отображения данных из базы
Ответ написан
Tomasina
@Tomasina
Инженер-разработчик
а может не изобретать свой сервер, а использовать существующие решения, а свои силы направить на железную часть проекта?

openenergymonitor.org/emon
www.openhab.org
teamtreehouse.com/features
tech.yandex.ru/events/yac/2013/talks/1122
smartanthill.ikravets.com
pushingbox.com
Ответ написан
Zabbix,
Nagios,
Munin,
Cacti,
OpenNMS,
Zenoss,
Ganglia,
Riemann,
Foglight NMS,
Pandora FMS,
NetXMS,
Xymon,
Opmantek NMIS,
Icinga,
Sensu,
MRTG,
Collectd,
Splunk

....

Из личного опыта советую присмотреться в приоритете соответственно к Zabbix, Nagios, Sensu, Cacti

Достаточно просты в освоении, очень разнообразный функционал, простота сбора данных и написания своих модулей.
Ответ написан
Комментировать
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Посмотрите на graphite.wikidot.com
Тут и база данных и простой API для добавления, и веб-интерфейс и куча разных агрегатных функций и масштабируемый и используется в куче подобных систем и приложений, и графики строит, причем по любым значениям, и данные можно вводить скопом и за любой интервал времени. Достаточно прост в установке и освоении. Можно использовать как в малых инсталляциях для мониторинга десятков значений, так и например в яндексе пользуют для сбора параметров с десятков тысяч объектов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы