Описание технической архитектуры
Обозначения и сокращения
ПО — программное обеспечение.
ТС — транспортное средство.
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 |
| Клиент ⇄ прикладное API | HTTP, Protobuf (основной), JSON, GeoJSON, XLSX |
| Клиент ⇄ сервер приложений (реальное время) | WebSocket |
| Клиент ⇄ подсистема видео (реальное время) | WebRTC |
| Клиент ⇄ подсистема видео (архив) | HLS поверх HTTP |
| Абонентский терминал ⇄ сервер телематики | Wialon, EGTS и другие протоколы терминалов |
| Камера ⇄ подсистема видео | RTSP |
| Подсистемы между собой | AMQP через брокер RabbitMQ |
| Внешние системы ⇄ ПО | REST API, MCP-эндпоинт |
Каналы доставки данных реального времени в браузер разделены по типам объектов: позиции ТС, состояния ТС, события, геозоны, камеры, фиксации камер, распознанные государственные регистрационные знаки. Клиент подписывается только на те каналы, которые нужны текущему экрану.
7. Разграничение прав доступа
Аутентификация пользователей выполняется по паре «электронная почта — пароль» с выдачей маркера доступа JWT; поддерживается вход через внешних поставщиков учётных записей. Пароли хранятся в виде необратимых хеш-значений.
Авторизация выполняется на уровне сервера приложений: для каждого типа объектов определены политики доступа, ограничивающие как перечень доступных операций, так и выборку данных, видимую конкретному пользователю.
Для программного доступа предусмотрены API-токены с ограничением области действия («только чтение» либо «чтение и запись») и сроком действия. Токен действует с правами выдавшего его пользователя и может быть отозван в любой момент.
Изменения ключевых объектов протоколируются с сохранением истории версий.
8. Развёртывание
ПО РУБИН-Т поставляется в виде набора контейнеров, разворачиваемых средствами контейнеризации Docker на серверном оборудовании под управлением ОС Ubuntu. Образы контейнеров публикуются во внутреннем реестре образов.
Состав разворачиваемых контейнеров:
| Контейнер | Назначение |
|---|---|
| Веб-сервер | Статический контент пользовательского интерфейса, обратное проксирование |
| Сервер приложений | Обработка запросов прикладного API |
| Фоновый обработчик | Выполнение отложенных и периодических задач |
| Потребители очередей | Обработка позиций, кеша позиций, событий и сообщений видеоаналитики (отдельный контейнер на очередь) |
| Сервер телематики | Приём данных от абонентских терминалов |
| Подсистема видеонаблюдения | Обнаружение и распознавание объектов, запись видеоархива |
| Брокер сообщений | Обмен данными между подсистемами |
| Серверы баз данных | Прикладная база, база телематики, база графа УДС |
| Сервис графа УДС | Ведение транспортного графа |
| Контейнеры миграций | Приведение схем баз данных к актуальной версии при обновлении |
Обновление выполняется заменой образов контейнеров с предварительным применением миграций схемы базы данных. Горизонтальное масштабирование достигается увеличением числа экземпляров сервера приложений и потребителей очередей.
Порядок развёртывания приведён в разделе Установка.
Версия для печати
⬇ Скачать PDF