Лучшие практики
Сжатие сообщений
Мы настоятельно рекомендуем использовать сжатие для ваших топиков в Kafka. Сжатие позволяет значительно сократить затраты на передачу данных практически без ущерба для производительности. Чтобы узнать больше о сжатии сообщений в Kafka, мы рекомендуем начать с этого руководства.
Ограничения
DEFAULTне поддерживается.- Размер отдельных сообщений по умолчанию ограничен 8 МБ (в несжатом виде) при использовании минимального размера реплики (XS) и 16 МБ (в несжатом виде) для более крупных реплик. Сообщения, превышающие этот предел, будут отклонены с ошибкой. Если вам нужны сообщения большего размера, свяжитесь со службой поддержки.
Семантика доставки
ClickPipes для Kafka обеспечивает семантику доставки at-least-once (одна из наиболее распространённых моделей). Нам будет важно получить от вас обратную связь по семантике доставки через форму обратной связи. Если вам требуется семантика exactly-once, мы рекомендуем использовать наш официальный sink clickhouse-kafka-connect.
Аутентификация
Для источников данных, использующих протокол Apache Kafka, ClickPipes поддерживает аутентификацию SASL/PLAIN с шифрованием TLS, а также SASL/SCRAM-SHA-256 и SASL/SCRAM-SHA-512. В зависимости от конкретного потокового источника (Redpanda, MSK и т. д.) могут поддерживаться все или лишь часть этих механизмов аутентификации — в зависимости от совместимости. Если ваши требования к аутентификации отличаются, пожалуйста, сообщите нам об этом.
Размер выборки Warpstream
ClickPipes полагаются на параметр Kafka max.fetch_bytes для ограничения объёма данных, обрабатываемых на одном узле ClickPipes в любой момент времени. В некоторых случаях
Warpstream не учитывает этот параметр, что может привести к неожиданным сбоям конвейеров. Мы настоятельно рекомендуем установить специальный параметр Warpstream kafkaMaxFetchPartitionBytesUncompressedOverride
на 8 MB (или меньше) при конфигурировании вашего агента Warpstream, чтобы предотвратить сбои ClickPipes.
IAM
Аутентификация IAM для MSK ClickPipe находится в бета-версии.
ClickPipes поддерживает следующие способы аутентификации AWS MSK:
- аутентификация SASL/SCRAM-SHA-512
- аутентификация с использованием учетных данных IAM или доступа на основе ролей
При использовании аутентификации IAM для подключения к брокеру MSK роль IAM должна иметь необходимые разрешения. Ниже приведён пример необходимой политики IAM для API Apache Kafka в MSK:
Настройка доверительных отношений
Если вы аутентифицируетесь в MSK с помощью ARN роли IAM, необходимо добавить доверительные отношения между вашим экземпляром ClickHouse Cloud и этой ролью, чтобы эту роль можно было назначать.
Доступ на основе ролей работает только для экземпляров ClickHouse Cloud, развернутых в AWS.
Пользовательские сертификаты
ClickPipes для Kafka поддерживает загрузку пользовательских сертификатов для брокеров Kafka, которые используют непубличные серверные сертификаты. Также поддерживается загрузка клиентских сертификатов и ключей для аутентификации на основе взаимного TLS (mTLS).
Производительность
Пакетирование
ClickPipes вставляет данные в ClickHouse пакетами. Это делается, чтобы избежать создания слишком большого количества частей в базе данных, что может привести к проблемам с производительностью кластера.
Пакеты вставляются при выполнении одного из следующих условий:
- Размер пакета достиг максимального значения (100 000 строк или 32 МБ на 1 ГБ памяти пода)
- Пакет остается открытым максимально допустимое время (5 секунд)
Задержка
Задержка (определяется как время между публикацией сообщения в Kafka и моментом, когда сообщение становится доступным в ClickHouse) зависит от ряда факторов (например, задержка брокера, сетевая задержка, размер/формат сообщения). Пакетирование, описанное в разделе выше, также влияет на задержку. Мы всегда рекомендуем тестировать ваш конкретный сценарий использования при типичных нагрузках, чтобы определить ожидаемую задержку.
ClickPipes не предоставляет никаких гарантий в отношении задержки. Если у вас есть специфические требования к низкой задержке, пожалуйста, свяжитесь с нами.
Масштабирование
ClickPipes for Kafka спроектирован для горизонтального и вертикального масштабирования. По умолчанию создаётся группа потребителей с одним потребителем. Это можно настроить во время создания ClickPipe или в любой момент позже в Settings -> Advanced Settings -> Scaling.
ClickPipes обеспечивает высокую доступность благодаря архитектуре, распределённой по зонам доступности. Для этого требуется масштабирование как минимум до двух потребителей.
Независимо от количества работающих потребителей, отказоустойчивость обеспечивается архитектурно. Если потребитель или его базовая инфраструктура выходит из строя, ClickPipe автоматически перезапускает потребителя и продолжает обработку сообщений.
Бенчмарки
Ниже приведены некоторые неформальные бенчмарки для ClickPipes for Kafka, которые можно использовать, чтобы получить общее представление о базовой производительности. Важно понимать, что на производительность могут влиять многие факторы, включая размер сообщения, типы данных и формат данных. Ваши результаты могут отличаться, и приведённые здесь данные не являются гарантией фактической производительности.
Подробности тестирования:
- Мы использовали продуктивные сервисы ClickHouse Cloud с достаточным количеством ресурсов, чтобы обеспечить отсутствие узких мест по пропускной способности на стороне ClickHouse при обработке операций вставки.
- Сервис ClickHouse Cloud, кластер Kafka (Confluent Cloud) и ClickPipe работали в одном регионе (
us-east-2). - ClickPipe был сконфигурирован с одной репликой размера L (4 GiB оперативной памяти и 1 vCPU).
- В примере данных были вложенные структуры с сочетанием типов данных
UUID,StringиInt. Другие типы данных, такие какFloat,DecimalиDateTime, могут быть менее производительными. - Не наблюдалось заметной разницы в производительности между сжатыми и несжатыми данными.
| Размер реплики | Размер сообщения | Формат данных | Пропускная способность |
|---|---|---|---|
| Large (L) | 1.6kb | JSON | 63mb/s |
| Large (L) | 1.6kb | Avro | 99mb/s |