Skip to content

Брокер сообщений

Брокер сообщений - это компонент, используемый OpenLineage для хранения всех получаемых событий. Затем эти события обрабатываются message-consumer в пакетном режиме.

В настоящее время Data.Rentgen поддерживает только Apache Kafka в качестве брокера сообщений.

Почему Kafka?

Другие популярные реализации серверов OpenLineage используют HTTP протокол для получения событий. По нашему опыту, Kafka гораздо лучше подходит для этого случая:

  • Kafka разработана для масштабирования. Если производительности недостаточно, просто добавьте еще один брокер в кластер. Для HTTP серверов это не так просто, поскольку требует балансировки нагрузки на стороне обратного прокси или DNS.
  • Kafka разработана для получения МНОЖЕСТВА событий в секунду, например миллионов, и максимально быстрого сохранения их на диск. Поэтому никакие события не теряются, даже если message-consumer перегружен - события уже сохранены на диск и будут обработаны позже.
  • ETL скрипты в основном запускаются по расписанию. Обычный паттерн - почти никаких событий в течение дня, но огромные всплески каждый полный час (например, в 00:00, 01:00, 03:00, 12:00). Kafka используется как промежуточный буфер, который сглаживает эти всплески.
  • События, хранящиеся в Kafka, могут читаться пакетами, даже если интеграция OpenLineage изначально отправляет их по одному. Пакетная обработка дает в 10 раз лучшую производительность по сравнению с обработкой отдельных событий.
  • HTTP/HTTPS протокол имеет более высокую задержку, чем TCP протокол Kafka. Некоторые интеграции OpenLineage чувствительны к задержкам - например, документация слушателя заданий Flink явно говорит: Если вы заблокируете поток, вызывающий методы execute среды, возможно, будет заблокирован. Чем меньше времени требуется для отправки ответа, тем лучше.

Требования

  • Apache Kafka 3.x. Рекомендуется использовать последнюю версию Kafka.

Настройка

С Docker

  • Установите Docker

  • Установите docker-compose

  • Выполните следующую команду:

$ docker compose --profile broker up -d --wait
...

docker-compose загрузит образ Apache Kafka, создаст контейнер и том, а затем запустит контейнер.

Точка входа образа создаст базу данных, если том пустой. Параметры можно задать через файл .env или секцию environment в docker-compose.yml

docker-compose.yml
1

.env.docker
1

Без Docker

Пожалуйста, следуйте инструкции по установке Apache Kafka.