TQE Documentation portal logo
Помощь
Обновлена 9 ноября 2026 г. в 13:01

Конфигурация ядра

Ядро конфигурируется стандартными средствами Tarantool 3: с помощью обновления файла конфигурации или конфигурации в etcd/Tarantool Config Storage. Подробнее о конфигурации в Tarantool 3 см. здесь

Файл конфигурации ядра в формате YAML называется config.yml и содержит несколько секций. Пример файла конфигурации ядра:

credentials:  # Пользователи, роли и привилегии описаны в разделе  # «Аутентификация и авторизация» → «Уровень ядра (Tarantool)».  # Здесь приведен сокращенный пример.  users:    tqe_producer_user:      password: pass      roles: [tqe_producer]      privileges:        - permissions: [read, write]          spaces: [queue_queue, queue_another_queue, queue_archive_queue, queue_queue_disabled_index]    tqe_consumer_user:      password: pass      roles: [tqe_consumer]      privileges:        - permissions: [read]          spaces: [queue_queue, queue_another_queue, queue_archive_queue, queue_queue_disabled_index]roles_cfg:  roles.tqe-storage:    features:      metrics_enabled: true      validation_enabled: true    queues:      - name: queue      - name: another_queue        deduplication_mode: basic      - name: archive_queue        storage: disk      - name: queue_disabled_index        disabled_filters_by: [routing_key, sharding_key]  roles.tqe-router:    sharding:      routing:        core-1:            buckets:            - 1            - [2,10]        core-2:            buckets:            - [11,20]        core-3:            buckets:            - [21,1000]

Раздел настроек features

Раздел настроек features содержит параметры функций ядра. Настройка выполняется на уровне ролей roles.tqe-storage и roles.tqe-router.

Параметры раздела:

  • metrics_enabled - включает или выключает сбор метрик для методов API ядра. Значение по умолчанию: true.
  • validation_enabled - включает или выключает валидацию сообщений для методов API ядра. Значение по умолчанию: true.

Пример:

roles_cfg:  roles.tqe-storage:    features:      metrics_enabled: true      validation_enabled: false  roles.tqe-router:    features:      metrics_enabled: false      validation_enabled: true

Раздел настроек queues

Раздел настроек queues содержит описание используемых очередей сообщений и их параметры. Настройка выполняется на уровне ролей roles.tqe-storage и roles.tqe-router.

Параметры раздела:

  • name - название очереди сообщений.
  • latency - задержка в миллисекундах между оповещениями подписчика о новых сообщениях. Значение по умолчанию: 1.
  • deduplication_mode - режим обработки отдельных дублированных сообщений и пакетов, их содержащих. Может принимать значения:
    • basic - если публикуемое сообщение или пакет сообщений содержит дубликат, публикация отменяется и система возвращает ошибку дедупликации. Используется по умолчанию.
    • extended - режим расширенной дедупликации.
    • keep_latest - если сообщение является дубликатом, оно публикуется, а ранее опубликованное удаляется.
    • keep_first - если сообщение является дубликатом, оно не публикуется. Вместо этого возвращается id ранее опубликованного сообщения, ошибка не возвращается.
  • poll_max_batch – максимальное количество сообщений в пакете, возвращаемом очередью в ответ на один запрос потребителя. Сообщения сверх этого количества формируют следующий пакет. Значение по умолчанию: 100.
  • poll_min_batch – целевое минимальное количество сообщений, возвращаемых очередью в ответ на один запрос потребителя. Если количество накопленных сообщений ниже poll_min_batch (включая 0), но время, указанное в poll_batch_timeout истекло, пакет отправляется в ответ на запрос потребителя. Значение не может превышать poll_max_batch. Значение по умолчанию: 10.
  • poll_batch_timeout - время в секундах, отводимое на сбор сообщений в пакет после получения первого сообщения. Допускаются дробные значения (разделитель — точка). По истечении времени, указанного в параметре, очередь отправит пакет сообщений, даже если количество сообщений не достигло значения poll_min_batch. Значение по умолчанию: 0.500 (полсекунды).
  • storage – движок хранения очереди. Допустимые значения:
    • memory - используется memtx;
    • disk - используется vinyl. Значение по умолчанию: memory.
  • poll_yield_every – количество сообщений, после обработки которых обработчик передает управление другим задачам. Значение по умолчанию: 512.
  • disabled_filters_by - список отключенных фильтров. Отключение фильтра делает невозможным подписку с фильтрацией по указанному полю. Изменение этого параметра после создания очереди позволяет включить фильтрацию по полю, удалив его из списка, но не позволяет отключить её. Значение по умолчанию: [] (фильтрация включена по всем полям). Возможные значения: routing_key, sharding_key.

Пример:

roles_cfg:  roles.tqe-storage:      queues:        - name: queue1          latency: 1          disabled_filters_by: [sharding_key]          deduplication_mode: basic        - name: queue2

Также существует другой, сокращенный вариант настройки параметров раздела queues:

roles_cfg:  roles.tqe-storage:    queues: ["queue1", "queue2"]

В результате такого запроса создадутся 2 очереди, queue1 и queue2, со значениями остальных параметров по умолчанию.

Расширенная дедупликация

Расширенная дедупликация в TQE(MQ) — это режим, при котором проверяется не только уникальность deduplication_key сообщения, но и полное совпадение его содержимого. Если при одинаковом deduplication_key содержимое сообщений различается, система возвращает ошибку. Такой режим позволяет безопасно работать нескольким независимым публикаторам (основному и резервному): дублирование одинаковых сообщений допускается, а расхождение в данных обнаруживается сразу.

Для включения режима расширенной дедупликации добавьте параметр deduplication_mode: extended в конфигурацию очереди в роль roles.tqe-storage:

roles_cfg:  roles.tqe-storage:    queues:      - name: dedup        deduplication_mode: extended

При включенной расширенной дедупликации обнаружение дубликатов с разным содержимым в одиночном сообщении или при пакетной отправке приводит к ошибке failed to publish messages to tarantool: storage.produce error: id (*): payload may be corrupted.

Настройка статического шардирования

TQE(MQ) использует механизм виртуального шардирования (vshard) для распределения данных. Базовой атомарной единицей в vshard является бакет - логический контейнер данных с уникальным идентификатором. Если два различных сообщения принадлежат одному бакету, то они гарантированно хранятся на одном наборе реплик с ролью storage.

В TQE(MQ) доступен режим статического шардирования — ручной настройки карты распределения бакетов по наборам реплик в кластере. Настройка задается в глобальной конфигурации кластера, после чего необходимо выполнить начальную загрузку. В результате в наборах реплик кластера создаются бакеты в соответствии с заданной картой.

Статическое шардирование настраивается через роль roles.tqe-router в разделе roles_cfg:

  • в разделе sharding.routing укажите карту бакетов в формате replicaset-alias:bucket-range:
    • core-n - псевдоним набора реплик (replica set) из топологии.
    • buckets - диапазон обслуживаемых бакетов. Может принимать массив значений, где каждое - либо id одного бакета, либо диапазон бакетов "от и до".

Пример:

roles_cfg:  roles.tqe-router:    sharding:      routing:        core-1:            buckets:            - 1                # Можно задать идентификатор бакета точечно.            - 2            - [3,300]          # Можно указать диапазон бакетов.        core-2:            buckets:            - [301,500]        core-3:            buckets:            - [501,1000]

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

$ tt replicaset vshard bootstrap .

Настройка оркестратора

Оркестратор — это компонент, который при инициализации разбивает бакеты каждого шарда в кластере на партиции — непрерывные диапазоны бакетов. Каждая партиция уникальна в пределах кластера. Количество партиций задается при установке экземпляра TQE(MQ) и не может быть изменено без его переустановки.

Оркестратор автоматически распределяет партиции между потребителями, если они объединены в группы. В результате один потребитель может обрабатывать несколько партиций, но каждая партиция обрабатывается не более чем одним потребителем. Оркестратор отслеживает состав групп и при подключении или отключении потребителя от группы запускает автоматическую перебалансировку: партиции перераспределяются между оставшимися потребителями в группе. Это исключает ручные перенастройки, предотвращает дублирование сообщений и обеспечивает непрерывность обработки сообщений потребителями.

Если количество партиций меньше количества потребителей в группе, последние подключившиеся потребители не получают партиций. Они находятся в режиме ожидания, пока активные потребители не отключатся и система не проведет перебалансировку.

Оркестратор настраивается для всего кластера на уровне роли roles.tqe-orchestrator:

  • partitions - количество партиций, на которые разделяются все шарды в кластере. Рекомендуется использовать число, кратное общему количеству бакетов кластера.
  • rebalance_timeout - задержка между изменением состава группы и запуском перераспределения партиций (в секундах).
  • sync_timeout - время ожидания активности потребителя (в секундах). Если оркестратор не получает от потребителя запрос синхронизации в течение этого времени, такой потребитель считается неактивным и исключается из группы. Исключенный потребитель может войти в группу повторно.

Пример:

roles:  roles.tqe-orchestrator:    partitions: 10    rebalance_timeout: 20    sync_timeout: 5
Была ли статья полезна?