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 файл taskflux.settings.json
, который должен лежать в рабочей директории.
Файл не обязателен - если не будет найден, то работа продолжится.
Пример:
{
"NodeId": 1,
"DataDir": "/var/lib/tflux"
}
Аргументы командной строки - это параметры приложения, которые передаются на старте.
Названия аргументов должны начинаться с --
.
Пример:
tflux --node-id 1 --data-dir /var/lib/tflux
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
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 | - |
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
HttpListenAddress | Строка адреса | Адрес, который будет прослушиваться для HTTP запросов | - |
Этот параметр позволяет выставить адрес, который будет прослушиваться для принятия всех HTTP запросов: команды, метрики и т.д. Дополнительно, будут использоваться адреса, указанные в файле конфигурации Kestrel (далее).
Адрес состоит из 2 частей: хост (или IP адрес) и порт. Если порт не указан, то будет использоваться 1606
.
Замечание: если адреса нигде не будут указаны, то и HTTP интерфейс использоваться не будет!
Какой таймаут будет использоваться при отправке запросов между узлами кластера.
Название | Тип | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
ClusterRequestTimeout | Строка длительности | Таймаут для запросов между узлами кластера | 00:00:05 | - |
Порт для прослушивания запросов по нативному TCP протоколу.
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
TcpAdapterListenPort | Целое неотрицательное число | Порт для запросов по TCP протоколу (собственный) | 2606 | - |
Замечание: на данный момент указывается только порт, адрес используется ANY IP
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
TcpAdapterBacklog | Целое неотрицательное число | Размер бэклога (очереди) ожидания клиентов при подключении по TCP протоколу | 128 | - |
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
TcpAdapterIdleTimeout | Строка длительности | Допустимое время простоя TCP клиента без выполнения каких-либо операций | 00:01:00 | - |
Название | Значение | Описание | Значение по умолчанию | Обязателен |
---|---|---|---|---|
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
Для обработки HTTP и gRPC запросов используется сервер Kestrel.
Его конфигурация вынесена отдельно в файл kestrel.settings.json
.
В случае, если этого файла нет, то kestrel будет инициализирован стандартными настройками.
Для логирования используется Serilog.
Изначально он настраивается для логирования в json/stdout.
Уровень можно настроить конфигурацией LogLevel
.
Также установлена библиотека Serilog.Settings.Configuration.
Она позволяет настроить Serilog, используя json файл.
Приложение читает эти настройки из serilog.settings.json
.
Конфигурация в нем переопределяет стандартные настройки.
На данный момент:
- Перечитывание конфигурации не поддерживается - для ее обновления нужно перезапускать приложение
- Неизвестные параметры будут проигнорированы
Сетевой адрес указывается в формате хост[:порт]
, где:
хост
- адрес хоста узла. Может быть, как DNS записью, так и IP адресом;порт
- номер порта узла. Если не указывается, то выставляется порт по умолчанию (зависит от типа параметра).