5. Конфигурация стандартного загрузчика

Все компоненты приложения конфигурируются при помощи файла application.yaml.

Если какой-то компонент не нужен в рамках данного приложения (например необходимость запустить часть компонентов на другой машине), то в настройках указывается enabled: false.

Reader на отдельных JVM (в том числе удаленных) загрузчика могут быть сконфигурированы и связаны с Информационной системой удаленно, через служебную БД.

Такая возможность предусмотрена для случаев отсутствия доступа напрямую поменять конфигурационный файлы приложения на удаленной машине.

Для этого необходимо:

  1. В метаданных загрузчика, с использованием соответствующего REST API (Раздел 2.3.6.5):

  • создать Deployer, которые будут разворачивать данные Reader;

  • добавить настройки для Reader (соответствуют секции readers.[].config общего файла настройки, без элемента config);

  • создать Reader нужных типов.

  1. Развернуть 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}

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
  # DataSource 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;

  • 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 - источник данных, например PERSISTENCE_DATASOURCE:, по умолчанию пусто, в этом случае берется единственный датасорс из настроек Prostore;

  • application-database - Prostore прикладной БД;

  • host - адрес Prostore, например PS_HOST:localhost;

  • port - порт Prostore, например PS_PORT:9090;

  • max-pool-size - максимальное число подключений к Prostore, например PS_MAX_POOL_SIZE:8.

6.4. Секция 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.5. Секция 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 (вкл/выкл).

6.6. Секция 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: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.

6.7. Секция 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.8. Секция 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.9. Секция 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.10. Секция deployer

В секции deployer расположены настройки развертывания экземпляров компонентов стандартного загрузчика (кроме manager).

Например:

deployer:
  enabled: true
  mnemonic: deployer # Уникальный идентификатор деплойера в рамках manager
  config-priority: database # database/config

Параметры настроек

  • enabled - состояние (вкл/выкл);

  • mnemonic - уникальный идентификатор деплойера в рамках manager, например 135;

  • config-priority - , например database.

6.11. Секция 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.12. Секция manager-client

В секции manager-client содержит настройки подключения к сервису Manager.

Например:

manager-client:
  host: 127.0.0.1
  port: 8087

Параметры настроек

  • host - хост к сервису Manager, например 127.0.0.1;

  • port - порт к сервису Manager, например 8087.

6.13. Секция 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.14. Секция component-info

В секции component-info хранятся настройки компонента сбора информации о компонентах витрины.

Например:

component-info:
  enabled: true
  # DataSource 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 - датасорс Prostore;

  • datamart - схема Prostore;

  • table-name - имя таблицы для записи информации о компоненте;

  • create-table-period - период попыток создания схемы, при неуспехе, указывается в секундах;

  • publish-period - период публикации health-check, указывается в секундах;

  • timeout-active - период после которого компонент считается неактивным при отсутствии health-check, указывается в секундах;

  • secrets - список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы.

6.15. Секция 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.16. Секция 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 на стороне сервера.