Skip to content

Latest commit

 

History

History
241 lines (159 loc) · 17.3 KB

configuration.md

File metadata and controls

241 lines (159 loc) · 17.3 KB
title
Конфигурация

В этой секции описываются способы конфигурирования приложения: поддерживаемые источники конфигурации, параметры, их значения и названия аргументов.

Источники конфигурации

На данный момент поддерживается 3 источника конфигурации.

Каждый параметр имеет свое название, но каждый источник конфигурации определяет свою конвенцию именования:

  • Для JSON файла - Pascal Case
  • Для переменных окружения - Screaming Snake Case
  • Для аргументов командной строки - Kebab Case

Дальше, название каждого параметра будет указано в формате Pascal Case.

Переменные окружения

Параметры передающиеся через переменные окружения имеют префикс TASKFLUX_. Для именования используется стиль Screaming Snake Case.

Пример:

  • TASKFLUX_NODE_ID=1
  • TASKFLUX_DATA_DIR=/var/lib/tflux

JSON файл

Приложение использует json файл taskflux.settings.json, который должен лежать в рабочей директории. Файл не обязателен - если не будет найден, то работа продолжится.

Пример:

{
    "NodeId": 1,
    "DataDir": "/var/lib/tflux"
}

Аргументы командной строки

Аргументы командной строки - это параметры приложения, которые передаются на старте. Названия аргументов должны начинаться с --.

Пример:

tflux --node-id 1 --data-dir /var/lib/tflux

ID узла

Название Значение Описание Значение по умолчанию Обязателен
ClusterNodeId Целое неотрицательное число ID запускаемого узла --- +

Адреса узлов

Этот параметр содержит информацию об адресах других узлов кластера. Формат - строка с адресами узлов, разделенные пробелами

Название Значение Описание Значение по умолчанию Обязателен
ClusterPeers Массив адресов узлов кластера ID запускаемого узла --- +

Для передачи массива каждый источник использует свой способ:

  • JSON файл - JSON массив (пример, "ClusterPeers": "tflux.1:8080 tflux.2:8081")
  • Переменные окружения - каждый элемент передается через индекс в массиве с двойными _ ( пример,TASKFLUX_CLUSTER_PEERS: "tflux.1:8080 tflux.2:8081")
  • Аргументы командной строки - каждый элемент передается через индекс в массиве с двоеточием : ( пример, --cluster-peers="tflux.1:8080 tflux.2:8081")

Каждый индекс соответствует ID узла в кластере. Необходимо передавать и адрес текущего узла.

Порт запросов

Название Значение Описание Значение по умолчанию Обязателен
ClusterListenPort Целое неотрицательное число Порт для приема запросов от других узлов кластера 5000 -

Адрес запросов

Название Значение Описание Значение по умолчанию Обязателен
ClusterListenHost DNS запись или IP адрес Адрес, который будет прослушиваться для запросов от других узлов 0.0.0.0 -

Адрес HTTP запросов

Название Значение Описание Значение по умолчанию Обязателен
HttpListenAddress Строка адреса Адрес, который будет прослушиваться для HTTP запросов -

Этот параметр позволяет выставить адрес, который будет прослушиваться для принятия всех HTTP запросов: команды, метрики и т.д. Дополнительно, будут использоваться адреса, указанные в файле конфигурации Kestrel (далее).

Адрес состоит из 2 частей: хост (или IP адрес) и порт. Если порт не указан, то будет использоваться 1606.

Замечание: если адреса нигде не будут указаны, то и HTTP интерфейс использоваться не будет!

Таймаут запросов кластера

Какой таймаут будет использоваться при отправке запросов между узлами кластера.

Название Тип Описание Значение по умолчанию Обязателен
ClusterRequestTimeout Строка длительности Таймаут для запросов между узлами кластера 00:00:05 -

Порт для TCP запросов от клиентов

Порт для прослушивания запросов по нативному TCP протоколу.

Название Значение Описание Значение по умолчанию Обязателен
TcpAdapterListenPort Целое неотрицательное число Порт для запросов по TCP протоколу (собственный) 2606 -

Замечание: на данный момент указывается только порт, адрес используется ANY IP

Размер очереди подключений TCP клиентов

Название Значение Описание Значение по умолчанию Обязателен
TcpAdapterBacklog Целое неотрицательное число Размер бэклога (очереди) ожидания клиентов при подключении по TCP протоколу 128 -

Время простоя TCP клиентв

Название Значение Описание Значение по умолчанию Обязателен
TcpAdapterIdleTimeout Строка длительности Допустимое время простоя TCP клиента без выполнения каких-либо операций 00:01:00 -

Адрес gRPC запросов

Название Значение Описание Значение по умолчанию Обязателен
GrpcListenAddress Строка адреса Адрес, который будет использоваться для gRPC запросов -

Таймаут клиента

Название Значение Описание Значение по умолчанию Обязателен
ClientRequestTimeout Строка длительности Таймаут ожидания ответа от клиента 00:00:05 -

Адрес для директории с данными

Название Значение Описание Значение по умолчанию Обязателен
DataDirectory Строка пути Путь до директории с данными для работы приложения /var/lib/tflux +

Мягкий предел файла сегмента

Название Тип Описание Значение по умолчанию Обязателен
LogFileSoftLimit Целое неотрицательное число Мягкий предел размера файла сегмента лога в байтах 16777216 (16 Мб) -

Жесткий предел файла сегмента

Название Тип Описание Значение по умолчанию Обязателен
LogFileHardLimit Целое неотрицательное число Жесткий предел размера файла сегмента лога в байтах 33554432 (32 Мб) -

Количество сегментов для создания снапшота

Название Тип Описание Значение по умолчанию Обязателен
SnapshotCreationSegmentsThreshold Целое неотрицательное число Количество закрытых сегментов, которое нужно создать, чтобы создать снашпот 5 -

Этот параметр указывает на минимальное количество полностью закоммиченных сегментов, после достижения которого будет создан снапшот. При этом, покрываемые сегменты будут удалены.

Максимальный размер записей, реплицируемых на узлы кластера

Название Тип Описание Значение по умолчанию Обязателен
ReplicationMaxSendSize Целое неотрицательное число Максимальный размер данных в батах, отправляемых на узлы кластера во время репликации 1048576 (1 Мб) -

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

Параметр нужен, чтобы ограничивать слишком большое значение прочитанных записей из сегментов лога. Чем больше значение, тем больше записей будет отправлено за раз, но и больше потребление памяти, и наоборот.

Замечание: этот параметр отвечает только за чтение записей для репликации, при чтении для записей для остальных случаев (например, восстановления состояния) ограничений пока нет.

Стандартный уровень логирования

Название Тип Описание Значение по умолчанию Обязателен
LogLevel Строка Минимальный уровень логирования по умолчанию Information -

Возможные значения:

  • Verbose
  • Debug
  • Information
  • Warning
  • Error
  • Fatal

Kestrel

Для обработки HTTP и gRPC запросов используется сервер Kestrel. Его конфигурация вынесена отдельно в файл kestrel.settings.json.

В случае, если этого файла нет, то kestrel будет инициализирован стандартными настройками.

Serilog

Для логирования используется Serilog. Изначально он настраивается для логирования в json/stdout. Уровень можно настроить конфигурацией LogLevel.

Также установлена библиотека Serilog.Settings.Configuration. Она позволяет настроить Serilog, используя json файл. Приложение читает эти настройки из serilog.settings.json. Конфигурация в нем переопределяет стандартные настройки.

Дополнительно

Текущие ограничения

На данный момент:

  • Перечитывание конфигурации не поддерживается - для ее обновления нужно перезапускать приложение
  • Неизвестные параметры будут проигнорированы

Формат адреса

Сетевой адрес указывается в формате хост[:порт], где:

  • хост - адрес хоста узла. Может быть, как DNS записью, так и IP адресом;
  • порт - номер порта узла. Если не указывается, то выставляется порт по умолчанию (зависит от типа параметра).