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

Архитектура решения

Программный комплекс 2ГИС состоит из набора сервисов, привязанных к его определенной версии.

Для корректной работы сервисов необходима заранее подготовленная инфраструктура.

Архитектура программного комплекса 2ГИС

Как работает комплекс

  1. 2GIS CLI загружает артефакты установки с публичных серверов обновлений 2ГИС:

    • наборы данных, необходимых для установки или обновления сервисов;
    • Docker-образы сервисов.
  2. 2GIS CLI помещает наборы данных в S3-совместимое хранилище (на схеме — File/Object Storage), а Docker-образы — в реестр Docker (на схеме — Docker Registry). Оба хранилища расположены в публичной сети.

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

    Для обеспечения автоматической синхронизации необходимо настроить файервол.

  4. После миграции артефактов:

    • Docker-образы доставляются напрямую в соответствующие им сервисы, расположенные в кластере Kubernetes.
    • Helm-чарты используют загруженные наборы данных для установки/обновления сервисов.
  5. Сервис или его новая версия становится доступным конечным пользователям.

Сетевая инфраструктура

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

Доступ к интернету используют только два компонента:

  • Утилита 2GIS CLI в режимах license и pull.
  • Прокси для API пробок. Размещается в приватной сети, но для работы необходимо настроить файервол или балансировщик нагрузки так, чтобы сервис имел доступ в интернет.

Хранилища данных для сервисов

Для работы некоторых сервисов нужно установить в приватной сети хранилище данных: S3-совместимое хранилище или кластер баз данных. В таблице ниже указано, какие хранилища необходимы для каждого сервиса. См. системные требования к ПО хранилищ.

Можно устанавливать хранилища с помощью пакетных менеджеров или в Docker-контейнере.

СервисХранилище данных
Сервис лицензийS3-совместимое хранилище (например, Ceph)
Сервис API-ключей
  • PostgreSQL,
  • Redis.
API карт (Tiles API)Apache Cassandra
API карт (Tilegen API)
  • S3-совместимое хранилище (например, Ceph),
  • Redis.
API карт (Styles API)
  • S3-совместимое хранилище (например, Ceph),
  • PostgreSQL.
API поиска (Catalog APIs)PostgreSQL с включенным PL/pgSQL и установленными расширениями JsQuery и PostGIS
API навигации (Distance Matrix Async API, TSP API)
  • S3-совместимое хранилище (например, Ceph),
  • PostgreSQL,
  • Apache Kafka.
API навигации (Restrictions API)PostgreSQL с включенным PL/pgSQL
2ГИС Про (Pro API)
  • S3-совместимое хранилище (например, Ceph),
  • PostgreSQL,
  • Apache Kafka,
  • Redis,
  • Elasticsearch.
2ГИС Ситискан (также известен как CityLens)
  • S3-совместимое хранилище (например, Ceph),
  • PostgreSQL с установленным расширением PostGIS,
  • Apache Kafka.
GIS-платформа
  • S3-совместимое хранилище (например, Ceph),
  • PostgreSQL с установленным расширением PostGIS.