Перейти к основному содержимому
Руководство администратора
How To статьи
Установка и настройка
Компоненты
Руководство пользователя
Начало работы

Архитектура Bercut ESB

Описание компонентов

Архитектура Bercut ESB состоит из следующих основых компонентов:

Preview

Схема взимодействия компонентов архитектуры

Веб-интерфейс

O&M UI (Operations & Maintenance User Interface) — веб‑интерфейс эксплуатации и администрирования Bercut ESB: обеспечивает управление интеграционными потоками (активацию, настройку, мониторинг), визуализацию статусов и метрик. Реализован на стеке React.js + TypeScript с применением RTK Query для работы с API, Ant Design в качестве библиотеки компонентов, React Flow для визуализации графов потоков и сборщика Vite.

ESB Runtime

ESB Runtime - runtime‑контейнер, который объединяет компоненты:

  • API Gateway. Это «входной слой» ESB, через который проходят все внешние HTTP‑запросы. Единая точка входа для внешних потребителей. Выполняет:
    • терминирование SSL (завершение шифрованного соединения на стороне ESB);
    • аутентификацию и авторизацию входящих запросов;
    • маршрутизацию запросов к нужным узлам ESB Core;
    • балансировку нагрузки между узлами ESB Core внутри группы.
  • ESB Core.  Ядро обработки интеграционных потоков. Подробнее в разделе ESB Core.
  • State Collector. Компонент мониторинга на Spring Boot, который периодически собирает статусы маршрутов и метрики со всего Run Time и сохраняет их в State Collector DB для аналитики и алертинга.
  • License Manager. сервис на Spring Boot для проверки лицензий, контроля квот и управления доступом к функционалу Bercut ESB.
  • Configuration Server. Инструмент для создания, редактирования и публикации конфигураций ESB; управляет версиями и деплоем настроек в рантайм. Подробнее в разделе Configuration Server.

ESB Core

ESB Core – масштабируемое ядро исполнения интеграционных потоков. Отвечает за запуск и обработку потоков, загрузку и актуализацию конфигурации от Configuration Server, и обеспечение корректной активации потоков в среде Run Time с учётом зависимостей и текущих состояний.

Основные функции:

  • Получение целевой конфигурации от Configuration Server при старте и в ходе работы.
  • Исполнение интеграционных потоков согласно целевой конфигурации.
  • Периодический опрос Configuration Server (heartbeat) для проверки необходимости обновления конфигурации.
  • Отправка отчета в Configuration Server о результатах применения конфигурационных изменений.
  • Получение информации по соединениям для потоков - если они предусмотрены в активируемом потоке.
  • Получение информации по файлам для потоков - если они задействованы в активируемом потоке.
  • Полноценная активация потока на стороне Run Time с учетом зависимостей, ресурсов и текущих статусов.

Особенности применения:

  • Масштабируется горизонтально: несколько экземпляров ESB Core могут входить в одну Node Group для распределения нагрузки.
  • Не хранит целевое состояние конфигурации – все изменения поступают централизованно через Configuration Server.
  • Конфигурация применяется динамически без необходимости полного перезапуска контейнера (в рамках принятой стратегии обновления).

Configuration Server

Configuration Server – конфигурационный сервер, который хранит целевое состояние групп ESB Core и управляет доставкой конфигураций на узлы.

Основные функции:

  • Хранение целевых конфигураций в Configuration DB (персистентное хранилище).
  • Прием запросов на изменение конфигурации со стороны ESB Design Time.
  • Применение конфигурационных изменений к узлам ESB Core и API Gateway.
  • Предоставление актуальной конфигурации и списка изменений по запросам от ESB Core.
  • Формирование ответов на heartbeat‑запросы (флаг необходимости обновления).

Design time

Design time представляет среду проектирования и управления конфигурациями интеграционных потоков. Ключевые операции в Design Time: создание домена и потока, работа в редакторе, сохранение версии, активация потока

Состав и функции компонентов:

  • Frontend. Пользовательский интерфейс. Состоит из компонентов:
    • Flow Editor - визуальный редактор, где можно собрать интеграционный поток из блоков. Подробнее читайте на странице Редактор потоков.
    • Domain & Flow Table - таблица для просмотра и управления доменами и потоками: отображает список артефактов с метаданными, позволяет фильтровать и сортировать записи, переходить к редактированию или активации, а также видеть иерархию и зависимости потоков.
    • Administrative tab - вкладка с административными инструментами позволяет:
      • посмотреть список "развернутых" (активированных) потоков с получением дополнительной информации:

        • дата развертывания потока;
        • инициирующий транспорт (эндпоинт вызова потока);
        • адрес сервера выполнения потока;
      • посмотреть список сессий (вызовов) потоков, находящихся в режиме "Отладка";

      • проверить статус лицензии ESB.

  • Backend. Содержит базу данных, которая хранит конфигурации, версии и метаданные артефактов.

Компоненты интеграции с внешними сервисами

Компоненты Bercut ESB обеспечивают взаимодействие с внешними системами очередей сообщений и файловыми хранилищами. Реализуют асинхронный обмен данными, буферизацию нагрузки и надёжную передачу сообщений между ESB и внешними сервисами.

  • Kafka - распределённая платформа потоковой передачи событий для высоконагруженной асинхронной передачи сообщений с возможностью повторного чтения и строгой упорядоченностью в партициях.
  • RabbitMQ - брокер сообщений на базе AMQP с гибкой маршрутизацией и гарантированной доставкой: ориентирован на сценарии с очередями задач и сложной схемой распределения сообщений.
  • Файловые хранилища - сервисы для хранения и обмена файлами в интеграционных сценариях: обеспечивают размещение, доступ и управление жизненным циклом файлов (загрузка, скачивание, удаление, архивация) через коннекторы (FTP/SFTP, S3‑совместимые и др.).

Хранение данных

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

Состав и функции компонентов:

  • Loki - система хранения и поиска логов: агрегирует текстовые логи компонентов ESB, поддерживает фильтрацию по лейблам и быстрый поиск по содержимому.

  • PostgreSQL - основная реляционная СУБД: хранит конфигурации, метаданные артефактов, версии потоков, статусы и историю изменений.

  • VictoriaMetrics - хранилище метрик: собирает и хранит временные ряды (нагрузка, latency, throughput, ошибки) для мониторинга и алертинга.

Вспомогательные сервисы

  • KeyCloak - сервис аутентификации и управления учетными данными в ESB: обеспечивает проверку токенов, управление ролями и контроль доступа к API и UI.
  • Grafana - панель визуализации: отображает метрики из VictoriaMetrics, логи из Loki и трейсы из Tempo, позволяет строить дашборды и настраивать оповещения.

Сценарии взаимодействия ESB Core и ESB Configurator

Инициализация конфигурации при старте ESB Core

  1. При запуске ESB Core запрашивает у Configuration Server актуальный набор конфигураций.
  2. Configuration Server возвращает список Configuration Items с указанием версии, на основании которого в ESB Core активируются присутствующие в списке элементы, а отсутствующие, но имеющиеся в Core — деактивируются.
  3. ESB Core применяет конфигурацию и отправляет в ESB Configurator отчет об этом.

Отслеживание изменений (механизм heartbeat)

  1. ESB Core периодически опрашивает Configuration Server (GET‑запрос), передавая идентификатор последней примененной версии.
  2. Configuration Server сообщает, есть ли новые изменения.
  3. При наличии изменений ESB Core выполняет получение и применение обновленной конфигурации по логике Инициализации конфигурации.

Инкрементальное обновление конфигурации

  1. ESB Core отправляет GET‑запрос на получение обновлений
  2. Configuration Server возвращает инкрементальный набор Configuration Items.
  3. ESB Core применяет изменения.