#kafka #clickhouse #realtime #debezium
Салют! Ранее рассказывал о проблематике и архитектуре решения. По этой задаче есть обновления:
🔸 Infrastructure deployment
— Это Kafka, Kafka Connect, Zookeeper
— Все сервисы в Docker-контейнерах
— Для Connect готовил custom Dockerfile с добавлением нужных JDBC-драйверов (Clickhouse) и плагинов (JDBC Sink)
— Развернул Clickhouse (пока single node deployment)
🔸 Source Connector (MS SQL)
— Первый источник - MS SQL
— Потребовалось применить конфигурации в самой базе-источнике (CDC configuration)
— Настройка Initial Snapshot
— Очень много операций с Kafka Connect REST API (создал - удалил - обновил конфиг - посмотрел статус и т.д.)
— Трансформация SMT - Topic reroute - топик должен называться так же как и таблица в Clickhouse
🔸 JDBC Sink Connector (Clickhouse)
— Для работы коннектора необходимо применить трансформацию ExtractNewRecordState ко всем событиям
— Очень много работы связано с Data Type Mapping (любой mismatch - ошибка и падение)
— Добавил ко всем топикам метаданные
op,source.ts_ms:ts_ms_source,ts_ms:ts_ms_debezium— Научился использовать secrets в Debezium (
${file:/secrets/clickhouse.properties:url})🔸Clickhouse configuration
— init dbt repository + devcontainer
— Разобрал Debezium Schema Changes topic c помощью jq + yq => получил .yml конфиг для источников dbt
— dbt macros для создания исходных таблиц в цикле согласно схеме данных .yml
— Макрос умеет DROP & CREATE, CREATE OR REPLACE, CREATE IF NOT EXISTS
Это кратко.
Сначала отработал всю схему на 1-2 таблицах, заглядывая в Kafka topics. Потом автоматизировал на 70+ таблиц и полных snapshot данных.
В целом, впечатления от Debezium + Kafka Connect строго положительные. Штука сложная, но функциональная и поставленную задачу решает - я вижу данные в Clickhouse в real time. Продолжу работу.
🔸На очереди:
— Postgres Source Connector
— Оркестрация контейнеров (k8s)
— Гибкое и простое управление конфигурациями Connectors
— Clickhouse Materialized Views для подсчета метрик в real time
💬 Что скажете? Есть вопросы?
Запилить полноценный пост-инструкцию на Хабр?
🌐 @data_apps | Навигация по каналу