При локальном развертывании DataLens используется набор контейнеров (докер-образов), каждый из которых выполняет отдельную функцию в системе.
Назначение:
Основная СУБД для хранения метаданных сервиса.
Функции:
- Хранение конфигураций: подключения, чарты, датасеты и т.д.
- Управление пользователями и ролями
- ACL-механизмы (права доступа)
Особенности:
- Используется PostgreSQL 16
- Требуется ручная настройка резервного копирования
- Объем: ~729 MB (чистый образ + ~200 MB при инициализации)
Назначение:
- Фронтенд-приложение (React + SSR)
Функции:
- Работа с интерфейсом: чарты, датасеты, коллекции
- Редактор SQL/DSL-запросов
- Управление объектами и структурами
Особенности:
- Внутренний порт: 8080, пробрасывается на внешний (обычно 8081)
- Использует WebSocket для live-обновлений
- Объем: ~1.02 GB
Назначение:
- Сервис аутентификации и авторизации.
Функции:
- Локальная авторизация (логин/пароль)
- Работа с JWT-токенами
- Управление сессиями пользователей
Особенности:
- Нет поддержки OAuth/SAML
- Объем: ~766 MB
- Основан на .NET Core
Назначение:
- Служба синхронизации метаданных между сервисами.
Функции:
- Контроль версий и миграции схемы
- Валидация конфигураций
- Связь между сервисами
Особенности:
- Использует etcd для блокировок
- Объем: ~1.1 GB
Назначение:
- Оркестрация фоновых задач.
Функции:
- Планировщик задач (например, обновление кэша)
- Очереди выполнения
Особенности:
Назначение:
- Хранение пользовательских настроек и предпочтений.
Функции:
- Персонализация интерфейса
- Хранение истории действий
Особенности:
- gRPC API
- Объем: ~787 MB
- Основан на Python + FastAPI
Назначение:
-Обработка аналитических запросов.
Функции:
- Трансляция DSL → SQL
- Кэширование результатов
- Оптимизация и ускорение выполнения
Особенности:
- Поддержка векторных операций
- Объем: ~1.68 GB
- Использует JVM
Назначение:
-Основной API управления объектами системы.
Функции:
- Управление всеми сущностями: чарты, подключения, роли
- CRUD-операции
- Webhook-интеграции
Особенности:
- Написан на Scala (Akka HTTP)
- Объем: ~1.68 GB
- Образы можно найти на GitHub Container Registry (https://github.com/datalens-tech/datalens)
- Все сервисы взаимодействуют друг с другом через сеть Docker
- Логи удобно просматривать через docker logs <container_name>
- В случае ошибки сервис можно перезапустить через docker restart <container_name>