Перейти к основному содержимому

Описание технической архитектуры

Обозначения и сокращения​

ПО — программное обеспечение.

ТС — транспортное средство.

AMQP (Advanced Message Queuing Protocol) — открытый протокол передачи сообщений между компонентами системы через брокер.

CSS (Cascading Style Sheets) — язык стилей, описывающий внешний вид HTML-документов: цвета, шрифты, макеты и адаптивность элементов, отделяя содержимое от оформления.

EGTS — протокол передачи телематических данных.

HLS (HTTP Live Streaming) — протокол потоковой передачи видео поверх HTTP, применяемый для воспроизведения видеоархива.

HTML (HyperText Markup Language) — стандартный язык разметки для создания структуры веб-страниц.

HTTP (HyperText Transfer Protocol) — прикладной протокол обмена данными между браузером и сервером по модели «запрос-ответ».

JavaScript (JS) — высокоуровневый интерпретируемый мультипарадигменный язык программирования, стандарт для создания интерактивных веб-сайтов.

JWT (JSON Web Token) — формат маркера доступа, применяемый для авторизации запросов к API.

MCP (Model Context Protocol) — протокол подключения внешних клиентов и программных агентов к прикладным функциям системы.

Nginx — веб-сервер и обратный прокси-сервер, работающий на Unix-подобных операционных системах.

PostGIS — расширение с открытым исходным кодом для СУБД PostgreSQL, превращающее её в полнофункциональную пространственную базу данных. Добавляет поддержку географических объектов (точки, линии, полигоны, растры), позволяет хранить их, выполнять сложный пространственный анализ и быстрый поиск по местоположению средствами SQL.

PostgreSQL — свободная реляционная система управления базами данных с открытым исходным кодом, ориентированная на расширяемость и соответствие стандарту SQL.

Protobuf (Protocol Buffers) — бинарный формат сериализации структурированных данных, применяемый как основной транспортный формат прикладного API.

RabbitMQ — брокер сообщений с открытым исходным кодом, предназначенный для асинхронного обмена данными между приложениями и микросервисами. Использует протокол AMQP для надёжной доставки, временного хранения и сложной маршрутизации сообщений, обеспечивая отказоустойчивость и масштабируемость системы.

RTSP (Real Time Streaming Protocol) — протокол управления потоковой передачей видео с камер видеонаблюдения.

Ruby on Rails — фреймворк, написанный на языке программирования Ruby, реализует архитектурный шаблон Model-View-Controller для веб-приложений, а также обеспечивает их интеграцию с веб-сервером и сервером баз данных. Является открытым программным обеспечением и распространяется под лицензией MIT.

TimescaleDB — расширение PostgreSQL для высокопроизводительной аналитики временных рядов и событий в режиме реального времени.

WebRTC — набор протоколов передачи видео в реальном времени с малой задержкой.

WebSocket — протокол двустороннего обмена данными поверх одного постоянного соединения, применяемый для доставки данных реального времени.

Wialon — платформа для GPS/ГЛОНАСС мониторинга, которая позволяет пользователям отслеживать мобильные и стационарные объекты (транспортные средства); в ПО поддерживается одноимённый протокол передачи данных от абонентских терминалов.

УДС — улично-дорожная сеть.

1. Общие сведения​

ПО РУБИН-Т предназначено для мониторинга транспортных средств и обеспечения транспортной безопасности на объектах наблюдения: контроля местоположения ТС, скоростного режима, пробега, соблюдения маршрутов движения и посещения заранее заданных мест, фиксации проездов по государственным регистрационным номерам.

ПО РУБИН-Т применяется в организациях и учреждениях, занимающихся вопросами управления коммерческим, пассажирским, грузовым и специализированным транспортом.

ПО РУБИН-Т позволяет автоматизировать процесс управления парком транспортных средств и сократить расходы на эксплуатацию.

2. Общая схема архитектуры​

ПО РУБИН-Т реализовано по принципу трёхуровневой клиент-серверной архитектуры:

  • клиентский уровень — веб-интерфейс и мобильные приложения;
  • уровень приложений — веб-сервер, сервер приложений, подсистемы приёма телематических данных и видеоаналитики, брокер сообщений;
  • уровень хранения данных — сервер баз данных.

3. Клиентский уровень​

На клиентском уровне на автоматизированном рабочем месте пользователя на базе любой платформы (аппаратные средства плюс операционная система) должен быть запущен веб-браузер.

Браузер исполняет предоставленный с уровня приложений код. Данный код формирует пользовательский интерфейс, который, в свою очередь, обеспечивает интерактивное взаимодействие пользователя и ПО, приём-передачу данных между пользователем и ПО, обеспечивает передачу управляющих воздействий от пользователя к ПО. На уровне клиентского приложения выполняется код на языках в технологиях HTML, CSS и JavaScript.

Веб-интерфейс представляет собой одностраничное приложение, построенное на библиотеке React с типизацией TypeScript. Маршрутизация между экранами выполняется на стороне клиента, обмен данными с сервером — по протоколу HTTP.

Клиентский уровень включает:

КомпонентНазначение
Веб-интерфейсОсновное автоматизированное рабочее место оператора
Мобильные приложения (Android, iOS)Просмотр карты, карточек ТС и уведомлений вне рабочего места
Внешние информационные системыИнтеграция через REST API и MCP-эндпоинт с авторизацией по токену

Картографическая подсистема клиента отображает объекты (ТС, геозоны, камеры, грузы) слоями поверх базовой картографической подложки с аппаратным ускорением отрисовки.

Данные реального времени (текущие координаты ТС, статусы устройств, события) доставляются в браузер по протоколу WebSocket через постоянное соединение, без периодического опроса сервера. Видеопотоки в реальном времени передаются по протоколу WebRTC, воспроизведение видеоархива — по протоколу HLS.

4. Уровень приложений​

4.1 Веб-сервер Nginx​

На уровне приложений доступ к ПО и обмен данными с пользовательским уровнем по протоколу HTTP обеспечивает программное обеспечение веб-сервера Nginx.

Веб-сервер Nginx:

  • хранит статический контент пользовательского интерфейса в формате HTML, а также сопутствующие файлы CSS и JavaScript;
  • выполняет функции обратного прокси-сервера, направляя запросы прикладного API на сервер приложений;
  • обеспечивает терминирование защищённых соединений;
  • проксирует соединения WebSocket для передачи данных реального времени.

4.2 Сервер приложений​

Сервер приложений Ruby on Rails представляет собой набор сервисов, реализованных на языке программирования Ruby. Сервер приложений работает в режиме API: формирование HTML на сервере не производится, весь пользовательский интерфейс формируется на клиентском уровне.

Сервер приложений реализует:

  • прикладную бизнес-логику мониторинга ТС, геозон, камер и грузов;
  • преобразование HTTP-запросов в запросы к СУБД (уровень хранения данных);
  • аутентификацию и разграничение прав доступа;
  • расчёт статистики и формирование отчётов, включая выгрузку в формате XLSX;
  • обслуживание постоянных соединений WebSocket для доставки данных реального времени;
  • интеграцию с внешними подсистемами.

Основной транспортный формат прикладного API — Protobuf; для отдельных структур данных применяется формат JSON. Пространственные данные передаются в формате GeoJSON. Для одного и того же ресурса формат ответа выбирается автоматически по запросу клиента, что позволяет сократить объём передаваемых данных при работе с большими выборками.

Сервер приложений с целью выполнения запросов пользователей и реализации бизнес-логики ПО взаимодействует:

  • с брокером сообщений RabbitMQ, организующим координацию передачи данных между подсистемами программной архитектуры;
  • с СУБД, в которой происходит выборка данных и (или) обработка данных с помощью внутренних процедур БД, реализующих бизнес-логику ПО;
  • с сервером телематики, обеспечивающим приём данных от абонентских терминалов, установленных на ТС;
  • с подсистемой видеоаналитики и сервисом записи видео, которые реализуют подключение к видеопотокам, функции хранения видеоархива, просмотр данных с камер в реальном времени, функции распознавания ТС, ГРЗ и лиц;
  • с сервисами маршрутизации и геокодирования.

4.3 Фоновые обработчики​

Длительные и периодические операции выполняются вне цикла обработки пользовательских запросов отдельными процессами:

Группа задачСостав
Расчёт статистикиПочасовая и посуточная агрегация позиций ТС, поездок, фиксаций камер, статусов устройств
Пункты назначенияРасчёт маршрута и прогноза прибытия, определение факта прибытия, рассылка уведомлений
Общественный транспортПрогноз прибытия на остановки, контроль соблюдения расписания
УведомленияФормирование и доставка оповещений по каналам: электронная почта, Telegram, веб-уведомления, webhook, push-уведомления
ИнтеграцииСинхронизация геозон и объектов наблюдения с сервером телематики и подсистемой видеонаблюдения
ОбслуживаниеОбновление адресов местоположения, очистка устаревших служебных записей

4.4 Брокер сообщений RabbitMQ​

Брокер сообщений RabbitMQ с целью организации координации передачи данных между подсистемами программной архитектуры ПО взаимодействует:

  • с веб-сервером Nginx;
  • с сервером приложений Ruby on Rails;
  • с сервером телематики;
  • с подсистемой видеоаналитики.

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

Выделены следующие очереди обработки:

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

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

4.5 Подсистема приёма телематических данных​

Сервер телематики обеспечивает приём телематических данных от абонентских терминалов, установленных на ТС, реализует разбор популярных протоколов передачи телематических данных (таких как Wialon, EGTS и другие) и генерацию событий.

Функции подсистемы:

  • приём данных по протоколам абонентских терминалов;
  • нормализация координат, скорости, курса и служебных параметров;
  • определение пересечений границ геозон и формирование соответствующих событий;
  • передача нормализованных данных и событий в брокер сообщений.

Учёт абонентских терминалов ведётся по уникальному идентификатору устройства; привязка терминала к ТС хранится с историей, что позволяет корректно восстанавливать данные при замене оборудования.

4.6 Подсистема видеонаблюдения и видеоаналитики​

Подсистема реализует подключение к видеопотокам, функции хранения видеоархива, просмотр данных с камер в реальном времени, функции распознавания ТС, государственных регистрационных знаков и лиц. Подсистема включает следующие компоненты.

Сервис видеоаналитики обрабатывает видеопотоки в реальном времени. Работает по принципу схождения состояний: один управляющий процесс отслеживает перечень активных камер в базе данных и запускает по одному потоку обработки на камеру. Все потоки используют общий набор моделей машинного обучения, что позволяет обслуживать множество камер в рамках одного процесса и одного контекста вычислительного устройства. Для каждого объекта в кадре выполняется обнаружение, сопровождение между кадрами и углублённый анализ по классу объекта, в том числе распознавание государственного регистрационного знака. Результатом является запись о присутствии объекта с полным жизненным циклом: запись создаётся при появлении объекта в кадре и закрывается при его выходе, благодаря чему длительная стоянка ТС фиксируется одной записью, а не множеством повторяющихся.

Сервис записи видео записывает потоки камер по протоколу RTSP в файлы фиксированной длительности без перекодирования, ведёт реестр сегментов и отдаёт записи по запросу в виде потока HLS для просмотра по шкале времени, а также формирует файлы выгрузки. Хранение возможно как на дисковом, так и на объектном хранилище. Сервис также работает по принципу схождения состояний: перечень записываемых камер считывается из базы данных, а расхождение желаемого и фактического состояния устраняется автоматически, что обеспечивает восстановление записи после сбоев и перезапусков без ручного вмешательства.

Сервис публикации потоков обеспечивает выдачу видео в реальном времени в браузер по протоколу WebRTC. Потоки публикуются отдельно для каждого разрешения, что позволяет выбирать качество в зависимости от пропускной способности канала и числа одновременно просматриваемых камер.

4.7 Сервисы маршрутизации, геокодирования и графа УДС​

Сервис маршрутизации строит маршруты по улично-дорожной сети: маршрут между заданными точками с пошаговыми указаниями, линию маршрута общественного транспорта по последовательности остановок, маршрут до назначенного пункта назначения с расчётом времени прибытия.

Сервис геокодирования преобразует координаты в адрес для отображения текущего местоположения ТС и обратно.

Сервис графа УДС обеспечивает ведение транспортного графа: создание и редактирование отрезков дорожной сети, назначение атрибутов объектам графа, экспорт карты. Граф является исходными данными для сервиса маршрутизации.

5. Уровень хранения данных​

На уровне БД в программной архитектуре ПО содержится СУБД PostgreSQL 16 с расширениями TimescaleDB и PostGIS.

СУБД PostgreSQL служит для реализации услуг кеширования данных для задач целевых функций ПО. СУБД PostgreSQL содержит базу данных для хранения всех данных, в том числе геоданных. Геоданные обрабатываются также надстройкой СУБД PostgreSQL — PostGIS. PostGIS — открытое программное обеспечение, добавляющее поддержку географических объектов в реляционную БД PostgreSQL.

Применяются следующие базы данных:

База данныхРасширенияНазначение
Прикладная базаPostGIS, pg_trgm, pgcryptoСправочники ТС, геозон, камер, грузов, маршрутов и остановок; события, поездки, фиксации, статистика, пользователи и права доступа
База телематикиTimescaleDBПоток телематических данных от абонентских терминалов, история позиций
База графа УДСTimescaleDBТранспортный граф улично-дорожной сети

Назначение используемых расширений:

  • PostGIS — хранение и обработка пространственных типов данных (точки положения ТС, полигоны геозон, линии маршрутов и треков), выполнение пространственных запросов: попадание точки в полигон, расчёт площади и периметра, поиск по удалённости;
  • TimescaleDB — высокопроизводительное хранение и агрегация временных рядов телематических данных;
  • pg_trgm — нечёткий поиск по текстовым полям; применяется при сопоставлении названий связанных объектов в процессе импорта данных;
  • pgcrypto — криптографические функции.

Для таблиц большого объёма применяется секционирование по времени, что обеспечивает предсказуемое время выполнения запросов при росте объёма накопленных данных.

Видеоархив хранится вне СУБД — в файловой системе или объектном хранилище; в базе данных ведётся реестр сегментов записи с привязкой к камере и интервалу времени.

6. Взаимодействие компонентов​

Направление обменаПротокол, формат
Браузер ⇄ веб-серверHTTP, HTML/CSS/JS
Клиент ⇄ прикладное APIHTTP, Protobuf (основной), JSON, GeoJSON, XLSX
Клиент ⇄ сервер приложений (реальное время)WebSocket
Клиент ⇄ подсистема видео (реальное время)WebRTC
Клиент ⇄ подсистема видео (архив)HLS поверх HTTP
Абонентский терминал ⇄ сервер телематикиWialon, EGTS и другие протоколы терминалов
Камера ⇄ подсистема видеоRTSP
Подсистемы между собойAMQP через брокер RabbitMQ
Внешние системы ⇄ ПОREST API, MCP-эндпоинт

Каналы доставки данных реального времени в браузер разделены по типам объектов: позиции ТС, состояния ТС, события, геозоны, камеры, фиксации камер, распознанные государственные регистрационные знаки. Клиент подписывается только на те каналы, которые нужны текущему экрану.

7. Разграничение прав доступа​

Аутентификация пользователей выполняется по паре «электронная почта — пароль» с выдачей маркера доступа JWT; поддерживается вход через внешних поставщиков учётных записей. Пароли хранятся в виде необратимых хеш-значений.

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

Для программного доступа предусмотрены API-токены с ограничением области действия («только чтение» либо «чтение и запись») и сроком действия. Токен действует с правами выдавшего его пользователя и может быть отозван в любой момент.

Изменения ключевых объектов протоколируются с сохранением истории версий.

8. Развёртывание​

ПО РУБИН-Т поставляется в виде набора контейнеров, разворачиваемых средствами контейнеризации Docker на серверном оборудовании под управлением ОС Ubuntu. Образы контейнеров публикуются во внутреннем реестре образов.

Состав разворачиваемых контейнеров:

КонтейнерНазначение
Веб-серверСтатический контент пользовательского интерфейса, обратное проксирование
Сервер приложенийОбработка запросов прикладного API
Фоновый обработчикВыполнение отложенных и периодических задач
Потребители очередейОбработка позиций, кеша позиций, событий и сообщений видеоаналитики (отдельный контейнер на очередь)
Сервер телематикиПриём данных от абонентских терминалов
Подсистема видеонаблюденияОбнаружение и распознавание объектов, запись видеоархива
Брокер сообщенийОбмен данными между подсистемами
Серверы баз данныхПрикладная база, база телематики, база графа УДС
Сервис графа УДСВедение транспортного графа
Контейнеры миграцийПриведение схем баз данных к актуальной версии при обновлении

Обновление выполняется заменой образов контейнеров с предварительным применением миграций схемы базы данных. Горизонтальное масштабирование достигается увеличением числа экземпляров сервера приложений и потребителей очередей.

Порядок развёртывания приведён в разделе Установка.

Версия для печати​

⬇ Скачать PDF