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

Модель архитектуры С4

Модель С4 используется для графического изображения архитектуры системы и объяснения декомпозиции системы на элементы. Диаграммы в этой модели организуются по принципу увеличения детализации — от контекста системы до её компонентов. В архитектурных диаграммах каждого сервиса описан уровень 3 (диаграмма компонентов).

Рекомендация

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

Общая архитектура

Общая диаграмма

Диаграммы компонентов

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

Ниже для каждого контейнера представлены отдельные диаграммы компонентов.

Утилита 2GIS CLI

Уровень 3: фокус на утилите 2GIS CLI

Утилита 2GIS CLI загружает артефакты установки и обновления с серверов 2ГИС, сохраняет их в S3-совместимое хранилище или файловую систему и восстанавливает для установки сервисов.

Подробнее о структуре утилиты 2GIS CLI см. в разделе Архитектура утилиты 2GIS CLI.

Сервис лицензий

Уровень 3: фокус на сервисе лицензий

Сервис лицензий обеспечивает доступ к сервисам программного комплекса 2ГИС. Утилита 2GIS CLI запрашивает лицензию на серверах 2ГИС и записывает её в S3-совместимое хранилище или файловую систему. Продукты программного комплекса On-Premise обращаются к сервису лицензий, чтобы проверить наличие лицензии, срок её действия и разрешение на использование конкретных сервисов.

Подробнее о структуре сервиса лицензий:

Сервис API-ключей

Уровень 3: фокус на сервисе API-ключей

Сервис API-ключей состоит из административного веб‑интерфейса для управления API-ключами и бэкенд-сервиса для взаимодействия с другими сервисами через RESTful API. Сервисы комплекса отправляют метаданные запросов в сервис ключей, который читает события из хранилища и ведёт счётчики использования ключей.

Подробнее о структуре сервиса API-ключей:

Сервис сбора статистики

Уровень 3: фокус на сервисе сбора статистики

Сервис сбора статистики состоит из двух компонентов:

  • компонент Stat Receiver принимает от сервисов карт, поиска и навигации данные об использовании API‑ключей и передаёт их в брокер сообщений, откуда они загружаются в аналитическую СУБД;
  • компонент Stat API считывает данные из аналитической СУБД и отображает их на вкладке Статистика в Менеджере Платформы.

Подробнее о структуре сервиса сбора статистики:

API карт

Уровень 3: фокус на API карт

API карт состоит из взаимодействующих компонентов для отображения тайлов в веб- и мобильных приложениях. Tiles API предоставляет векторные, мобильные и растровые тайлы из хранилища. Styles API позволяет загружать пользовательские стили для векторных карт. Прокси для API пробок получает данные о трафике с серверов 2ГИС, которые затем отображаются на карте. Доступ ко всем компонентам контролируется через сервисы лицензий и API-ключей, а сервис сбора статистики отслеживает использование API-ключей.

Подробнее о структуре API карт:

Прокси для API пробок

Уровень 3: фокус на прокси для API пробок

Прокси для API пробок получает данные о пробках с серверов 2ГИС. Конечные приложения и сервисы навигации затем запрашивают эти данные для отображения пробок на карте.

Styles API

Уровень 3: фокус на Styles API

Styles API — сервис для загрузки, хранения и предоставления стилей карт. Менеджер Платформы инициирует загрузку пользовательского стиля и передаёт запрос в Styles API. API карт и Mobile SDK запрашивают данные о стиле у Styles API и используют их для отображения карт в веб‑ и мобильных приложениях.

Уровень 3: фокус на API поиска

Сервисы поиска состоят из Catalog APIs, которые предоставляют RESTful APIs для конечных пользователей, и Search API — поискового движка для обработки запросов. Catalog APIs обращаются к Search API для выполнения поиска. Сервисы взаимодействуют с сервисами лицензий, API-ключей и сбора статистики для контроля доступа.

Подробнее о структуре API поиска:

API навигации

Уровень 3: фокус на API навигации

API навигации используют масштабируемую архитектуру с разделением ролей между компонентами: Navi-Front принимает запросы, Navi-Router проверяет доступ и маршрутизирует запросы, Navi-Back обрабатывает запросы на основе данных от Navi-Castle. Система регионов и правил позволяет распределять нагрузку между несколькими инстансами Navi-Back, каждый из которых обрабатывает свою часть регионов. Navi-Attractor притягивает точки к дорожному графу, а Restrictions API предоставляет информацию об ограничениях на дорогах.

Подробнее о структуре API навигации:

Обработка асинхронных запросов

Уровень 3: фокус на API навигации с асинхронными запросами

Distance Matrix Async API предназначен для расчёта матриц расстояний для большого количества точек в асинхронном режиме. Сервис взаимодействует с Navi-Back через S3-совместимое хранилище и брокер сообщений, используя данные от Navi-Castle для определения подходящего инстанса для обработки запроса. Информация о статусе выполнения запросов хранится в СУБД, а пользователь получает результаты через периодические запросы статуса.

Подробнее о структуре сервисов навигации c Distance Matrix Async API см. в разделе Обработка асинхронных запросов к Distance Matrix API.

Решение задачи коммивояжёра

Уровень 3: фокус на API навигации с решением задачи коммивояжёра

Для решения задачи коммивояжёра используется сервис TSP API, который состоит из двух компонентов: VRP Task Manager и VRP Solver. Сервис принимает список точек, оптимизирует порядок их обхода и возвращает оптимальный маршрут с учётом расстояний и времени в пути. Взаимодействует с основными сервисами навигации для расчёта матриц расстояний и построения итогового маршрута.

Подробнее о структуре сервисов навигации c TSP API см. в разделе Решение задачи коммивояжёра.

2ГИС Про

Уровень 3: фокус на  Про

2ГИС Про состоит из компонентов Pro UI и Pro Backend (Pro API и assetImporter). Pro API взаимодействует с Elasticsearch для фильтрации, агрегирования и геопоиска, с СУБД для хранения метаданных и пользовательских проектов и с S3-совместимым хранилищем для доступа к подготовленным наборам данных. Пользователи могут работать со встроенными наборами данных или загружать свои данные вручную или через API.

Подробнее о структуре 2ГИС Про:

2ГИС Ситискан

Уровень 3: фокус на  Ситискан

2ГИС Ситискан состоит из мобильного приложения водителя, API для передачи данных, сервиса планирования маршрутов и веб-интерфейса для работы с задачами. CityLens Routes worker обрабатывает события, поступающие из брокера сообщений, анализирует проезды по задачам и отправляет результаты в смежные сервисы. Данные кадров хранятся в S3-совместимом хранилище, информация о задачах — в СУБД, а компоненты взаимодействуют через брокер сообщений.

Подробнее о структуре 2ГИС Ситискан:

Мобильный SDK

Уровень 3: фокус на мобильном SDK

Мобильный SDK получает мобильные тайлы через Tiles API для отображения карты, использует RESTful APIs сервисов поиска для реализации поискового движка и APIs навигации для построения маршрутов. Прокси для API пробок предоставляет данные о дорожной ситуации в реальном времени с публичных серверов 2ГИС.

Подробнее о структуре мобильного SDK:

Менеджер Платформы

Уровень 3: фокус на Менеджере Платформы

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

Для аутентификации пользователей используется внешний поставщик OIDC. Для тестирования сервисов на странице Песочницы Менеджер Платформы отправляет запросы к MapGL JS API, сервисам поиска и навигации с использованием API-ключей. Также Менеджер Платформы взаимодействует со Styles API для импорта и хранения пользовательских стилей карт.

Подробнее о структуре Менеджера Платформы: