Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Подключение Kafka и Clickhouse: различия между версиями

Материал из Платформа Эра. Документации
Нет описания правки
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
Рекомендация более 10 млн строк рассмотрите вариант использования Kafka в архивных таблицах
==== Краткое описание архитектуры Kafka и СУБД Clickhouse  ====
Связка Kafka и ClickHouse широко используется для хранения и обработки больших объёмов статистики, особенно в системах, где данные поступают непрерывно и в реальном времени. Kafka в этом тандеме выполняет роль промежуточного буфера: она собирает события из платформы Эра и надёжно сохраняет их в очередях — топиках. Kafka обеспечивает масштабируемость, высокую отказоустойчивость и гарантированную доставку данных, даже если аналитическая система временно недоступна.


ClickHouse, в свою очередь, используется как высокопроизводительная аналитическая база данных, идеально подходящая для хранения больших массивов информации и молниеносного выполнения SQL-запросов. Благодаря колонковой архитектуре и эффективной компрессии, ClickHouse позволяет выполнять сложную аналитику на миллиардах строк практически мгновенно. В сочетании с Kafka получается гибкая, надёжная и масштабируемая архитектура: данные поступают в реальном времени, хранятся с минимальными затратами и мгновенно доступны для анализа, визуализации и построения отчётов.


Наличие значимых таймаутов в построении отчетов (более 30 секунд)
'''🔗 Apache Kafka'''


Коробочный предельный таймаут построения отчетов 60 секунд.
📌 Официальный сайт: https://kafka.apache.org


Ожидаемый эффект - ожидаемый таймаут не более 1 секунды. Время построения отчетоа не зависит от количества строк в архивных таблицах.
📚 Документация: https://kafka.apache.org/documentation/


Мониторинг ресурсов виден
💻 Репозиторий на GitHub: https://github.com/apache/kafka


Мониторинг сервисов не увидим
'''🔗 ClickHouse'''


Тестировщик??
📌 Официальный сайт: https://clickhouse.com


Поднять Kafka и Clickhouse достпные друг другу
📚 Документация: https://clickhouse.com/docs/en/


В домене создать storage на кафку и clickhouse
💻 Репозиторий на GitHub: https://github.com/ClickHouse/ClickHouse


==== Показания для подключения Kafka и Clickhouse ====


Трейс для поднятия.
* Использование более 10 млн строк в архивных таблицах (классы Archive*);
* Наличие значимых таймаутов при построении отчетов (более 30 секунд);
* Причём коробочный предельный таймаут построения отчетов 60 секунд;


DMS использует Click house
Ожидаемый эффект - таймаут не более 1 секунды. Время построения отчетов не зависит от количества строк в архивных классах (таблицах).


СУБД Clickhouse используется только для хранения архивных таблица статистики. Для хранения остальных классов (таблиц) продолжает использоваться СУБД PostgreSQL.


==== Порядок подключения ====


Создаем класс, где в качестве хранилища используется. Хранилище типа transaction log
===== 1. Разверните Kafka и Clickhouse =====
1.1 Установка Kafka<syntaxhighlight lang="abl">
Установите Java (Kafka требует Java 8 или выше):
bash
sudo apt update
sudo apt install openjdk-11-jre -y


  "storage_mode": "transaction_log"
Скачайте Kafka (замените версию на актуальную, например, 3.6.1):
bash
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz


storage:instance - название storage из шага выше.
Распакуйте архив:
bash
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka
 
Запустите Zookeeper (встроен в Kafka):
bash
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties
 
Запустите Kafka-сервер:
bash
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
 
Готово! Kafka работает на стандартном порту 9092. Для проверки создайте тестовую тему:
bash
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
</syntaxhighlight>2.2 Установка Clickhouse<syntaxhighlight lang="abl">
Добавьте репозиторий ClickHouse:
bash
sudo apt update
sudo apt install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
 
Установите ClickHouse:
bash
sudo apt update
sudo apt install -y clickhouse-server clickhouse-client
 
Запустите сервер:
bash
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
 
Готово! ClickHouse работает на порту 8123 (HTTP) и 9000 (TCP). Проверьте статус:
bash
sudo systemctl status clickhouse-server
 
Для подключения используйте:
bash
clickhouse-client
</syntaxhighlight>
 
===== 2. Создайте хранилища в Платформе =====
[[Файл:Подключение Kafka.png|альт=Подключение Kafka|мини|Подключение Kafka]]
Обратите внимание, что настройка хранения исторических данных в СУБД Clickhouse настраивается для каждого рабочего (продуктового) домена платформы.
 
Для рабочего домена в приложении Настройки, меню Хранилища (storages) добавьте хранилище типа ''kafka''. В качестве имени экземпляра укажите ''model_ch''.
[[Файл:Подключение Clickhouse.png|альт=Подключение Clickhouse|мини|Подключение Clickhouse]]
Для рабочего домена в приложении Настройки, меню Хранилища (storages) добавьте хранилище типа ''clickhouse''. В качестве имени экземпляра также укажите ''model_ch.''
 
В качестве параметров укажите валидную JSON структуру подключения для Kafka и Clickhouse соответственно. Подробное описание подключения к хранилищам по [https://vendor.era-platform.ru/docs/era/latest/entities/domain/storage.html ссылке].
 
===== 3. Подключите продуктовый слой (домен) к созданному хранилищу =====
Переустановите или обновите продуктовый слой рабочего домена.
 
С этого момента все исторические данные (классы) будут храниться в СУБД Clickhouse и соответствующие отчеты и дашборды будут строить статистику на основе данных из СУБД Clickhouse.

Текущая версия от 15:59, 2 апреля 2025

Краткое описание архитектуры Kafka и СУБД Clickhouse

Связка Kafka и ClickHouse широко используется для хранения и обработки больших объёмов статистики, особенно в системах, где данные поступают непрерывно и в реальном времени. Kafka в этом тандеме выполняет роль промежуточного буфера: она собирает события из платформы Эра и надёжно сохраняет их в очередях — топиках. Kafka обеспечивает масштабируемость, высокую отказоустойчивость и гарантированную доставку данных, даже если аналитическая система временно недоступна.

ClickHouse, в свою очередь, используется как высокопроизводительная аналитическая база данных, идеально подходящая для хранения больших массивов информации и молниеносного выполнения SQL-запросов. Благодаря колонковой архитектуре и эффективной компрессии, ClickHouse позволяет выполнять сложную аналитику на миллиардах строк практически мгновенно. В сочетании с Kafka получается гибкая, надёжная и масштабируемая архитектура: данные поступают в реальном времени, хранятся с минимальными затратами и мгновенно доступны для анализа, визуализации и построения отчётов.

🔗 Apache Kafka

📌 Официальный сайт: https://kafka.apache.org

📚 Документация: https://kafka.apache.org/documentation/

💻 Репозиторий на GitHub: https://github.com/apache/kafka

🔗 ClickHouse

📌 Официальный сайт: https://clickhouse.com

📚 Документация: https://clickhouse.com/docs/en/

💻 Репозиторий на GitHub: https://github.com/ClickHouse/ClickHouse

Показания для подключения Kafka и Clickhouse

  • Использование более 10 млн строк в архивных таблицах (классы Archive*);
  • Наличие значимых таймаутов при построении отчетов (более 30 секунд);
  • Причём коробочный предельный таймаут построения отчетов 60 секунд;

Ожидаемый эффект - таймаут не более 1 секунды. Время построения отчетов не зависит от количества строк в архивных классах (таблицах).

СУБД Clickhouse используется только для хранения архивных таблица статистики. Для хранения остальных классов (таблиц) продолжает использоваться СУБД PostgreSQL.

Порядок подключения

1. Разверните Kafka и Clickhouse

1.1 Установка Kafka

Установите Java (Kafka требует Java 8 или выше):
bash
sudo apt update
sudo apt install openjdk-11-jre -y

Скачайте Kafka (замените версию на актуальную, например, 3.6.1):
bash
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz

Распакуйте архив:
bash
tar -xzf kafka_2.13-3.6.1.tgz
mv kafka_2.13-3.6.1 /opt/kafka

Запустите Zookeeper (встроен в Kafka):
bash
/opt/kafka/bin/zookeeper-server-start.sh -daemon /opt/kafka/config/zookeeper.properties

Запустите Kafka-сервер:
bash
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

Готово! Kafka работает на стандартном порту 9092. Для проверки создайте тестовую тему:
bash
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

2.2 Установка Clickhouse

Добавьте репозиторий ClickHouse:
bash
sudo apt update
sudo apt install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list

Установите ClickHouse:
bash
sudo apt update
sudo apt install -y clickhouse-server clickhouse-client

Запустите сервер:
bash
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server

Готово! ClickHouse работает на порту 8123 (HTTP) и 9000 (TCP). Проверьте статус:
bash
sudo systemctl status clickhouse-server

Для подключения используйте:
bash
clickhouse-client
2. Создайте хранилища в Платформе
Подключение Kafka
Подключение Kafka

Обратите внимание, что настройка хранения исторических данных в СУБД Clickhouse настраивается для каждого рабочего (продуктового) домена платформы.

Для рабочего домена в приложении Настройки, меню Хранилища (storages) добавьте хранилище типа kafka. В качестве имени экземпляра укажите model_ch.

Подключение Clickhouse
Подключение Clickhouse

Для рабочего домена в приложении Настройки, меню Хранилища (storages) добавьте хранилище типа clickhouse. В качестве имени экземпляра также укажите model_ch.

В качестве параметров укажите валидную JSON структуру подключения для Kafka и Clickhouse соответственно. Подробное описание подключения к хранилищам по ссылке.

3. Подключите продуктовый слой (домен) к созданному хранилищу

Переустановите или обновите продуктовый слой рабочего домена.

С этого момента все исторические данные (классы) будут храниться в СУБД Clickhouse и соответствующие отчеты и дашборды будут строить статистику на основе данных из СУБД Clickhouse.