Модель архитектуры С4
Модель С4 используется для графического изображения архитектуры системы и объяснения декомпозиции системы на элементы. Диаграммы в этой модели организуются по принципу увеличения детализации — от контекста системы до её компонентов. В архитектурных диаграммах каждого сервиса описан уровень 3 (диаграмма компонентов).
Рекомендация
Чтобы рассмотреть диаграммы в увеличенном масштабе, кликните по нужному изображению правой кнопкой мыши и выберите Открыть картинку в новой вкладке или Сохранить картинку как.
Общая архитектура
Диаграммы компонентов
Диаграммы компонентов детализируют внутреннее устройство каждого контейнера. Компонент — это логический модуль внутри сервиса, реализующий конкретную задачу. Компоненты взаимодействуют между собой внутри контейнера, а также могут обращаться к компонентам других контейнеров для выполнения задач.
Ниже для каждого контейнера представлены отдельные диаграммы компонентов.
Утилита 2GIS CLI
Утилита 2GIS CLI загружает артефакты установки и обновления с серверов 2ГИС, сохраняет их в S3-совместимое хранилище или файловую систему и восстанавливает для установки сервисов.
Подробнее о структуре утилиты 2GIS CLI см. в разделе Архитектура утилиты 2GIS CLI.
Сервис лицензий
Сервис лицензий обеспечивает доступ к сервисам программного комплекса 2ГИС. Утилита 2GIS CLI запрашивает лицензию на серверах 2ГИС и записывает её в S3-совместимое хранилище или файловую систему. Продукты программного комплекса On-Premise обращаются к сервису лицензий, чтобы проверить наличие лицензии, срок её действия и разрешение на использование конкретных сервисов.
Подробнее о структуре сервиса лицензий:
Сервис API-ключей
Сервис API-ключей состоит из административного веб‑интерфейса для управления API-ключами и бэкенд-сервиса для взаимодействия с другими сервисами через RESTful API. Сервисы комплекса отправляют метаданные запросов в сервис ключей, который читает события из хранилища и ведёт счётчики использования ключей.
Подробнее о структуре сервиса API-ключей:
Сервис сбора статистики
Сервис сбора статистики состоит из двух компонентов:
- компонент Stat Receiver принимает от сервисов карт, поиска и навигации данные об использовании API‑ключей и передаёт их в брокер сообщений, откуда они загружаются в аналитическую СУБД;
- компонент Stat API считывает данные из аналитической СУБД и отображает их на вкладке Статистика в Менеджере Платформы.
Подробнее о структуре сервиса сбора статистики:
API карт
API карт состоит из взаимодействующих компонентов для отображения тайлов в веб- и мобильных приложениях. Tiles API предоставляет векторные, мобильные и растровые тайлы из хранилища. Styles API позволяет загружать пользовательские стили для векторных карт. Прокси для API пробок получает данные о трафике с серверов 2ГИС, которые затем отображаются на карте. Доступ ко всем компонентам контролируется через сервисы лицензий и API-ключей, а сервис сбора статистики отслеживает использование API-ключей.
Подробнее о структуре API карт:
Прокси для API пробок
Прокси для API пробок получает данные о пробках с серверов 2ГИС. Конечные приложения и сервисы навигации затем запрашивают эти данные для отображения пробок на карте.
Styles API
Styles API — сервис для загрузки, хранения и предоставления стилей карт. Менеджер Платформы инициирует загрузку пользовательского стиля и передаёт запрос в Styles API. API карт и Mobile SDK запрашивают данные о стиле у Styles API и используют их для отображения карт в веб‑ и мобильных приложениях.
API поиска
Сервисы поиска состоят из Catalog APIs, которые предоставляют RESTful APIs для конечных пользователей, и Search API — поискового движка для обработки запросов. Catalog APIs обращаются к Search API для выполнения поиска. Сервисы взаимодействуют с сервисами лицензий, API-ключей и сбора статистики для контроля доступа.
Подробнее о структуре API поиска:
API навигации
API навигации используют масштабируемую архитектуру с разделением ролей между компонентами: Navi-Front принимает запросы, Navi-Router проверяет доступ и маршрутизирует запросы, Navi-Back обрабатывает запросы на основе данных от Navi-Castle. Система регионов и правил позволяет распределять нагрузку между несколькими инстансами Navi-Back, каждый из которых обрабатывает свою часть регионов. Navi-Attractor притягивает точки к дорожному графу, а Restrictions API предоставляет информацию об ограничениях на дорогах.
Подробнее о структуре API навигации:
Обработка асинхронных запросов
Distance Matrix Async API предназначен для расчёта матриц расстояний для большого количества точек в асинхронном режиме. Сервис взаимодействует с Navi-Back через S3-совместимое хранилище и брокер сообщений, используя данные от Navi-Castle для определения подходящего инстанса для обработки запроса. Информация о статусе выполнения запросов хранится в СУБД, а пользователь получает результаты через периодические запросы статуса.
Подробнее о структуре сервисов навигации c Distance Matrix Async API см. в разделе Обработка асинхронных запросов к Distance Matrix API.
Решение задачи коммивояжёра
Для решения задачи коммивояжёра используется сервис TSP API, который состоит из двух компонентов: VRP Task Manager и VRP Solver. Сервис принимает список точек, оптимизирует порядок их обхода и возвращает оптимальный маршрут с учётом расстояний и времени в пути. Взаимодействует с основными сервисами навигации для расчёта матриц расстояний и построения итогового маршрута.
Подробнее о структуре сервисов навигации c TSP API см. в разделе Решение задачи коммивояжёра.
2ГИС Про
2ГИС Про состоит из компонентов Pro UI и Pro Backend (Pro API и assetImporter). Pro API взаимодействует с Elasticsearch для фильтрации, агрегирования и геопоиска, с СУБД для хранения метаданных и пользовательских проектов и с S3-совместимым хранилищем для доступа к подготовленным наборам данных. Пользователи могут работать со встроенными наборами данных или загружать свои данные вручную или через API.
Подробнее о структуре 2ГИС Про:
2ГИС Ситискан
2ГИС Ситискан состоит из мобильного приложения водителя, API для передачи данных, сервиса планирования маршрутов и веб-интерфейса для работы с задачами. CityLens Routes worker обрабатывает события, поступающие из брокера сообщений, анализирует проезды по задачам и отправляет результаты в смежные сервисы. Данные кадров хранятся в S3-совместимом хранилище, информация о задачах — в СУБД, а компоненты взаимодействуют через брокер сообщений.
Подробнее о структуре 2ГИС Ситискан:
Мобильный SDK
Мобильный SDK получает мобильные тайлы через Tiles API для отображения карты, использует RESTful APIs сервисов поиска для реализации поискового движка и APIs навигации для построения маршрутов. Прокси для API пробок предоставляет данные о дорожной ситуации в реальном времени с публичных серверов 2ГИС.
Подробнее о структуре мобильного SDK:
Менеджер Платформы
Менеджер Платформы предоставляет интерфейс для проверки статуса работы сервисов, загрузки стилей карты, управления доступами пользователей и локального тестирования ключевых API.
Для аутентификации пользователей используется внешний поставщик OIDC. Для тестирования сервисов на странице Песочницы Менеджер Платформы отправляет запросы к MapGL JS API, сервисам поиска и навигации с использованием API-ключей. Также Менеджер Платформы взаимодействует со Styles API для импорта и хранения пользовательских стилей карт.
Подробнее о структуре Менеджера Платформы: