2. Конфигурация ПОДД-адаптера - Модуль MPPR (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: получение входящих запросов, их обработка, а также настройка подключения к ядру витрины (секция: prostore), настройка метрик (секция: metrics), а также другие настройки необходимые для корректной работы адаптера.
3. Пример файла application.yml
Приведем типовую структуру файла и возможные настройки ПОДД-адаптера - Модуль MPPR. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
http:
port: ${HTTP_PORT:8085}
environment:
name: ${ENVIRONMENT_NAME:test}
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
log-pool-size: ${EXECUTOR_LOG_POOL_SIZE:20}
send:
channel-size: ${SEND_CHANNEL_SIZE:1}
timeout: ${SEND_TIMEOUT:30}
delete-topic: ${SEND_DELETE_TOPIC:true}
compress: ${SEND_COMPRESS:none}
prostore-rest-client:
# Признак использования rest-api для взаимодействия с простором. Если false - будет использоваться jdbc драйвер
enabled: ${PS_REST_CLIENT_ENABLED:true}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
prostore:
datasource:
subprotocol: ${PS_SUBPROTOCOL:prostore}
driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
maxPoolSize: ${PS_MAX_POOL_SIZE:8}
additional-props:
key: value
kafka:
message-limit: ${PS_MESSAGE_LIMIT:1000}
zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
statusEventTopic:
topic: ${PS_STATUS_EVENT_TOPIC:status.event}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppr-status-event
auto.offset.reset: earliest
enable.auto.commit: false
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
external:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
topic.prefix: ${EXTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
internal:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
topic.prefix: ${INTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
consumer:
query-request:
topic: ${kafka.internal.topic.prefix}mppr.delegate.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
max.poll.interval.ms: 600000
delta-request:
topic: ${kafka.internal.topic.prefix}mppr.delta.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.delta.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
max.poll.interval.ms: 600000
download-data:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.x.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
producer:
query-result: ${kafka.external.topic.prefix}query.rs
query-error: ${kafka.external.topic.prefix}query.err
delta-result: ${kafka.external.topic.prefix}delta.rs
delta-error: ${kafka.external.topic.prefix}delta.err
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
metrics:
port: ${METRICS_PORT:9843}
logging:
scl.delta:
enabled: ${SCL_DELTA_ENABLED:false}
request-response:
delta-request: ${DELTA_REQUEST_LOG_ENABLED:false}
delta-response: ${DELTA_RESPONSE_LOG_ENABLED:false}
query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}
4. Параметры конфигурации
Настройка конфигурации ПОДД-адаптера - Модуль MPPR осуществляется путем редактирования параметров настроек в файле application.yml.
Пример файла application.yml для ПОДД-адаптера - Модуль MPPR можно найти в разделе «2.2. Настройка на состав программных средств» Руководства администратора.
В файле конфигурации ПОДД-адаптера - Модуль MPPR могут быть настроены следующие секции:
http- указывается порт веб-сервера;environment- название окружения (test,prodи т.д.);executor- предназначена для указания размера пула для запросов;send- настраиваются ограничения на размер загружаемого файла;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore. Если false - будет использоваться JDBC-драйвер;prostore- настройка подключения к серверу и базе данных ProStore;kafka- настройки параметров подключения к шине данных Apache Kafka;metrics- настройка получения метрик;logging- настройки журналирования запросов и ответов;
4.1. Секция http
В секции http указывается порт веб-сервера.
Например:
http:
port: ${HTTP_PORT:8085}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8085.
4.2. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod)
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- Название окружения, напримерENVIRONMENT_NAME:test.
4.3. Секция executor
Секция executor предназначена для указания размера пула для чтения Kafka и времени выполнения задач.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
log-pool-size: ${EXECUTOR_LOG_POOL_SIZE:20}
Параметры настроек
reader-pool-size- размер пула для чтения Kafka, напримерEXECUTOR_READER_POOL_SIZE:20;max-execute-time- максимальное время выполнения задачи (сек), напримерEXECUTOR_MAX_EXECUTE_TIME:600;log-pool-size- размер пула используемого для журналирования запросов и ответов, напримерEXECUTOR_LOG_POOL_SIZE:20.
4.4. Секция send
В секции send настраиваются ограничения на размер загружаемого файла.
Например:
send:
channel-size: ${SEND_CHANNEL_SIZE:1}
timeout: ${SEND_TIMEOUT:30}
delete-topic: ${SEND_DELETE_TOPIC:true}
compress: ${SEND_COMPRESS:none}
Параметры настроек
channel-size- размер канала на отправку сообщения, напримерSEND_CHANNEL_SIZE:10;timeout- таймаут вычитывания данных из топика (сек), напримерSEND_TIMEOUT:30delete-topic- удаление внешнего топика после выгрузки, напримерSEND_DELETE_TOPIC:true;compress- сжатие выгружаемых сообщений (none или zstd), напримерSEND_COMPRESS:none.
4.5. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore. Параметр prostore-rest-client.enabled со значением
false позволяет переключить исполнение запросов через JDBC-драйвер.
Например:
prostore-rest-client:
# Признак использования rest-api для взаимодействия с простором. Если false - будет использоваться jdbc драйвер
enabled: ${PS_REST_CLIENT_ENABLED:true}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
Параметры настроек
host- адрес Prostore, напримерPS_HOST:localhost;port- порт Prostore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8.
4.6. Секция prostore
Секция prostore определяет настройки подключения к ProStore.
Например:
prostore:
datasource:
subprotocol: ${PS_SUBPROTOCOL:prostore}
driver: ${PS_DRIVER:ru.datamart.prostore.jdbc.Driver}
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
initialPoolSize: ${PS_INITIAL_POOL_SIZE:5}
maxPoolSize: ${PS_MAX_POOL_SIZE:8}
additional-props:
key: value
kafka:
message-limit: ${PS_MESSAGE_LIMIT:1000}
zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
statusEventTopic:
topic: ${PS_STATUS_EVENT_TOPIC:status.event}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppr-status-event
auto.offset.reset: earliest
enable.auto.commit: false
Параметры настроек
subprotocol- Subprotocol для JDBC, например:PS_SUBPROTOCOL:prostore;driver- имя класса JDBC драйвера, например:PS_DRIVER:ru.datamart.prostore.jdbc.Driver;host- адрес Prostore, например:PS_HOST:t5-prostore-01.ru-central1.internal;port- порт Prostore, например:PS_PORT:9195;initialPoolSize- начальное число подключений к Prostore, например:S_INITIAL_POOL_SIZE:5;maxPoolSize- максимальное число подключений к Prostore, например:PS_MAX_POOL_SIZE:8;message-limit- MESSAGE LIMIT, который будет указан при создании EXTERNAL TABLE, например:PS_MESSAGE_LIMIT:1000;zk-url- подключение к Zookeeper Prostore, например:PS_ZK_KAFKA_URL:t5-ads-01.ru-central1.internal:2181;topic- статусный топик Prostore, например:PS_STATUS_EVENT_TOPIC:status.event;group.id- префикс для топиков агента ПОДД, например:{AGENT_TOPIC_PREFIX:}podd-adapter-mppr-status-event.
4.7. Секция kafka
Секция kafka определяет настройки взаимодействия через ПОДД-адаптер между Поставщиком данных (producer) и Получателем данных (consumer).
В секции kafka собраны настройки параметров подключения к шине данных Apache Kafka.
Например:
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
external:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
topic.prefix: ${EXTERNAL_TOPIC_PREFIX:${agent.topic.prefix}}
internal:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
topic.prefix: ${INTERNAL_TOPIC_PREFIX:${agent.topic.prefix}}
consumer:
query-request:
topic: ${kafka.internal.topic.prefix}mppr.delegate.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
max.poll.interval.ms: 600000
delta-request:
topic: ${kafka.internal.topic.prefix}mppr.delta.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.delta.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
max.poll.interval.ms: 600000
download-data:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}mppr.x.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
max.poll.records: 1
producer:
query-result: ${kafka.external.topic.prefix}query.rs
query-error: ${kafka.external.topic.prefix}query.err
delta-result: ${kafka.external.topic.prefix}delta.rs
delta-error: ${kafka.external.topic.prefix}delta.err
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры конфигурации
topic- префикс для топиков агента ПОДД, напримерAGENT_TOPIC_PREFIX.
4.8. Секция metrics
Секция metrics предназначена для настройки параметров метрик:
Например:
metrics:
port: ${METRICS_PORT:9843}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9843.
4.9. Секция logging
Секция logging предназначена для настройки журналирования запросов и ответов
Например:
logging:
scl.delta:
enabled: ${SCL_DELTA_ENABLED:false}
request-response:
delta-request: ${DELTA_REQUEST_LOG_ENABLED:false}
delta-response: ${DELTA_RESPONSE_LOG_ENABLED:false}
query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}
LOG_FORMAT - Логирование в формате (JSON/TEXT) - указывается в logback.xml