2. Конфигурация модуля REST-Uploader (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля:
асинхронная загрузка данных из источников, настройка подключения к ядру витрины (секция: prostore), а также другие
настройки необходимые для корректной работы модуля.
2.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
http-server:
port: ${SERVER_PORT:8081}
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
send:
file-size-restriction: ${SEND_FILE_SIZE_RESTRICTION:512}
environment:
# Название окружения
name: ${ENVIRONMENT_NAME:test}
conditions:
# включение ФЛК и поведение при обнаружении ошибок
mode: warning
# период хранения журналов ошибок
save-time: 1d
# путь хранения журналов ошибок на общем диске:
save-path: /tmp/rest-uploader/reports
# путь к хранению правил в Zookeeper
zookeeper-path: rest-uploader/conditions
# таймаут обработки запроса. 0 - таймаут отключен
rest-timeout: 60s
# период жизни группы
save_group_time: 1d
validation:
# таймаут выполнения асинхронной проверки
validation-timeout: 1h
# таймаут получения сообщений из redis
poll-timeout: 30s
# количество корутин асинхронной валидации
max-concurrent-handle: 1
# размер порции вычитки сообщений из redis
batch-size: 1
# признак выполнения проверки кодировки
charset-check-enabled: true
# допустимые кодировки для механизма автоопределения
valid-charsets: [ UTF-8, US-ASCII, TIS-620]
health-check:
# период жизни флага активности
timeout-active: 3m
# период обновления статуса
publish-period: 30s
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
retry-count: 3
retry-base-sleep-time-ms: 1_000
prostore-rest-client:
# Признак использования rest-api для взаимодействия с простором.
enabled: ${PS_REST_CLIENT_ENABLED:true}
host: ${PS_HOST:t5-prostore-01.ru-central1.internal}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
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}
auth:
secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C}
enabled: ${AUTH_ENABLED:true}
access-list-path: rest-uploader/ids
metrics:
port: ${METRICS_PORT:9837}
scheduler:
redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60}
# Настройки парсера csv файлов
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}
backup:
zk-path: ${REST_UPLOADER_BACKUP_ZK_PATH:/${environment.name}/rest-uploader}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
group.id: ${REST_UPLOADER_BACKUP_GROUP_ID:rest-uploader_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
3. Параметры конфигурации
Настройка конфигурации REST-uploader осуществляется путем редактирования параметров настроек в файле
application.yml, где настраиваются секции:
http-server- указывается порт сервера;executor- настраивается размер пула для запросов;send- настраиваются ограничения на размер загружаемого файла;environment- настройки окружения;conditions- включение форматно-логического контроля и поведение при обнаружении ошибок;zookeeper- настройки подключения к Zookeeper;prostore-api-client- блок параметров конфигурирования взаимодействия с Prostore;prostore- настройка подключения к серверу и базе данных Prostore;redis- настройка подключения к Redis;auth- указывается секрет для валидации токенов;metrics- настройка получения метрик;scheduler- настройка таймаута отправки запроса в Redis;csv-parser- настройка парсинга CSV;backup- настройки бекапирования.
3.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${SERVER_PORT:8081}
Параметры настроек
port- порт веб-сервера, например:SERVER_PORT:8081.
3.2. Секция executor
Секция executor предназначена для указания размера пула для запросов.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
Параметры настроек
reader-pool-size- Размер пула для запросов, напримерEXECUTOR_READER_POOL_SIZE:20
3.3. Секция send
В секции send можно настраивать ограничения на размер загружаемого файла.
Например:
send:
file-size-restriction: ${SEND_FILE_SIZE_RESTRICTION:512}
Параметры настроек
file-size-restriction- ограничение на размер загружаемого файла, напримерSEND_FILE_SIZE_RESTRICTION:512.
3.4. Секция environment
Секция environment предназначена для настройки среды окружения.
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- Название окружения, напримерENVIRONMENT_NAME:test.
3.5. Секция conditions
В секции conditions - реализована возможность включения форматно-логического контроля и настройки поведения при
обнаружении ошибок.
Например:
conditions:
mode: warning
save-time: 1d
save-path: /tmp/rest-uploader/reports
zookeeper-path: rest-uploader/conditions
rest-timeout: 60s
save_group_time: 1d
validation:
validation-timeout: 1h
poll-timeout: 30s
max-concurrent-handle: 1
batch-size: 1
charset-check-enabled: true
health-check:
timeout-active: 3m
publish-period: 30s
Параметры настроек
mode- включение ФЛК и поведение при обнаружении ошибок, напримерwarning;save-time- период хранения журналов ошибок, например1d;save-path- путь хранения журналов ошибок на общем диске, например/tmp/rest-uploader/reports;zookeeper-path- путь к хранению правил в Zookeeper, напримерrest-uploader/conditions;rest-timeout- таймаут обработки запроса, например60s,0- таймаут отключен;save_group_time- период жизни группы, например1d;validation-timeout- таймаут выполнения асинхронной проверки, например1h;poll-timeout- таймаут получения сообщений из redis, например30s;max-concurrent-handle- количество корутин асинхронной валидации, например1;batch-size- размер порции вычитки сообщений из redis, например1;charset-check-enabled- признак выполнения проверки кодировки, напримерtrue;timeout-active- период жизни флага активности, например3m;publish-period- период обновления статуса, например30s;
3.6. Секция zookeeper
В секции zookeeper указываются параметры настроек к Zookeeper.
Например:
zookeeper:
connect-string: ${ZOOKEEPER_DS_ADDRESS:localhost}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000}
retry-count: 3
retry-base-sleep-time-ms: 1_000
Параметры настроек
connect-string- Подключение к Zookeeper DS, напримерZOOKEEPER_DS_ADDRESS:localhost;connection-timeout-ms- Zookeeper DS таймаут подключения, напримерZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000;session-timeout-ms- Zookeeper DS таймаут сессии, напримерZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000;retry-count- количество попыток подключения, например3.
3.7. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.
Например:
prostore-rest-client:
host: ${PS_HOST:t5-prostore-01.ru-central1.internal}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
host- адрес Prostore, напримерPS_HOST:t5-prostore-01.ru-central1.internal;port- порт Prostore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
3.8. Секция redis
Секция redis определяет настройки подключения к Redis.
Например:
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}
Параметры настроек
type- тип подключения к Redis (STANDALONE/CLUSTER);connection-string- указывается список серверов для подключения (перечисление через запятую);password- пароль для подключения;max-pool-size- устанавливается максимальный размер пула;max-pool-waiting- устанавливается максимальный размер пула ожидающих команд;max-waiting-handlers- устанавливается максимальный размер ожидающих обработчиков.
3.9. Секция auth
Секция auth служит для хранения секрета валидации токена.
Например:
auth:
secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C}
enabled: ${AUTH_ENABLED:true}
Параметры настроек
secret- cекрет для валидации токенов, напримерAUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C;enabled- включение/отключение аутентификации, напримерAUTH_ENABLED:true.
3.10. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.
3.11. Секция scheduler
Секция scheduler предназначена для настройки таймаута отправки запроса в Redis.
Например:
scheduler:
redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60}
Параметры конфигурации
redis-check-request-timeout- таймаут отправки запроса в Redis, напримерREDIS_CHECK_REQUEST_TIMEOUT:60.
3.12. Секция csv-parser
Внимание
При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser были одинаковы в модулях CSV-Uploader(если используется его UI),REST-Uploader и DATA-Uploader.
Секция csv-parser - настройка парсинга CSV.
Например:
csv-parser:
separator: ${CSV_PARSER_SEPARATOR:;}
quote-char: ${CSV_PARSER_QUOTE_CHAR:"}
escape-char: ${CSV_PARSER_ESCAPE_CHAR:'}
field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS}
Параметры конфигурации
separator- символ разделителя полей, напримерCSV_PARSER_SEPARATOR:;;quote-char- символ кавычки, напримерCSV_PARSER_QUOTE_CHAR:";escape-char- символ экранирования, напримерCSV_PARSER_ESCAPE_CHAR:';field-as-null- способ определения null поля, напримерCSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS.
3.13. Дополнительное описание параметров
Параметр
CSV_PARSER_ESCAPE_CHARработает следующим образом: если символ экранирования и символ кавычки равны", то будет использован RFC4180Parser, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например"поле, ""содержащее двойную кавычку"""будет считано какполе, "содержащее двойную кавычку"). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения «непечатаемых символов».Параметр
CSV_PARSER_FIELD_AS_NULLможет принимать следующие значения:EMPTY_SEPARATORS- два разделителя полей (см. csv-parser/separator) подряд считаются null. Например: строка [aaa,,ccc] содержит значения [«aaa», null, «bbb»], а строка [aaa,»»,ccc] содержит значения [«aaa», «», «bbb»].EMPTY_QUOTES- два «ограничителя строки» (см. csv-parser/escape-char) подряд считаются null. Например: строка [aaa,»»,ccc] содержит значения [«aaa», null, «bbb»], а строка [aaa,,ccc] содержит значения [«aaa», «», «bbb»].BOTH- оба варианта (см.EMPTY_SEPARATORSиEMPTY_QUOTES) считаются null. Например: обе строки [aaa,»»,ccc] и [aaa,,bbb] содержат одинаковое значение [«aaa», null, «bbb»].NEITHER- ни один из вариантов (см.EMPTY_SEPARATORSиEMPTY_QUOTES) не считается null. Например: обе строки [aaa,»»,ccc] и [aaa,,bbb] содержат одинаковое значение [«aaa», «», «bbb»].
3.14. Секция backup
Секция backup предназначена для настроек бекапирования модуля.
Например:
backup:
zk-path: ${COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
kafka:
consumer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
group.id: ${COUNTER_BACKUP_GROUP_ID:counter_provider_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
Параметры настроек
zk-path- путь к корневой ноде zookeeper для бэкапирования, например{COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters};commandTopic- топик команд бэкапирования, например:{BACKUP_COMMAND_TOPIC:adapter.command};backupTopic- топик для отправки забэкапированных данных, например:{BACKUP_TOPIC:adapter.backup};statusTopic- топик для отправки статусов бэкапирования, например:{STATUS_TOPIC:adapter.status}.