5. Конфигурация стандартного загрузчика
Все компоненты приложения конфигурируются при помощи файла application.yaml.
Если какой-то компонент не нужен в рамках данного приложения (например необходимость запустить часть компонентов на другой машине), то в настройках указывается enabled: false.
Reader на отдельных JVM (в том числе удаленных) загрузчика могут быть сконфигурированы и связаны с Информационной системой удаленно, через служебную БД.
Такая возможность предусмотрена для случаев отсутствия доступа напрямую поменять конфигурационный файлы приложения на удаленной машине.
Для этого необходимо:
В метаданных загрузчика, с использованием соответствующего REST API (Раздел 2.3.6.5):
создать Deployer, которые будут разворачивать данные Reader;
добавить настройки для Reader (соответствуют секции
readers.[].configобщего файла настройки, без элемента config);создать Reader нужных типов.
Развернуть Deployer с мнемониками из пункта 1 и указанием адреса подключения к основной части загрузчика.
5.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
http-server:
port: ${SERVER_PORT:8081}
metrics:
port: ${METRICS_PORT:9837}
prostore-rest-client:
# В случае если запускается удалённый загрузчик (отсутствует менеджер и/или подключение к локальной БД, из компонент только ридеры)
# то раздел service-database, как и весь prostore-rest-client, не читается, поэтому может быть удалён.
service-database: # простор служебной БД
persistence-datamart: ${PERSISTENCE_DATAMART:persistence}
datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора
host: ${PS_HOST:localhost}
port: ${PS_PORT:9090}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
application-database: # простор прикладной БД
enabled: true
host: ${PS_HOST:localhost}
port: ${PS_PORT:9090}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
spring:
liquibase:
enabled: true
analytics-enabled: false
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: ru.datamart.prostore.jdbc.Driver
url: jdbc:prostore://${prostore-rest-client.service-database.host}:${prostore-rest-client.service-database.port}/${prostore-rest-client.service-database.persistence-datamart}
database-change-log-table: loader_changelog
database-change-log-lock-table: loader_changeloglock
liquibase-schema: ${prostore-rest-client.service-database.persistence-datamart}
default-schema: ${prostore-rest-client.service-database.persistence-datamart}
user: ""
password: ""
auth:
mode: DISABLED # STUDIO/DISABLED
studio: # oauth through datamart studio
url: http://localhost/api/v1/auth_system
username: user
password: passwd
organization_ogrn: ogrn
datamart: datamart
manager:
enabled: true
port: ${MANAGER_PORT:8087}
active:
capture-period: ${ACTIVE_CAPTURE_PERIOD:30s} # период захвата и подтверждения активности
time-to-live: ${ACTIVE_TTL:60s} # время жизни флага активности
scheduler:
sync-interval: 15s # Интервал синхронизации информации по расписаниям
active-task-check-interval: 5s # Задержка для опроса активных заданий на предмет их завершения
queue:
max-poll-attempts: 50 # Максимальное количество попыток захвата записи компонентом. Используется только в случае большой конкуренции
check-interval: 1m # Интервал периодической проверки очереди. В случае недоступности компонента задание возвращается в очередь на обработку.
file-merge:
max-file-count: 1 # Максимальное количество файлов, объединяемых в один запрос загрузки
max-data-size: 100MB
components:
period-send: 60s # Интервал периодической отправки сведений о компонентах deployer
health-check:
publish-period: 1m # Период публикации health check
timeout-active: 5m # Период после которого компонент считается неактивным при отсутствии health-check
cleanup-period: 10m # Период выполнения очистки
retention:
session: 5d # Период хранения сведений о сеансах загрузки
event: 5d # Период хранения событий загрузки
cleanup-period: 1h # Период выполнения очистки
flk:
# Режим ФЛК проверок по умолчанию. Используется, если не переопределен для конкретной таблицы
# Допустимые значения off / warning / skip_string / skip_on_first_error / skip_file / skip_string_except_last
mode: warning
# datamarts: # определяет flk для конкретных датамартов и таблиц
# region777:
# tickets: skip_string
fifo:
enabled: false # Признак включения упорядоченной загрузки. Используется, если не переопределен для конкретной таблицы
# datamarts:
# region777: # определяет fifo для конкретных датамартов и таблиц
# tickets: false
# region36:
# passengers: false
# cars: false
buffer:
enabled: true
port: 9090
retention:
retention-period: 0s # Интервал хранения данных. 0 или отрицательное значение - без ограничений
cleanup-period: 10m # Интервал проведения очистки данных (проверка по retention-period, а так же отложенное удаление файлов)
delayed-deletion: { } # Настройки отложенного удаления. В качестве ключа - код завершения сеанса, значение - интервал, в течении которого выполняется хранение файла
# delayed-deletion:
# 300: 0s
# 301: 1d
data-storage: # файловое хранилище
type: ${DATA_STORAGE_TYPE:dir} # redis|dir|s3|prostore
dir: ${DATA_STORAGE_DIR:/upload/data} # Директория хранения файлов для типа dir
s3:
endpoint: ${S3_ENDPOINT:http://127.0.0.1:9000/}
bucket: ${S3_BUCKET:data} # Имя бакета
region: ${S3_REGION:us-west-2}
access-key: ${S3_USER:minioadmin} # Пользователь, под которым происходит взаимодействие с s3
secret-key: ${S3_PASSWORD:minioadmin} # Пароль пользователя для взаимодействия с s3
chunk-size: 5MB
redis: #клиент к Редису
type: ${REDIS_TYPE:STANDALONE}
connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379}
password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81}
max-pool-size: ${REDIS_MAX_POOL_SIZE:6}
max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24}
max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32}
net-client-options:
tcp-user-timeout-duration: 30s
idle-timeout-duration: 30s
flk: # для rest endpoint используется общий http порт
enabled: true
cleanup-period: 1h
stream:
avro-codec: zstd # zstd/none
# Предельный размер отчета ФЛК, ограничение нужно чтобы не выйти за ограничение heap при формировании отчета в памяти.
# При срабатывании предела в лог приложения выдается предупреждение. Получив отчет лимитированной длины, клиент должен
# понимать что получил не весь отчет об ошибках. При увеличении этого параметра необходимо внимательно следить за утилизацией
# памяти приложения. Размер отчета считается в числе записей, значение <=0 означает неограниченный отчет, такая настройка
# опасна падением приложения по OutOfMemory.
report-max-length: 10_000
conditions:
validation:
validation-timeout: 1h # Тайм-аут выполнения асинхронной проверки
concurrency: 1 # Количество корутин асинхронной валидации
uploader:
enabled: true
check-uniqueness: true # выполнять ли проверку уникальности первичных ключей для операций upload, modify
preferred-mode: ${UPLOAD_MODE:stream} # stream|llw Режим загрузки в prostore
concurrency: ${UPLOAD_CONCURRENCY:100} # Общее количество параллельных задач загрузки
limit:
row-max-count: 500_000
llw:
batch: ${UPLOAD_LLW_BATCH:1000} # Число записей в одной команде upsert/delete в случае llw загрузки.
stream:
batch: ${UPLOAD_STREAM_BATCH:10000} # Число записей в одной команде upsert/delete в случае потоковой загрузки частями.
comparator: # для rest endpoint используется общий http порт
enabled: true
leader:
capture-period: ${ACTIVE_CAPTURE_PERIOD:30s} # период захвата и подтверждения активности
time-to-live: ${ACTIVE_TTL:60s} # время жизни флага активности
queue:
poll-delay: 5s # Интервал тайм-аута (long-polling) получения сообщения из очереди
component-health-check-timeout: 5m # Период после которого компонент считается неактивным при отсутствии health-check
check-period: 1m # Интервал периодической проверки очереди. В случае недоступности компонента задание возвращается в очередь на обработку.
scheduler:
sync-interval: 15s # Интервал синхронизации информации по расписаниям
upload:
poll-delay: 5s # Периодичность опроса активных сеансов загрузки hash данных на предмет завершения
timeout: 1d # Тайм-аут завершения сеансов загрузки hash данных таблиц
correction:
poll-delay: 5s # Периодичность опроса активных сеансов корректирующих загрузок на предмет завершения
timeout: 1d # Тайм-аут завершения сеансов корректирующих загрузок
batch-size: 100 # Размер порции нарезаемых данных для корректирующих загрузок
concurrency: # Ограничения на количество одновременно выполняемых сеансов сверок. Значение <= 0 - без ограничений
upload: 0
awaiting-upload: 0
comparison: 0
stable-differences: 0
correction-exception: 0
correction: 0
retention:
session: 5d # Период хранения сведений о сеансах сверок
event: 5d # Период хранения сведений о событиях сверок
correction-attempt: 5d # Период хранения сведений о попытках корректировок
cleanup-period: 10m # Период выполнения очистки
deployer:
enabled: true
mnemonic: deployer # Уникальный идентификатор деплойера в рамках manager
config-priority: database # database/config
readers: [ ]
# - mnemonic: push-reader # Уникальный идентификатор в рамках manager
# enabled: true
# data-flow-type: push
# source-type: rest # jdbc | rest | folder
# is-mnemonic: local
# config:
# file-size:
# restriction: ${SEND_FILE_SIZE_RESTRICTION:512MB}
# rest-timeout: ${REST_TIMEOUT:60s} # Таймаут обработки запроса. 0 - таймаут отключен
# stream:
# avro-codec: zstd # zstd/none
# validation:
# charset-check-enabled: true # признак выполнения проверки кодировки
# valid-charsets: [ UTF-8, US-ASCII, TIS-620 ] # допустимые кодировки для механизма автоопределения
# # Предельный размер отчета синхронной проверки, ограничение нужно чтобы не выйти за ограничение heap
# # при формировании отчета в памяти. При срабатывании предела в лог приложения выдается предупреждение.
# # Получив отчет лимитированной длины, клиент должен понимать что получил не весь отчет об ошибках. При увеличении
# # этого параметра необходимо внимательно следить за утилизацией памяти приложения. Размер отчета считается в числе
# # записей, значение <=0 означает неограниченный отчет, такая настройка опасна падением приложения по OutOfMemory.
# report-max-length: 10_000
# csv-parser:
# # Символ разделителя значений
# separator: ${CSV_PARSER_SEPARATOR:;}
# # Символ кавычки
# quote-char: ${CSV_PARSER_QUOTE_CHAR:"}
# # Символ экранирования значений
# escape-char: ${CSV_PARSER_ESCAPE_CHAR:'}
# # Настройка интерпретации значений как null. Допустимые значения:
# # - EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;;
# # - EMPTY_QUOTES - пустые кавычки, например ;"";
# # - BOTH - оба варианта
# # - NEITHER - никогда. Пустая строка всегда определяется как пустая строка
# field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS}
dtm-facade: # Компонент поддержки интерфейса dtm-uploader
enabled: true
upload:
host: localhost # Хост доступа к компоненту reader-rest-push
port: 8081 # Порт доступа к компоненту reader-rest-push
datamart: dtm # Датамарт загрузки данных
timeout: 5m # Тайм-аут сеансов загрузки, после которого операция считается невалидной
poll-delay: 1s # Периодичность опроса статусов сеансов загрузки
batch-size: 100MB # Размер пачки данных, загружаемых через метод /data
cleanup-period: 10m # Периодичность выполнения очистки сведений по запросам
retention-period: 3d # Период хранения сведений о загрузках
blob-adapter:
host: blob-adapter # Хост сервиса работы с вложениями - blob-adapter
port: 8081 # Порт сервиса работы с вложениями - blob-adapter
# клиенты
manager-client:
host: 127.0.0.1
port: 8087
buffer-client:
host: 127.0.0.1
port: 9090
chunk-size: 5MB
# Настройки модуля сбора информации о компонентах витрины
component-info:
enabled: true
# Массив датасорсов Prostore, которые нужно использовать для хранения данных персистености
datasource: []
# Схема Prostore
datamart: component_info
# Имя таблицы для записи информации о компоненте
table-name: component_info
# Период попыток создания схемы, при неуспехе
create-table-period: 60s
# Период публикации health-check
publish-period: 60s
# Период после которого компонент считается неактивным при отсутствии health-check
timeout-active: 300s
# Список элементов конфига маскируемых при отправке,
# если указан узловой элемент, то маскируются все вложенные в него элементы
secrets:
- buffer.data-storage.redis.password
- buffer.data-storage.s3.secret-key
- auth.studio.password
retry: # блок настроек повторения операций в случае ошибок
default:
attempts: 3
delay: 5s
manager-client:
attempts: -1 # Отрицательное значение означает без ограничений
delay: 5s
service-db:
attempts: -1
delay: 5s
grpc:
client:
max-inbound-message-size: 10MB
server:
max-inbound-message-size: 10MB
6. Параметры конфигурации
Настройка конфигурации стандартного загрузчика осуществляется путем редактирования параметров настроек в файле application.yml,
где настраиваются секции:
http-server- указывается порт сервера;metrics- настройка получения метрик;prostore-rest-client- блок параметров конфигурирования взаимодействия с Prostore;spring- параметры для определения наименований служебных таблиц liquibase;auth- настройки авторизации через сервис «Студия»;manager- управление процессом загрузки;buffer- настройки сервиса Buffer;flk- настройки сервиса ФЛК;uploader- настройки сервиса Uploader;comparator- настройки сервиса Comparator;deployerнастройки развертывания экземпляров компонентов стандартного загрузчика (кроме manager);dtm-facade- сервис поддержки интерфейса dtm-uploader;manager-client- настройки подключения к сервису Manager;buffer-client- настройки подключения к сервису Buffer;component-info- настройки модуля сбора информации о компонентах витрины;retry- блок настроек повторения операций в случае ошибок;grpc- настройки передачи сообщений по протоколу gRPC.
6.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${SERVER_PORT:8081}
Параметры настроек
port- порт веб-сервера, например:SERVER_PORT:8081.
6.2. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры настроек
port- порт для метрик, напримерMETRICS_PORT:9837.
6.3. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.
Например:
prostore-rest-client:
service-database:
persistence-datamart: ${PERSISTENCE_DATAMART:persistence}
datasource: ${PERSISTENCE_DATASOURCE:}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9090}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
application-database: # простор прикладной БД
enabled: true
host: ${PS_HOST:localhost}
port: ${PS_PORT:9090}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
service-database- Prostore служебной БД;persistence-datamart- датамарт, где будут располагаться таблицы хранения данных, напримерPERSISTENCE_DATAMART:persistence;datasource- массив датасорсов типа ADP;application-database- Prostore прикладной БД;host- адрес Prostore, напримерPS_HOST:localhost;port- порт Prostore, напримерPS_PORT:9090;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
6.4. Секция spring
В секции spring указываются параметры для определения наименований служебных таблиц liquibase.
Например:
spring:
liquibase:
enabled: true
analytics-enabled: false
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: ru.datamart.prostore.jdbc.Driver
url: jdbc:prostore://${prostore-rest-client.service-database.host}:${prostore-rest-client.service-database.port}/${prostore-rest-client.service-database.persistence-datamart}
database-change-log-table: loader_changelog
database-change-log-lock-table: loader_changeloglock
liquibase-schema: ${prostore-rest-client.service-database.persistence-datamart}
default-schema: ${prostore-rest-client.service-database.persistence-datamart}
user: ""
password: ""
Параметры настроек
enabled- признак включения/отключения миграций;analytics-enabled- флаг подключения статистики;change-log- путь к файлам миграций, которые находятся внутри jar;driver-class-name- имя JDBC-драйвера Prostore. Константа, без переопределения.url- адрес подключения к простору в формате JDBC. Переопределять не потребуется, конструируется из параметров подключения к Prostore.database-change-log-table- имя таблицы хранения истории выполненных миграций;database-change-log-lock-table- имя таблицы для блокировок, константа;liquibase-schema- имя датамарта, в которой распалагаются 2 таблицы (database-change-log-table, database-change-log-lock-table)default-schema- имя датамарта для системных таблиц. Так же заполняется из блока конфигурации Prostore.user- имя пользователя Prostore;password- пароль пользователя Prostore.
6.5. Секция auth
В секции auth указываются настройки авторизации через сервис «Студия».
Например:
auth:
mode: DISABLED
studio: # oauth through datamart studio
url: http://localhost/api/v1/auth_system
username: user
password: passwd
organization_ogrn: ogrn
datamart: datamart
Параметры настроек
mode- подключение авторизации через сервис, например:DISABLED;url- метод авторизации;username- имя пользователя, напримерuser;password- пароль пользователя, напримерpasswd;organization_ogrn- ОГРН организации пользователя;datamart- имя таблицы.
6.6. Секция manager
В секции manager указываются настройки управления процессом згрузки.
Например:
manager:
enabled: true
port: ${MANAGER_PORT:8087}
active:
capture-period: ${ACTIVE_CAPTURE_PERIOD:30s} # период захвата и подтверждения активности
time-to-live: ${ACTIVE_TTL:60s} # время жизни флага активности
scheduler:
sync-interval: 15s # Интервал синхронизации информации по расписаниям
active-task-check-interval: 5s # Задержка для опроса активных заданий на предмет их завершения
queue:
max-poll-attempts: 50 # Максимальное количество попыток захвата записи компонентом. Используется только в случае большой конкуренции
check-interval: 1m # Интервал периодической проверки очереди. В случае недоступности компонента задание возвращается в очередь на обработку.
file-merge:
max-file-count: 1 # Максимальное количество файлов, объединяемых в один запрос загрузки
max-data-size: 100MB
components:
period-send: 60s # Интервал периодической отправки сведений о компонентах deployer
health-check:
publish-period: 1m # Период публикации health check
timeout-active: 5m # Период после которого компонент считается неактивным при отсутствии health-check
cleanup-period: 10m # Период выполнения очистки
retention:
session: 5d # Период хранения сведений о сеансах загрузки
event: 5d # Период хранения событий загрузки
cleanup-period: 1h # Период выполнения очистки
flk:
# Режим ФЛК проверок по умолчанию. Используется, если не переопределен для конкретной таблицы
# Допустимые значения off / warning / skip_string / skip_on_first_error / skip_file / skip_string_except_last
mode: warning
# datamarts: # определяет flk для конкретных датамартов и таблиц
# region777:
# tickets: skip_string
fifo:
enabled: false # Признак включения упорядоченной загрузки. Используется, если не переопределен для конкретной таблицы
# datamarts:
# region777: # определяет fifo для конкретных датамартов и таблиц
# tickets: false
# region36:
# passengers: false
# cars: false
Параметры настроек
enabled- состояние менеджера (вкл/выкл);port- порт подключения, например:SERVER_PORT:8081;active- настройки активности менеджера;capture-period- период захвата и подтверждения активности, напримерACTIVE_CAPTURE_PERIOD:30s;time-to-live- время жизни флага активности, напримерAACTIVE_TTL:60s;scheduler- настройки планировщика;sync-interval- интервал синхронизации информации по расписаниям, например15s;active-task-check-interval- Задержка для опроса активных заданий на предмет их завершения, например5s;queue- настройки очереди;max-poll-attempts- максимальное число попыток, например50;check-interval- временной интервал проверки, например1m;file-merge- настройки файлов, объединяемых в один запрос загрузки;max-file-count- максимальное количество файлов, объединяемых в один запрос загрузки, например1;max-data-size- максимальный размер файла с данными, например100MB;components- настройки рассылки состава компонента Deployer;period-send- период отправки, например60s;health-check- настройки health-check, например;publish-period- период публикации health-check, например1m;timeout-active- период после которого компонент считается неактивным при отсутствии health-check, например5m;cleanup-period- период выполнения очистки, например10m;retention- настройки хранения;session- период хранения сведений о сеансах загрузки, например5d;event- период хранения событий загрузки, например5d;cleanup-period- период выполнения очистки, например1h;flk- настройки форматно-логического контроля$mode- режим настройки ФЛК, например:warning. Описание режимов приведено в Раздел 2.3.6.3.1.3.1;fifo- указывается принцип организации данных, при котором первый элемент, поступивший в очередь, обрабатывается или извлекается первым;enabled- состояние FIFO (вкл/выкл).
Примечание
Параллельная загрузка данных в снапшот-таблицы выполняется, если для таблицы отключена упорядоченная загрузка (если fifo.enabled: false в конфигурации или fifo.enabled: true, но значение переопределено для конкретной таблицы)
6.7. Секция buffer
В секции buffer - содержатся настройки сервиса Buffer.
buffer:
enabled: true
port: 9090
retention:
retention-period: 0s # Интервал хранения данных. 0 или отрицательное значение - без ограничений
cleanup-period: 10m # Интервал проведения очистки данных (проверка по retention-period, а так же отложенное удаление файлов)
delayed-deletion: { } # Настройки отложенного удаления. В качестве ключа - код завершения сеанса, значение - интервал, в течении которого выполняется хранение файла
# delayed-deletion:
# 300: 0s
# 301: 1d
data-storage: # файловое хранилище
type: ${DATA_STORAGE_TYPE:dir} # redis|dir|s3|prostore
dir: ${DATA_STORAGE_DIR:/upload/data} # Директория хранения файлов для типа dir
s3:
endpoint: ${S3_ENDPOINT:http://127.0.0.1:9000/}
bucket: ${S3_BUCKET:data} # Имя бакета
region: ${S3_REGION:us-west-2}
access-key: ${S3_USER:minioadmin} # Пользователь, под которым происходит взаимодействие с s3
secret-key: ${S3_PASSWORD:minioadmin} # Пароль пользователя для взаимодействия с s3
chunk-size: 5MB
redis: #клиент к Редису
type: ${REDIS_TYPE:STANDALONE}
connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379}
password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81}
max-pool-size: ${REDIS_MAX_POOL_SIZE:6}
max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24}
max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32}
net-client-options:
tcp-user-timeout-duration: 30s
idle-timeout-duration: 30s
Параметры настроек
enabled- флаг подключения сервиса, напримерtrue;port- порт подключения сервиса, например9090;retention- настройки хранения;retention-period- интервал хранения данных. 0 или отрицательное значение - без ограничений;cleanup-period- период выполнения очистки, например10m;delayed-deletion- Настройки отложенного удаления. В качестве ключа - код завершения сеанса, значение - интервал, в течении которого выполняется хранение файла;data-storage- файловое хранилище;type- тип хранилища, напримерDATA_STORAGE_TYPE:dir(возможные значения: redis / dir / s3);dir- директория хранения файлов для типа dir, напримерDATA_STORAGE_DIR:/upload/data;endpoint- адрес конечной точки, напримерS3_ENDPOINT:http://127.0.0.1:9000/;bucket- имя бакета, напримерS3_BUCKET:dataregion- регион хранилища;access-key- пользователь, под которым происходит взаимодействие с s3, напримерS3_USER:minioadmin;secret-key- пароль пользователя для взаимодействия с s3, напримерS3_PASSWORD:minioadmin;chunk-size- размер чанка, например5MB;type- тип подключения к Redis (STANDALONE/CLUSTER), напримерREDIS_TYPE:STANDALONE;connection-string- указывается список серверов для подключения (перечисление через запятую), напримерREDIS_CONNECTION_STRING:redis://localhost:6379;password- пароль для подключения, напримерREDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81;max-pool-size- устанавливается максимальный размер пула, напримерREDIS_MAX_POOL_SIZE:6;max-pool-waiting- устанавливается максимальный размер пула ожидающих команд, напримерREDIS_MAX_POOL_WAITING:24;max-waiting-handlers- устанавливается максимальный размер ожидающих обработчиков, напримерREDIS_MAX_WAITING_HANDLERS:32;net-client-options- параметры Redis клиента:tcp-user-timeout-duration- таймаут на соединение;idle-timeout-duration- таймаут ожидания ответа от Redis.
6.8. Секция flk
В секции flk - содержатся настройки ФЛК.
flk: # для rest endpoint используется общий http порт
enabled: true
cleanup-period: 1h
stream:
avro-codec: zstd # zstd/none
# Предельный размер отчета ФЛК, ограничение нужно чтобы не выйти за ограничение heap при формировании отчета в памяти.
# При срабатывании предела в лог приложения выдается предупреждение. Получив отчет лимитированной длины, клиент должен
# понимать что получил не весь отчет об ошибках. При увеличении этого параметра необходимо внимательно следить за утилизацией
# памяти приложения. Размер отчета считается в числе записей, значение <=0 означает неограниченный отчет, такая настройка
# опасна падением приложения по OutOfMemory.
report-max-length: 10_000
conditions:
validation:
validation-timeout: 1h # Тайм-аут выполнения асинхронной проверки
concurrency: 1 # Количество корутин асинхронной валидации
Параметры настроек
enabled- флаг подключения сервиса, напримерtrue;cleanup-period- период очистки, например1h;avro-codec- выбор авро-кодека, напримерzstd;report-max-length- максимальная длина отчета, например10_000;validation-timeout- тайм-аут выполнения асинхронной проверки, например1h;concurrency- количество корутин асинхронной валидации, например1.
6.9. Секция uploader
В секции uploader - содержатся настройки сервиса Uploader.
uploader:
enabled: true
check-uniqueness: true # выполнять ли проверку уникальности первичных ключей для операций upload, modify
preferred-mode: ${UPLOAD_MODE:stream} # stream|llw Режим загрузки в prostore
concurrency: ${UPLOAD_CONCURRENCY:100} # Общее количество параллельных задач загрузки
limit:
row-max-count: 500_000
llw:
batch: ${UPLOAD_LLW_BATCH:1000} # Число записей в одной команде upsert/delete в случае llw загрузки.
stream:
batch: ${UPLOAD_STREAM_BATCH:10000} # Число записей в одной команде upsert/delete в случае потоковой загрузки частями.
Параметры настроек
enabled- флаг подключения сервиса, напримерtrue;check-uniqueness- выполнять ли проверку уникальности первичных ключей для операций upload,modify;preferred-mode- режим загрузки в Prostore (stream или llw);concurrency- общее количество параллельных задач загрузки;row-max-count- лимит на максимальное число, например500_000;batch- число записей в одной команде upsert/delete в случае llw загрузки или потоковой загрузки частями.batch- число записей в одной команде upsert/delete в случае ;
6.10. Секция comparator
В секции comparator - содержатся настройки сервиса Comparator.
comparator: # для rest endpoint используется общий http порт
enabled: true
leader:
capture-period: ${ACTIVE_CAPTURE_PERIOD:30s} # период захвата и подтверждения активности
time-to-live: ${ACTIVE_TTL:60s} # время жизни флага активности
queue:
poll-delay: 5s # Интервал тайм-аута (long-polling) получения сообщения из очереди
component-health-check-timeout: 5m # Период после которого компонент считается неактивным при отсутствии health-check
check-period: 1m # Интервал периодической проверки очереди. В случае недоступности компонента задание возвращается в очередь на обработку.
scheduler:
sync-interval: 15s # Интервал синхронизации информации по расписаниям
upload:
poll-delay: 5s # Периодичность опроса активных сеансов загрузки hash данных на предмет завершения
timeout: 1d # Тайм-аут завершения сеансов загрузки hash данных таблиц
correction:
poll-delay: 5s # Периодичность опроса активных сеансов корректирующих загрузок на предмет завершения
timeout: 1d # Тайм-аут завершения сеансов корректирующих загрузок
batch-size: 100 # Размер порции нарезаемых данных для корректирующих загрузок
concurrency: # Ограничения на количество одновременно выполняемых сеансов сверок. Значение <= 0 - без ограничений
upload: 0
awaiting-upload: 0
comparison: 0
stable-differences: 0
correction-exception: 0
correction: 0
retention:
session: 5d # Период хранения сведений о сеансах сверок
event: 5d # Период хранения сведений о событиях сверок
correction-attempt: 5d # Период хранения сведений о попытках корректировок
cleanup-period: 10m # Период выполнения очистки
Параметры настроек
enabled- флаг подключения сервиса, напримерtrue;capture-period- период захвата и подтверждения активности, напримерACTIVE_CAPTURE_PERIOD:30s;time-to-live- время жизни флага активности, напримерACTIVE_TTL:60s;poll-delay- интервал тайм-аута (long-polling) получения сообщения из очереди, например5s;component-health-check-timeout- период после которого компонент считается неактивным при отсутствии health-check, например5m;check-period- интервал периодической проверки очереди. В случае недоступности компонента задание возвращается в очередь на обработку, например1m;sync-interval- интервал синхронизации информации по расписаниям, например1s;poll-delay- дляuploadпериодичность опроса активных сеансов загрузки hash данных на предмет завершения, например5s;timeout- дляuploadтайм-аут завершения сеансов загрузки hash данных таблиц, например1d;poll-delay- дляcorrectionопроса активных сеансов корректирующих загрузок на предмет завершения, например5s;timeout- дляcorrectionзавершения сеансов корректирующих загрузок, например1d;batch-size- размер порции нарезаемых данных для корректирующих загрузок, например100;concurrency- ограничения на количество одновременно выполняемых сеансов сверок. Значение <= 0 - без ограничений;poll-delay- периодичность опроса активных сеансов загрузки hash данных на предмет завершения, например5s;retention- настройки хранения;session- период хранения сведений о сеансах загрузки, например5d;event- период хранения событий загрузки, например5d;correction-attempt- период хранения сведений о попытках корректировок, например5d;cleanup-period- период выполнения очистки, например1h.
6.11. Секция deployer
В секции deployer расположены настройки развертывания экземпляров компонентов стандартного загрузчика (кроме manager).
Например:
deployer:
enabled: true
mnemonic: deployer # Уникальный идентификатор деплойера в рамках manager
config-priority: database # database/config
Параметры настроек
enabled- состояние (вкл/выкл);mnemonic- уникальный идентификатор деплойера в рамках manager, например135;config-priority- , напримерdatabase.
6.12. Секция dtm-facade
В секции dtm-facade расположены настройки сервиса поддержки интерфейса dtm-uploader.
Например:
dtm-facade: # Компонент поддержки интерфейса dtm-uploader
enabled: true
upload:
host: localhost # Хост доступа к компоненту reader-rest-push
port: 8081 # Порт доступа к компоненту reader-rest-push
datamart: dtm # Датамарт загрузки данных
timeout: 5m # Тайм-аут сеансов загрузки, после которого операция считается невалидной
poll-delay: 1s # Периодичность опроса статусов сеансов загрузки
batch-size: 100MB # Размер пачки данных, загружаемых через метод /data
cleanup-period: 10m # Периодичность выполнения очистки сведений по запросам
retention-period: 3d # Период хранения сведений о загрузках
blob-adapter:
host: blob-adapter # Хост сервиса работы с вложениями - blob-adapter
port: 8081 # Порт сервиса работы с вложениями - blob-adapter
Параметры настроек
enabled- состояние (вкл/выкл);host- дляuploadхост доступа к компоненту reader-rest-push, напримерlocalhost;port- дляuploadпорт доступа к компоненту reader-rest-push, например8081;datamart- дляuploadдатамарт загрузки данных, напримерdtm;timeout- дляuploadтайм-аут сеансов загрузки, после которого операция считается невалидной, например5m;poll-delay- дляuploadпериодичность опроса статусов сеансов загрузки, например1s;batch-size- дляuploadразмер пачки данных, загружаемых через метод /data, например100MB;cleanup-period- дляuploadпериодичность выполнения очистки сведений по запросам, например10m;retention-period- дляuploadпериод хранения сведений о загрузках, например3d;host- дляblob-adapterхост сервиса работы с вложениями - blob-adapter, напримерblob-adapter;port- дляuploadпорт сервиса работы с вложениями - blob-adapter, например8081;
6.13. Секция manager-client
В секции manager-client содержит настройки подключения к сервису Manager.
Например:
manager-client:
host: 127.0.0.1
port: 8087
Параметры настроек
host- хост к сервису Manager, например127.0.0.1;port- порт к сервису Manager, например8087.
6.14. Секция buffer-client
В секции buffer-client содержит настройки подключения к сервису Buffer.
Например:
buffer-client:
host: 127.0.0.1
port: 9090
chunk-size: 5MB
Параметры настроек
host- хост к сервису Manager, например127.0.0.1;port- порт к сервису Manager, например8087;chunk-size- размер чанков, например5MB.
6.15. Секция component-info
В секции component-info хранятся настройки компонента сбора информации о компонентах витрины.
Например:
component-info:
enabled: true
# Массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте
datasource: []
# Схема Prostore
datamart: component_info
# Имя таблицы для записи информации о компоненте
table-name: component_info
# Период попыток создания схемы, при неуспехе
create-table-period: 60s
# Период публикации health-check
publish-period: 60s
# Период после которого компонент считается неактивным при отсутствии health-check
timeout-active: 300s
# Список элементов конфига маскируемых при отправке,
# если указан узловой элемент, то маскируются все вложенные в него элементы
secrets:
- buffer.data-storage.redis.password
- buffer.data-storage.s3.secret-key
- auth.studio.password
Параметры настроек
enabled- статус подключения компонента, указывается булево значение;datasource- массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте;datamart- схема Prostore;table-name- имя таблицы для записи информации о компоненте;create-table-period- период попыток создания схемы, при неуспехе, указывается в секундах;publish-period- период публикации health-check, указывается в секундах;timeout-active- период после которого компонент считается неактивным при отсутствии health-check, указывается в секундах;secrets- список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы.
6.16. Секция retry
В секции retry располгается блок настроек повторения операций в случае ошибок.
Например:
retry: # блок настроек повторения операций в случае ошибок
default:
attempts: 3
delay: 5s
manager-client:
attempts: -1
delay: 5s
service-db:
attempts: -1
delay: 5s
Параметры настроек
default- настройки для подключения по умолчанию;manager-client- настройки для подключения к Manager;service-db- настройки для подключения к служебной БД;attempts- количество попыток подключения, отрицательное значение означает без ограничений;delay- время между попытками подключения.
6.17. Секция grpc
В секции grpc содержатся настройки передачи сообщений по протоколу gRPC.
Например:
grpc:
client:
max-inbound-message-size: 10MB
server:
max-inbound-message-size: 10MB
Параметры настроек
max-inbound-message-sizeдляclient- максимальный размер сообщения по протоколу gRPC на стороне клиента;max-inbound-message-sizeдляserver- максимальный размер сообщения по протоколу gRPC на стороне сервера.