Настройка на уровне топика

Настройки топиков имеют как сервер по умолчанию, так и опциональное переопределение каждого топика. Если топику не задана конфигурация, то используется сервер по умолчанию. Переопределение можно установить во время создания топика, указав один или несколько параметров –config.

Далее приведены конфигурации на уровне топика. Настройка сервера по умолчанию указана в Server Default Property. Заданное значение по умолчанию для сервера относится только к топику, если у него нет явного переопределения конфигурации.

cleanup.policy – Определение политики хранения старых сегментов журнала. Политика по умолчанию “delete” отбрасывает старые сегменты при достижении их срока хранения или предельного размера. Значение “compact” включает сжатие журнала по топику

  • TYPE – list
  • DEFAULT – delete
  • VALID VALUES – [compact, delete]
  • SERVER DEFAULT PROPERTY –log.cleanup.policy
  • IMPORTANCE – medium

compression.type – Окончательный тип сжатия топика. Конфигурация принимает стандартные кодеки сжатия (“gzip”, “snappy”, “lz4”). Также принимает “uncompressed”, что эквивалентно отсутствию сжатия; и “producer”, что означает сохранение исходного кодека сжатия, установленного поставщиком

  • TYPE – string
  • DEFAULT – producer
  • VALID VALUES – [uncompressed, snappy, lz4, gzip, producer]
  • SERVER DEFAULT PROPERTY – compression.type
  • IMPORTANCE – medium

delete.retention.ms – Время хранения маркированных на удаление данных с целью сжатия топиков журнала. Параметр также дает ограничение на время, в течение которого потребитель должен выполнить чтение, если данные начинаются со смещения 0, для гарантии валидности снапшота заключительного этапа (в противном случае удаление маркированных данных может произойти до завершения их сканирования). Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 86400000
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.cleaner.delete.retention.ms
  • IMPORTANCE – medium

file.delete.delay.ms – Время ожидания перед удалением файла из файловой системы. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 60000
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.segment.delete.delay.ms
  • IMPORTANCE – medium

flush.messages – Интервал принудительной синхронизации данных, записанных в журнал. Например, если параметр установлен на 1, синхронизация выполняется после каждого сообщения; если на значение 5 – после каждых пяти сообщений. Установка данного параметра не рекомендуется, эффективней использовать репликацию для обеспечения устойчивости и возможности фоновой очистки операционной системы. Параметр можно переопределить в базовых настройках каждого топика

  • TYPE – long
  • DEFAULT – 9223372036854775807
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.flush.interval.messages
  • IMPORTANCE – medium

flush.ms – Временной интервал принудительной синхронизации данных, записанных в журнал. Например, если параметр установлен на 1000, синхронизация выполняется по истечении 1000 мс. Установка данного параметра не рекомендуется, эффективней использовать репликацию для обеспечения устойчивости и возможности фоновой очистки операционной системы. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 9223372036854775807
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.flush.interval.ms
  • IMPORTANCE – medium

follower.replication.throttled.replicas – Список реплик, для которых репликация журнала должна дросселироваться на стороне подписчика. Список должен описывать набор реплик в формате “[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…” или можно использовать специальный символ “*” для дросселирования всех реплик в данном топике

  • TYPE – list
  • DEFAULT – “”
  • VALID VALUES – [partitionId],[brokerId]:[partitionId],[brokerId]:…
  • SERVER DEFAULT PROPERTY – follower.replication.throttled.replicas
  • IMPORTANCE – medium

index.interval.bytes – Частота добавления индексной записи в индекс смещения. Значение по умолчанию гарантирует индексацию сообщения примерно каждые 4096 байт. Большее индексирование позволяет потребителям приближаться к более точному положению в журнале, но увеличивает сам индекс. Рекомендуется значение не менять

  • TYPE – int
  • DEFAULT – 4096
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.index.interval.bytes
  • IMPORTANCE – medium

leader.replication.throttled.replicas – Список реплик, для которых репликация журнала должна дросселироваться на стороне лидера. Список должен описывать набор реплик в формате “[PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…” или можно использовать специальный символ “*” для дросселирования всех реплик в данном топике

  • TYPE – list
  • DEFAULT – “”
  • VALID VALUES – [partitionId],[brokerId]:[partitionId],[brokerId]:…
  • SERVER DEFAULT PROPERTY – leader.replication.throttled.replicas
  • IMPORTANCE – medium

max.message.bytes – Наибольший размер пакета данных, разрешенный ADS. При увеличении параметра следует также увеличить размер выборки для потребителей с целью обеспечения возможности получения пакета данных установленного размера

  • TYPE – int
  • DEFAULT – 1000012
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – message.max.bytes
  • IMPORTANCE – medium

message.format.version – Версия формата сообщений, которую брокер использует для добавления данных в журналы. Значение должно быть действительным ApiVersion. Некоторые примеры: “0.8.2”, “0.9.0.0”, “0.10.0”. Необходимо проверить ApiVersion для получения более подробной информации. Установив версию формата сообщений, пользователь подтверждает, что все существующие данные на диске меньше или равны указанной версии. Неправильное задание параметра приводит к тому, что потребители с более старыми версиями получают данные в нечитаемом формате

  • TYPE – string
  • DEFAULT – 1.1-IV0
  • SERVER DEFAULT PROPERTY – log.message.format.version
  • IMPORTANCE – medium

message.timestamp.difference.max.ms – Максимальное допустимое различие между отметкой времени, когда брокер получает сообщение, и отметкой времени, указанной в сообщении. При message.timestamp.type=CreateTime сообщение отклоняется, если разница в отметке времени превышает указанный порог. Конфигурация игнорируется, если message.timestamp.type=LogAppendTime. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 9223372036854775807
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.message.timestamp.difference.max.ms
  • IMPORTANCE – medium

message.timestamp.type – Определить, является ли отметка времени в сообщении временем создания сообщения или временем добавления журнала. Параметр может принимать значение “CreateTime” либо “LogAppendTime”

  • TYPE – string
  • DEFAULT – CreateTime
  • SERVER DEFAULT PROPERTY – log.message.timestamp.type
  • IMPORTANCE – medium

min.cleanable.dirty.ratio – Частота очистки журнала (при условии включенного сжатия). По умолчанию избегается очистка, где сжато более 50% журнала. Это ограничивает максимальное пространство, выделенное в журнале на дубликаты (не более 50% журнала могут занимать дубликаты). Более высокое отношение означает меньшее количество дубликатов и более эффективную очистку, но при этом большее количество потерянного пространства в журнале

  • TYPE – double
  • DEFAULT – 0.5
  • VALID VALUES – [0,…,1]
  • SERVER DEFAULT PROPERTY – log.cleaner.min.cleanable.ratio
  • IMPORTANCE – medium

min.compaction.lag.ms – Минимальное время, в течение которого сообщение остается несжатым в журнале. Применяется только для журналов с функцией сжатия. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 0
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.cleaner.min.compaction.lag.ms
  • IMPORTANCE – medium

min.insync.replicas – При установленном поставщиком подтверждении acks на “all” или “-1”, min.insync.replicas задается на минимальное количество реплик для подтверждения записи. Если этот минимум не может быть удовлетворен, то поставщик задает исключение (NotEnoughReplicas или NotEnoughReplicasAfterAppend). Совместное использование min.insync.replicas и acks обеспечивает более высокую гарантию к устойчивости. Типичным сценарием является создание топика с коэффициентом репликации 3, параметром min.insync.replicas равным 2 и acks установленным на “all”. Это гарантирует, что поставщик задает исключение, если большинство реплик не принимает запись

  • TYPE – int
  • DEFAULT – 1
  • VALID VALUES – [1,…]
  • SERVER DEFAULT PROPERTY – min.insync.replicas
  • IMPORTANCE – medium

preallocate – Предварительное выделение файла на диске при создании нового сегмента журнала

  • TYPE – boolean
  • DEFAULT – false
  • SERVER DEFAULT PROPERTY – log.preallocate
  • IMPORTANCE – medium

retention.bytes – Контроль максимального размера партиции (состоящей из сегментов журнала), который может увеличиваться до момента отказа от старых сегментов журнала с целью освобождения места при использовании политики хранения “delete”. По умолчанию ограничения по размеру нет, есть только ограничение по времени. Поскольку данный предел применяется на уровне партиции, необходимо умножить значение лимита по времени на количество партиций, чтобы вычислить объем хранения топика в байтах

  • TYPE – long
  • DEFAULT – - 1
  • SERVER DEFAULT PROPERTY – log.retention.bytes
  • IMPORTANCE – medium

retention.ms – Контроль максимального времени, в течение которого хранится журнал, прежде чем отбрасываются старые сегменты журнала с целью освобождения места при использовании политики хранения “delete”. Параметр представляет собой SLA о том, как скоро потребители должны читать свои данные. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 604800000
  • SERVER DEFAULT PROPERTY – log.retention.ms
  • IMPORTANCE – medium

segment.bytes – Контроль размера файла сегмента для журнала. Сохранение и очистка файла всегда выполняются единовременно, поэтому больший размер сегмента означает меньшее количество файлов, но при этом менее гранулированный контроль над хранением

  • TYPE – int
  • DEFAULT – 1073741824
  • VALID VALUES – [14,…]
  • SERVER DEFAULT PROPERTY – log.segment.bytes
  • IMPORTANCE – medium

segment.index.bytes – Контроль размера индекса, который отображает смещения в позициях файла. Предварительно индексный файл выделяется и сокращается только после сжатия журнала. Обычно параметр не требует изменений

  • TYPE – int
  • DEFAULT – 10485760
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.index.size.max.bytes
  • IMPORTANCE – medium

segment.jitter.ms – Максимальный рандомный джиттер. Вычитается из запланированного времени сжатия сегмента во избежание проблемы сегментации thundering herd (огромное количество процессов, ждущих события, в то время как требуется только один процесс). Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 0
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.roll.jitter.ms
  • IMPORTANCE – medium

segment.ms – Период времени, после которого ADS выполняет сжатие журнала, даже если файл сегмента не заполнен, с целью обеспечения сохранения или сжатия устаревших данных. Указывается в миллисекундах

  • TYPE – long
  • DEFAULT – 604800000
  • VALID VALUES – [0,…]
  • SERVER DEFAULT PROPERTY – log.roll.ms
  • IMPORTANCE – medium

unclean.leader.election.enable – Указывает, следует ли включить не входящие в набор ISR реплики и установка последнего средства в качестве лидера, даже если это может привести к потере данных

  • TYPE – boolean
  • DEFAULT – false
  • SERVER DEFAULT PROPERTY – unclean.leader.election.enable
  • IMPORTANCE – medium