Splitter
| Версии в этом релизе | |
|---|---|
| Чарт | registry.trisigma.io/trisigma/charts/trisigma-splitter:0.3.0 |
| Образ | registry.trisigma.io/trisigma/images/trisigma-splitter:0.2.0 |
Назначение
Splitter — сервис, назначающий эксперименты пользователям и разбивающий их на группы. Получает конфигурации экспериментов от Configurator и записывает события распределения в ClickHouse.
Схемы данных
Схемы и таблицы в PostgreSQL создаются автоматически при деплое Splitter. Дополнительная настройка не требуется.
Справочно — основные таблицы:
| Таблица | Назначение |
|---|---|
markers | Конфигурации экспериментов, получаемые от Configurator |
segments | Списки пользователей для таргетирования экспериментов |
marks, user_overrides | Ручные назначения групп пользователям в конкретных экспериментах |
global_exclusion | Исключение пользователей из всех экспериментов |
Деплой
Для установки необходимо заполнить файл с параметрами values-trisigma.yaml
values.yaml содержит значения по умолчанию — не изменяйте его напрямую, а переопределяйте нужные параметры в отдельных файлах.
Параметры приложения
Хранятся в values-trisigma.yaml. Создайте файл из примера: cp values-trisigma.yaml.example values-trisigma.yaml.
Образ сервиса
| Параметр | Описание |
|---|---|
image.repository | Образ сервиса в Container registry |
image.tag | Тег образа сервиса в Container registry |
registry.trisigma.io напрямуюОбразы необходимо предварительно зеркалировать в ваш собственный Container Registry.
Таймзона
| Параметр | Описание |
|---|---|
timezone | Таймзона. IANA tz, например Europe/Moscow |
Миграции
| Параметр | Описание |
|---|---|
postgresqlMigrator.image.repository | Образ мигратора для PostgreSQL миграций в Container registry |
PostgreSQL
| Параметр | Описание |
|---|---|
postgresql.host | Хостнейм для подключения к PostgreSQL БД сервиса |
postgresql.port | Порт для подключения к PostgreSQL БД сервиса |
postgresql.database | Название БД, к которой подключается сервис |
postgresql.user | Учетная запись для подключения к PostgreSQL |
ClickHouse
| Параметр | Описание |
|---|---|
clickhouse.host | Для записи expose-событий (таблица ab_clickstream) |
clickhouse.port | Порт для подключения к ClickHouse БД сервиса (native-протокол) |
clickhouse.user | Учетная запись для подключения к ClickHouse |
clickhouse.tls.enabled | Использовать TLS при подключении к ClickHouse |
Отправка событий
Запись expose-событий сделана асинхронной и батчевой, чтобы не замедлять ответ на запрос группы.
Обработчик кладёт событие в in-memory буфер сплиттера — очередь фиксированн ого размера. Операция мгновенная и неблокирующая: если в буфере есть место, событие принимается и ответ возвращается, не дожидаясь ClickHouse. Если места нет — событие отбрасывается. Буфер хранится в памяти и не переживает рестарт пода.
Параллельно фоновый воркер периодически отправляет накопленные события в ClickHouse одним батчем — по таймеру либо по достижении порога заполнения буфера.
Вставка выполняется через async_insert с подтверждением. При временных
ошибках1 батч переотправляется несколько раз с нарастающим backoff;
если отправка не удалась — события возвращаются в буфер. При нескольких неудачных
отправках подряд срабатывает circuit breaker, и отправка временно
приостанавливается.
| Параметр | Описание |
|---|---|
clickhouseEventsSending.bufferSize | Размер буфера событий в памяти (количество событий) |
clickhouseEventsSending.flushIntervalMs | Период планового сброса буфера в ClickHouse, мс |
clickhouseEventsSending.flushThresholdPercent | Порог заполнения буфера (%), п ри котором сброс запускается досрочно |
clickhouseEventsSending.cbFailureThreshold | Число неудачных отправок подряд, после которого срабатывает circuit breaker |
clickhouseEventsSending.cbRecoveryTimeoutMs | Пауза перед повторной попыткой отправки после срабатывания circuit breaker, мс |
Фоновые задачи (Crons)
| Параметр | Описание |
|---|---|
crons.image.repository | Образ планировщика фоновых задач в Container registry |
| Крон | Описание |
|---|---|
overrides_watcher | Чистит устаревшие и истёкшие ручные назначения групп пользователям |
configs_watcher | Удаляет устаревшие конфигурации экспериментов и сегментов пользователей |
CA-сертификаты
| Параметр | Опи сание |
|---|---|
extraCABundles[].caBundle | CA-сертификат в PEM-формате |
extraCABundles[].configMap | Ссылка на существующий ConfigMap с CA-сертификатом |
Секреты приложения
Секреты в приложение можно передать двумя способами:
задать значения напрямую в secrets-values.yaml —
или указать имя существующего Kubernetes Secret в поле existingSecret в чарте
(например, созданного через Vault или External Secrets Operator).
Создайте файл из примера: cp secrets-values.yaml.example secrets-values.yaml.
PostgreSQL
| Секрет | Ключ | Описание |
|---|---|---|
PGPASSWORD | postgresql.password | Пароль для подключения к PostgreSQL |
ClickHouse
| Секрет |
|---|