Внутреннее строение ПС Трекер

Главная / Блог / Статьи / Информационные / Внутреннее строение ПС Трекер

Внутреннее строение ПС Трекер

Мониторинг движения транспорта - важная инфраструктурная задача любой промышленной или ведомственной организации. Для ее решения применяются различные программные и аппаратные средства. Наша компания в реализовала программное средство контроля транспорта в виде платформы удобной расширяемой программной платформы. В статье описана внутренняя структура ПС Трекер.

Основные требования, которые были поставлены при проектировании системы - использование web и мобильных приложений, высокая актуальность данных (приближенная к realtime), низкая нагрузка на аппаратные ресурсы, возможность быстрого развертывания с нуля. Реализация позволяет развертывать и использовать систему мониторинга транспорта как онлайн-сервис либо устанавливать ПО на мобильных аппаратных устройствах.

В ранее опубликованной статье в Блоге мы уже описывали основные функции и возможности ПС Трекер. Среди них:

  • Возможность использования web и мобильного приложения для мониторинга и управления данными;
  • Применение GPS/ГЛОНАСС-трекеров;
  • Защита канала между клиентским и серверным ПО за счет шифрования трафика.

В данной статье описывается внутренняя структура ПС Трекер и основные особенности реализации. 

Общая структура приложения

В центре системы Мониторинга располагается серверное ПО на базе платформы MeteorJS. Meteor - это фреймворк, реализующий технологию realtime-синхронизации данных между клиентами и базой данных. Фреймворк построен на базе NodeJS и позволяет разворачивать приложения с использованием всех доступных модулей Node. При этом он предоставляет средства создания web-приложений для создания Realtime-приложений и реализует открытый стандарт (протокол) синхронизации данных DDP.   

Основное приложение ПС Трекер реализовано на базе Meteor и NodeJS. В качестве базы данных по умолчанию используется MongoDB. Это требование сервера Meteor, т.к. все внутренние алгоритмы работы фреймворка ориентированы именно на эту СУБД.

Для сбора данных с трекеров используется отдельный сервис сбора данных, который имеет TCP/IP интерфейс и SMS-интерфейс. Мы принципиально подбирали трекеры с возможностью передачи данных по нескольких физически каналам связи: GPRS и SMS. Это необходимо для того, чтобы обеспечить гарантированную доставку данных даже в районах с плохим покрытием GPRS. В случае невозможности отправки данных через GPRS, трекер переключается на передачу данных по SMS.
Передаваемые данные имеют двоичную форму, что позволяет по минимуму использовать трафик. Это увеличивает скорость работы системы и снижает стоимость оплаты трафика.

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

Управление и мониторинг транспорта выполняются через web-интерфейс приложения или через мобильное приложение. Web-приложение также разработано на базе MeteorJS и позволяет в реальном времени отображать данные о движении автомобиля и другие связанные с этим параметры: параметры авто, водителя, маршрут, задачи и др. 


 


Отдельно пользователю доступны функции детального анализа по маршруту движения. Эти данные позволяют пронаблюдать динамику движения автомобиля за выбранное время: с какой скоростью, на каких интервалах, с какими перерывами двигался автомобиль. 

 
 

 
Программное обеспечение на базе Meteor контролирует появление новых данных от трекеров и самостоятельно доставляет их всем подключенным клиентам в реальном времени. В результате все показатели движения автомобилей и данные о водителях появляются у пользователей в момент их фиксации в сервисе.
Для работы мобильного приложения потребовалось применение библиотеки, реализующей протокол работы с Meteor - Android-DDP. К сожалению, Meteor не предоставляет собственного SDK для Android/IOS, поэтому мы разработали собственную надстройку над библиотекой транспортного уровня, позволяющую пользоваться сервисами приложения в мобильном ПО.   

В мобильном приложении мы реализовали аналогичные функции с web-клиентом, в результате пользователям доступны одинаковые функции на двух типах устройств.

Одной из основных задач при реализации мобильного приложения было поставлено - обеспечение безопасности и защиты передаваемых данных. Т.к. приложение может применяться для ведомственных служб, вопрос шифрования сертифицированными средствами и алгоритмами был основным. Мы использовали в мобильном ПО криптобиблиотеку КриптоПро для шифрования трафика. 

Потребовалось доработать библиотеку Android-DDP для возможности встраивания внешних алгоритмов SSL-шифрования. В результате мы разработали библиотеку Android-DDP-WS, которая также опубликована в открытом доступе. Разработанный нами механизм позволил реализовать HTTPS-трафик между приложением и сервером на базе ГОСТированных алгоритмов и библиотеки шифрования КриптоПро.
Для поддержки работы с шифрованным трафиком на сервере установлен сервис обработки шифрованного трафика КриптоПро, который прозрачно для приложений выполняет туннелирование трафика с параллельным его шифрованием/расшиырованием. В результате, сервер Трекера всегда с расшифрованными данными, а обмен с клиентами управляется через КриптоПро.

Реализацию взаимодействия между web-приложением и сервером мы оставили на базе стандартных алгоритмов SSL-шифрования. В основном это сделано из-за того,
что АРМ операторов и администраторов системы фиксировано находятся в демилитаризованной зоне и не требуется применение ГОСТированных средств.

Стек технологий и программных средств, использованных в ПС Трекер:

  • Трекер: GalileoSky Глонасс/GPS v.5
  • Протокол передачи данных: бинарный, по GPRS / SMS.
  • Планшет: любой Android (в т.ч. защищенный)
  • Технология реализации сервера и web-приложения: MeteorJS, HTML5/JS/CSS3
  • СУБД сервера: MongoDB
  • Протокол работы с мобильным ПО: DDP  (Android-DDP).
  • Защита канала связи приложения и сервера: КриптоПро, Android-DDP-WS
  • Карты: Google Maps, но возможно применение оффлайн карт на базе TileView
  • Сервер контроля инфраструктуры - ПС Дозор, на базе Zabbix 2.2

Основные технические вопросы, которые были решены при разработке и эксплуатации ПО.

  1. Первой технической сложностью было грамотное построение протокола работы между сервером и клиентами. 
    Специфика работы Meteor состоит в том, что он выполняет realtime-синхронизацию коллекций данных из БД с клиентским приложением. В случае больших объемов данных в БД или синхронизируемых коллекций трафик с клиентами резко возрастал. Например, при запросе клиентом трека автомобиля за сутки, объем данных в БД мог превышать мегабайты (включая данные о параметрах работы авто).
    Эту проблему решили за счет точных фильтров и запросов к Meteor с целью передачи именно тех данных, которые нужны приложению в текущий момент. 
  2. Большие объемы данных с трекеров транспорта
    При круглосуточной работе системы ежесуточно накапливается большое количество данных с трекеров. Это начинает сказываться на скорости работы MongoDB, количестве потребляемой памяти, скоростью обработки запросов.
    Проблему необходимо решать периодическим архивированием данных для уменьшения объемов. 
  3. Интеграция КриптоПро в реализацию алгоритма DDP. Android-DDP работает поверх HTTP/HTTPS и для встраивания библиотеки КриптоПро мы разработали обертку Android-DDP-WS, реализующую протокол DDP поверх HTTPS.