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

Схема взимодействия компонентов архитектуры
Веб-интерфейс
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
- При запуске ESB Core запрашивает у Configuration Server актуальный набор конфигураций.
- Configuration Server возвращает список Configuration Items с указанием версии, на основании которого в ESB Core активируются присутствующие в списке элементы, а отсутствующие, но имеющиеся в Core — деактивируются.
- ESB Core применяет конфигурацию и отправляет в ESB Configurator отчет об этом.
Отслеживание изменений (механизм heartbeat)
- ESB Core периодически опрашивает Configuration Server (GET‑запрос), передавая идентификатор последней примененной версии.
- Configuration Server сообщает, есть ли новые изменения.
- При наличии изменений ESB Core выполняет получение и применение обновленной конфигурации по логике Инициализации конфигурации.
Инкрементальное обновление конфигурации
- ESB Core отправляет GET‑запрос на получение обновлений
- Configuration Server возвращает инкрементальный набор Configuration Items.
- ESB Core применяет изменения.