Нашей команде разработчиков была поставлена задача реализовать портал центра организации дорожного движения, позволяющий в реальном времени отслеживать обстановку на дорогах Ульяновской области.
Отображение общественного транспорта в режиме реального времени и фиксирование нарушений в расписании их движения, поддержка в актуальном состоянии информации о наличии свободных мест на городских парковках, отображение пробок и очагов ДТП, а также ряд других нетривиальных задач - все это необходимо было решить нашей команде.
Обработка полученных данных в реальном времени,
отображение на карте более 3000 объектов мониторинга -
не самая тривиальная задача.
Все начинается с GPS-трекера, установленного на каждое маршрутное транспортное средство. Данные с них попадают к нам на микросервис, реализующий поддержку EGTS, Wialon IPS и SOAP протоколов, написанный на NodeJS и способный обрабатывать более 50 тысяч соединений в секунду (было проведено нагрузочное тестирование). Затем данные попадают в очередь RabbitMQ, разбираются и обрабатываются Celery воркерами, после чего передаются на фронтенд по WebSocket's.
С точки зрения архитектуры БД - хранение точек маршрута задача несложная и представляет из себя реализацию двусвязного списка, но т.к. Нам необходимо всегда иметь возможность узнать следующую ближайшую точку, уметь строить полигон по последним гео-данным, полученным от рессивера, задача приобретает новый характер и становится разновидностью задачи поиск ближайшего соседа.
Для ее решения мы выбрали готовое решение - дополнение PostGIS для СУБД PostgresQL и GeoDjango, что дало возможность эффективно делать запросы к БД. Как следствие уменьшилось время работы алгоритма, реализующего функционал отслеживания маршрутных транспортных средств, вовремя фиксируя их отставание или опережение графика, а также нештатные ситуации (аварии, пробки и т. д.).
Операторы системы в любой момент имеют возможность сделать выгрузку всех замеченных нарушений для принятия дальнейших решений.
Для отображения свободных мест на штрафстоянках и городских парковках, а также поддержания информации о пробках и очагах ДТП, мы использовали сторонние сервисы, успешно интегрировав их в данный проект.
БУДЕМ
НА СВЯЗИ
+7 (991) 115-27-79
support@volhinsoft.ru
Заказать обратный звонок
Расскажите о вашей задачи и мы предложим несколько вариантов ее решения: