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

Модель архитектуры С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 предоставляет векторные, мобильные и растровые тайлы из хранилища. Static 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 для импорта и хранения пользовательских стилей карт.

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