.. _standard_loader_config: Конфигурация стандартного загрузчика ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Все компоненты приложения конфигурируются при помощи файла ``application.yaml``. Если какой-то компонент не нужен в рамках данного приложения (например необходимость запустить часть компонентов на другой машине), то в настройках указывается ``enabled: false``. Reader на отдельных JVM (в том числе удаленных) загрузчика могут быть сконфигурированы и связаны с Информационной системой удаленно, через служебную БД. Такая возможность предусмотрена для случаев отсутствия доступа напрямую поменять конфигурационный файлы приложения на удаленной машине. Для этого необходимо: 1. В метаданных загрузчика, с использованием соответствующего REST API (:numref:`stloader_api`): - создать Deployer, которые будут разворачивать данные Reader; - добавить настройки для Reader (соответствуют секции ``readers.[].config`` общего файла настройки, без элемента config); - создать Reader нужных типов. 2. Развернуть Deployer с мнемониками из пункта 1 и указанием адреса подключения к основной части загрузчика. .. _standard_loader_application_yml: Пример файла application.yml ################################### В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml 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 Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации стандартного загрузчика осуществляется путем редактирования параметров настроек в файле ``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. Секция http-server #################### В секции ``http-server`` указывается порт веб-сервера. Например: .. code-block:: yaml http-server: port: ${SERVER_PORT:8081} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``SERVER_PORT:8081``. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры настроек** - ``port`` - порт для метрик, например ``METRICS_PORT:9837``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с Prostore. Например: .. code-block:: yaml 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``. Секция spring #################### В секции ``spring`` указываются параметры для определения наименований служебных таблиц liquibase. Например: .. code-block:: yaml 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. Секция auth #################### В секции ``auth`` указываются настройки авторизации через сервис "Студия". Например: .. code-block:: yaml 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`` - имя таблицы. Секция manager #################### В секции ``manager`` указываются настройки управления процессом згрузки. Например: .. code-block:: yaml 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``. Описание режимов приведено в :numref:`flk_mode_settings`; - ``fifo`` - указывается принцип организации данных, при котором первый элемент, поступивший в очередь, обрабатывается или извлекается первым; - ``enabled`` - состояние FIFO (вкл/выкл). .. note:: Параллельная загрузка данных в снапшот-таблицы выполняется, если для таблицы отключена упорядоченная загрузка (если fifo.enabled: false в конфигурации или fifo.enabled: true, но значение переопределено для конкретной таблицы) Секция buffer #################### В секции ``buffer`` - содержатся настройки сервиса Buffer. .. code-block:: yaml 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:data`` - ``region`` - регион хранилища; - ``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. Секция flk #################### В секции ``flk`` - содержатся настройки ФЛК. .. code-block:: yaml 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``. Секция uploader #################### В секции ``uploader`` - содержатся настройки сервиса Uploader. .. code-block:: yaml 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 в случае ; Секция comparator #################### В секции ``comparator`` - содержатся настройки сервиса Comparator. .. code-block:: yaml 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``. Секция deployer #################### В секции ``deployer`` расположены настройки развертывания экземпляров компонентов стандартного загрузчика (кроме manager). Например: .. code-block:: yaml deployer: enabled: true mnemonic: deployer # Уникальный идентификатор деплойера в рамках manager config-priority: database # database/config **Параметры настроек** - ``enabled`` - состояние (вкл/выкл); - ``mnemonic`` - уникальный идентификатор деплойера в рамках manager, например ``135``; - ``config-priority`` - , например ``database``. Секция dtm-facade ############################### В секции ``dtm-facade`` расположены настройки сервиса поддержки интерфейса dtm-uploader. Например: .. code-block:: yaml 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``; Секция manager-client ####################### В секции ``manager-client`` содержит настройки подключения к сервису Manager. Например: .. code-block:: yaml manager-client: host: 127.0.0.1 port: 8087 **Параметры настроек** - ``host`` - хост к сервису Manager, например ``127.0.0.1``; - ``port`` - порт к сервису Manager, например ``8087``. Секция buffer-client ####################### В секции ``buffer-client`` содержит настройки подключения к сервису Buffer. Например: .. code-block:: yaml buffer-client: host: 127.0.0.1 port: 9090 chunk-size: 5MB **Параметры настроек** - ``host`` - хост к сервису Manager, например ``127.0.0.1``; - ``port`` - порт к сервису Manager, например ``8087``; - ``chunk-size`` - размер чанков, например ``5MB``. Секция component-info ######################### В секции ``component-info`` хранятся настройки компонента сбора информации о компонентах витрины. Например: .. code-block:: yaml 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`` - список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы. Секция retry ####################### В секции ``retry`` располгается блок настроек повторения операций в случае ошибок. Например: .. code-block:: yaml 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`` - время между попытками подключения. Секция grpc ####################### В секции ``grpc`` содержатся настройки передачи сообщений по протоколу gRPC. Например: .. code-block:: yaml 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 на стороне сервера.