The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Передача данных с удаленных систем без потери данных?, !*! alexkv, 01-Авг-19, 17:15  [смотреть все]
Дано:
-Есть условно несколько удаленных Raspberry Pi (Orange и т.д.), к каждой подключены несколько датчиков. Сами Raspberry Pi подключены к интернету различными способами - где по 3G, где по Wi-Fi где по Ethernet. Канал передачи может прерываться на определенное время.
-Есть сервер с БД. Подключен постоянно к интернету.

Надо:
передавать данные с датчиков на сервер без потерь.

Т.е. скрипт на малине собирает данные с датчиков постоянно. При работающем канале передачи данных эти данные в реальном времени шлются на сервер и там попадают в БД. Если канал перестал работать (пропал 3G например), то данные накапливаются на малинке. При восстановлении канала надо передать накопленные и продолжить слать в реальном времени.

Подскажите пожалуйста концептуально как такое построить.
Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше программировать своих велосипедов.
Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое лучше сделать.

  • Передача данных с удаленных систем без потери данных?, !*! Аноним, 08:49 , 02-Авг-19 (1)
    > Подскажите пожалуйста концептуально как такое построить.

    Концептуально - просто, достаточно простенького скрипта.

    ПОКА <работаем>

        ПОКА <есть_связь>
            ПЕРЕСЫЛАЕМ <данные> НА СЕРВЕР <сервер>

        ПОКА <нет_связи>
            ПИШЕМ <данные> В ФАЙЛ <аварийный_лог>

        ЕСТЬ ФАЙЛ <аварийный_лог>?
            ДА:
                ПЕРЕСЫЛАЕМ <аварийный_лог> НА СЕРВЕР <сервер>
                СТЕРЕТЬ ФАЙЛ <аварийный_лог>


  • Передача данных с удаленных систем без потери данных?, !*! Ann None, 11:30 , 02-Авг-19 (5) –1
    >[оверквотинг удален]
    > Т.е. скрипт на малине собирает данные с датчиков постоянно. При работающем канале
    > передачи данных эти данные в реальном времени шлются на сервер и
    > там попадают в БД. Если канал перестал работать (пропал 3G например),
    > то данные накапливаются на малинке. При восстановлении канала надо передать накопленные
    > и продолжить слать в реальном времени.
    > Подскажите пожалуйста концептуально как такое построить.
    > Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше
    > программировать своих велосипедов.
    > Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое
    > лучше сделать.

    По описанию - классическая очередь сообщений. Для начала можно посмотреть на RabbitMQ.

  • Передача данных с удаленных систем без потери данных?, !*! fantom, 11:53 , 05-Авг-19 (9)
    >[оверквотинг удален]
    > Т.е. скрипт на малине собирает данные с датчиков постоянно. При работающем канале
    > передачи данных эти данные в реальном времени шлются на сервер и
    > там попадают в БД. Если канал перестал работать (пропал 3G например),
    > то данные накапливаются на малинке. При восстановлении канала надо передать накопленные
    > и продолжить слать в реальном времени.
    > Подскажите пожалуйста концептуально как такое построить.
    > Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше
    > программировать своих велосипедов.
    > Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое
    > лучше сделать.

    Одна тулза пишет данные в файл/базу/очередь/буфер/свой_вариант
    Вторая- вынимает и пропихивает дальше по принципу транзакций, пока транзакция не закрыта данные не считаются переданными.

    • Передача данных с удаленных систем без потери данных?, !*! fantom, 11:56 , 05-Авг-19 (10)
      >[оверквотинг удален]
      >> то данные накапливаются на малинке. При восстановлении канала надо передать накопленные
      >> и продолжить слать в реальном времени.
      >> Подскажите пожалуйста концептуально как такое построить.
      >> Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше
      >> программировать своих велосипедов.
      >> Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое
      >> лучше сделать.
      > Одна тулза пишет данные в файл/базу/очередь/буфер/свой_вариант
      > Вторая- вынимает и пропихивает дальше по принципу транзакций, пока транзакция не закрыта
      > данные не считаются переданными.

      А вообще - классическая электронная почта как раз решает поставленную задачу :)

    • Передача данных с удаленных систем без потери данных?, !*! alexkv, 12:12 , 05-Авг-19 (12)
      > Одна тулза пишет данные в файл/базу/очередь/буфер/свой_вариант
      > Вторая- вынимает и пропихивает дальше по принципу транзакций, пока транзакция не закрыта
      > данные не считаются переданными.

      Это понятно.
      Я интересовался какие именно тулзы можно использовать для решения такой задачи.

      • Передача данных с удаленных систем без потери данных?, !*! fantom, 12:24 , 05-Авг-19 (13)
        >> Одна тулза пишет данные в файл/базу/очередь/буфер/свой_вариант
        >> Вторая- вынимает и пропихивает дальше по принципу транзакций, пока транзакция не закрыта
        >> данные не считаются переданными.
        > Это понятно.
        > Я интересовался какие именно тулзы можно использовать для решения такой задачи.

        Хоть POST запросы посылайте в цикле пока нужный код ответа от сервера не получите.
        Хоть SNMP set.
        Хоть INSERT в базу пока база Ok не ответит.
        Хоть в subversion тупо по крону коммитить.
        Тут что вам ближе тем и пользуйтесь.

  • Передача данных с удаленных систем без потери данных?, !*! Павел Отредиез, 17:29 , 16-Авг-19 (18)
    >[оверквотинг удален]
    > Т.е. скрипт на малине собирает данные с датчиков постоянно. При работающем канале
    > передачи данных эти данные в реальном времени шлются на сервер и
    > там попадают в БД. Если канал перестал работать (пропал 3G например),
    > то данные накапливаются на малинке. При восстановлении канала надо передать накопленные
    > и продолжить слать в реальном времени.
    > Подскажите пожалуйста концептуально как такое построить.
    > Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше
    > программировать своих велосипедов.
    > Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое
    > лучше сделать.

    Тебе хорошо подойдет smtp протокол для этого. Клиенты пусть имеют локальные smtp сервера, которые копят очередь и отсылают на центральный сервер. На центральном сервере транспортом пайп можно письма парсить и вносить в БД.

    • Передача данных с удаленных систем без потери данных?, !*! Павел Отредиез, 17:41 , 16-Авг-19 (19)
      >[оверквотинг удален]
      >> то данные накапливаются на малинке. При восстановлении канала надо передать накопленные
      >> и продолжить слать в реальном времени.
      >> Подскажите пожалуйста концептуально как такое построить.
      >> Хотелось бы максимально использовать системные возможности Linux и свободного ПО, поменьше
      >> программировать своих велосипедов.
      >> Чет я потерялся, не понимаю с использованием чего (технологии, протоколы, ПО) такое
      >> лучше сделать.
      > Тебе хорошо подойдет smtp протокол для этого. Клиенты пусть имеют локальные smtp
      > сервера, которые копят очередь и отсылают на центральный сервер. На центральном
      > сервере транспортом пайп можно письма парсить и вносить в БД.

      Делается элементарно. Допустим у тебя raspbian с exim. Все шлют на input@10.0.0.1 согласно политике повторов и по cron прогоном очереди. На сервере в ложишь /home/input/.forward с содержимым "| input.sh ". Каждое входящее письмо попадает в экземпляр input.sh на stdin. Все конфигурации exim дефолтные ничего не нужно придумывать. При наличии связи экзим доставляет немедленно, при отсутствии копит очередь.

      • Передача данных с удаленных систем без потери данных?, !*! Павел Отредиез, 17:47 , 16-Авг-19 (20)
        >[оверквотинг удален]
        >>> лучше сделать.
        >> Тебе хорошо подойдет smtp протокол для этого. Клиенты пусть имеют локальные smtp
        >> сервера, которые копят очередь и отсылают на центральный сервер. На центральном
        >> сервере транспортом пайп можно письма парсить и вносить в БД.
        > Делается элементарно. Допустим у тебя raspbian с exim. Все шлют на input@10.0.0.1
        > согласно политике повторов и по cron прогоном очереди. На сервере в
        > ложишь /home/input/.forward с содержимым "| input.sh ". Каждое входящее письмо попадает
        > в экземпляр input.sh на stdin. Все конфигурации exim дефолтные ничего не
        > нужно придумывать. При наличии связи экзим доставляет немедленно, при отсутствии копит
        > очередь.

        Отправка письма echo "Мой текст" | mail input@10.0.0.1

  • Передача данных с удаленных систем без потери данных?, !*! Аноним, 17:01 , 21-Сен-20 (23)
    БД с репликацией локально, ту же MySQL можно взять.
    Модель данных можно придумать такую, чтобы это был кольцевой буфер и не нужно было специально удалять старые данные, чтобы они перезаписывались при нормальной работе.  

    replace into data_table ( KEY, TS, VALUE) values ( количество секунд от начала суток, время, значение)

    На том конце выбираете по TS и что-то делаете.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру