Skip to content

HTTP2Kafka прокси

Некоторые интеграции OpenLineage поддерживают только HttpTransport, но не KafkaTransport, например Trino.

HTTP → Kafka прокси Data.Rentgen — это опциональный компонент, который предоставляет простой HTTP API для получения событий выполнения OpenLineage в формате JSON и отправки их в топик Kafka как есть, чтобы они могли быть обработаны консьюмером сообщений соответствующим образом.

OpenLineage HttpTransport или KafkaTransport?

Введение http2kafka в цепочку немного снижает производительность:

  • Он парсит все входящие события для целей валидации и маршрутизации. Чем больше событие, тем медленнее парсинг.
  • Протокол HTTP/HTTPS гораздо сложнее TCP протокола Kafka и изначально имеет гораздо большую задержку.

Если интеграция OpenLineage поддерживает и HttpTransport, и KafkaTransport, а Kafka не использует сложную аутентификацию, не поддерживаемую OpenLineage (например, OAUTHBEARER), предпочтительно выбирать KafkaTransport.

Если это невозможно, http2kafka — это правильный выбор.

Установка и запуск

С помощью docker

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

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

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

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

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

    Опции можно задать через файл .env или секцию environment в docker-compose.yml

    docker-compose.yml

    http2kafka: image: mtsrus/data-rentgen:${VERSION:-latest} command: python -m data_rentgen.http2kafka --host 0.0.0.0 --port 8000 restart: unless-stopped env_file: .env.docker ports: - 8002:8000 healthcheck: test: [CMD-SHELL, curl -f http://localhost:8000/monitoring/ping] interval: 30s timeout: 5s retries: 3 start_period: 5s depends_on: broker: condition: service_healthy profiles: - http2kafka - all

    .env.docker

    See Backend -> Consumer -> Configuration documentation

    DATA_RENTGEN__KAFKA__BOOTSTRAP_SERVERS=["broker:9092"] DATA_RENTGEN__KAFKA__SECURITY__TYPE=SCRAM-SHA-256 DATA_RENTGEN__KAFKA__SECURITY__USER=data_rentgen DATA_RENTGEN__KAFKA__SECURITY__PASSWORD=changeme DATA_RENTGEN__KAFKA__COMPRESSION=zstd

  • После запуска и готовности компонента откройте http://localhost:8002/docs.

Без docker

  • Установите Python 3.10 или выше

  • Настройте message-broker

  • Создайте виртуальное окружение

$ python -m venv /some/.venv
...
$ source /some/.venv/activate
  • Установите пакет data-rentgen со следующими дополнительными зависимостями:
$ pip install data-rentgen[http2kafka]
...
  • Запустите процесс http2kafka
$ python -m data_rentgen.http2kafka --host 0.0.0.0 --port 8002
...

Это тонкая обертка вокруг uvicorn cli, опции и команды точно такие же.

См. также

Конфигурация OpenAPI Альтернативы