2. Конфигурация модуля ПОДД-адаптер - Модуль MPPW (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: подключение к Агенту ПОДД, Брокеру сообщений Kafka, Zookeeper, а также настройка подключения к Prostore (секция: prostore), настройка метрик (секция: metrics) и другие настройки необходимые для корректной работы адаптера.
3. Пример файла application.yml
Приведем типовую структуру файла и возможные настройки ПОДД-адаптера - Модуль MPPW. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
tp:
data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
upload-topic-prefix: ${UPLOAD_TOPIC_PREFIX:tmp.w}
upload:
data-topic-prefix: ${AGENT_TOPIC_PREFIX:}
http:
port: ${HTTP_PORT:8090}
environment:
name: ${ENVIRONMENT_NAME:test}
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
scheduler:
delta-apply-request-timeout: ${DELTA_APPLY_REQUEST_TIMEOUT:60}
delta:
# параметр ожидания перед повторной попыткой открытия дельты в случае ошибки
open-delay: ${DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}}s
send:
channel-size: ${SEND_CHANNEL_SIZE:10}
timeout: ${SEND_TIMEOUT:60}
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
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
key:
primary: ${PRIMARY_KEY_NAME:tmp_id}
type: ${PRIMARY_KEY_TYPE:BIGINT}
kafka:
message-limit: ${PS_MESSAGE_LIMIT:1000}
zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
properties:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
internal:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
topic.prefix: ${INTERNAL_TOPIC_PREFIX:${kafka.agent.topic.prefix}}
consumer:
tp-request:
topic: ${kafka.internal.topic.prefix}mppw.tp
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}podd-adapter-mppw-tp
auto.offset.reset: earliest
enable.auto.commit: false
upload-request:
topic: ${kafka.internal.topic.prefix}mppw.upload.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-upload
auto.offset.reset: earliest
enable.auto.commit: false
delta-apply-request:
topic: ${kafka.internal.topic.prefix}mppw.delta.in.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-delta
auto.offset.reset: earliest
enable.auto.commit: false
upload-data:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-data
auto.offset.reset: earliest
enable.auto.commit: false
producer:
tp-result: ${kafka.internal.topic.prefix}mppw.rs
upload-result: ${kafka.internal.topic.prefix}mppw.upload.rs
delta-apply-result: ${kafka.internal.topic.prefix}mppw.delta.in.rs
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
metrics:
port: ${METRICS_PORT:9843}
jet-connector:
use: ${JET_CONNECTOR_USE:false}
kafka-consumer-group-name: ${JET_CONNECTOR_GROUP_NAME:mpww}
kafka-poll-duration-ms: ${JET_POLL_DURATION:200}
kafka-poll-buffer-size: ${JET_POLL_BUFFER:2000}
db-records-buffer-size: ${JET_DB_RECORDS_BUFFER:2000}
4. Параметры конфигурации
Настройка конфигурации ПОДД-адаптера - Модуль MPPW осуществляется путем редактирования параметров настроек в файле application.yml.
Пример файла application.yml для ПОДД-адаптера - Модуль MPPW можно найти в разделе «2.2. Настройка на состав программных средств» Руководства администратора.
В файле конфигурации ПОДД-адаптера - Модуль MPPW могут быть настроены следующие секции:
tp- указываются настройки топиков для табличных параметров;upload- настройки загрузки через DATA-Uploader;http- указывается порт для подключения;environment- указывается название окружения (test,prodи т.д.);executor- настраивается размер пула для запросов;scheduler- настройки планировщика отложенных заданий;send- настраиваются ограничения на размер загружаемого файла;zookeeper- указываются настройки подключения к Zookeeper;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore. Если false - будет использоваться JDBC-драйвер;prostore- указываются настройки подключения к ProStore;kafka- настройки параметров подключения к шине данных Apache Kafka;metrics- настройка получения метрик;jet-connector- подготовлен для оптимизации задержек записи.
4.1. Секция tp
Секция tp секция предназначена для настройки префиксов топиков, откуда будут вычитываться и куда будут загружаться данные.
Например:
tp:
data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
upload-topic-prefix: ${UPLOAD_TOPIC_PREFIX:tmp.w}
Параметры конфигурации
data-topic-prefix- префикс топика, откуда будут вычитываться данные, напримерDATA_TOPIC_PREFIX:tp.data;upload-topic-prefix- префикс топика, куда будут загружаться данные для их последующей загрузки в витрину, напримерUPLOAD_TOPIC_PREFIX:tmp.w.
4.2. Секция upload
В секции upload - указываются настройки загрузки через DATA-Uploader
Например:
upload:
data-topic-prefix: ${AGENT_TOPIC_PREFIX:}
Параметры конфигурации
AGENT_TOPIC_PREFIX:- значение префикса для топиков. Топики взаимодействия с ПОДД-адаптером - Модуль исполнения запросов (см. раздел «Спецификация модуля ПОДД-адаптер-Модуль исполнения запросов»);
4.3. Секция http
В секции http указывается порт веб-сервера.
Например:
http:
port: ${HTTP_PORT:8090}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8090.
4.4. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- Название окружения, напримерENVIRONMENT_NAME:test.
4.5. Секция executor
Секция executor предназначена для указания размера пула для чтения Kafka и времени выполнения задач.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
max-execute-time: ${EXECUTOR_MAX_EXECUTE_TIME:600}
Параметры настроек
reader-pool-size- размер пула для чтения Kafka, напримерEXECUTOR_READER_POOL_SIZE:20;max-execute-time- максимальное время выполнения задачи (сек), напримерEXECUTOR_MAX_EXECUTE_TIME:600.
4.6. Секция scheduler
Секция scheduler предназначена для настроек планировщика отложенных заданий.
Например:
scheduler:
delta-apply-request-timeout: ${DELTA_APPLY_REQUEST_TIMEOUT:60}
Параметры настроек
delta-apply-request-timeout- таймаут применения отложенной дельты, напримерDELTA_APPLY_REQUEST_TIMEOUT:60;
4.7. Секция delta
В секции delta настраивается параметр ожидания перед повторной попыткой открытия дельты в случае ошибки
Например:
delta:
# параметр ожидания перед повторной попыткой открытия дельты в случае ошибки
open-delay: ${DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}}s
Параметры настроек
open-delay- количество секунд ожидания перед повторной попыткой открытия дельты в случае ошибки, напримерDELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout};
4.8. Секция send
В секции send настраиваются ограничения на размер загружаемого файла.
Например:
send:
channel-size: ${SEND_CHANNEL_SIZE:10}
timeout: ${SEND_TIMEOUT:60}
Параметры настроек
channel-size- размер канала на отправку сообщения, напримерSEND_CHANNEL_SIZE:10;timeout- таймаут вычитывания данных из топика (сек), напримерSEND_TIMEOUT:60.
4.9. Секция zookeeper
Секция zookeeper предназначена для настройки параметров подключения к серверу Zookeeper.
Например:
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
Параметры конфигурации
connection-string- подключение к Zookeeper DS, напримерZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal;connection-timeout-ms- Zookeeper DS таймаут подключения, напримерZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000;session-timeout-ms- Zookeeper DS таймаут сессии, напримерZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000;chroot- Zookeeper DS chroot path, напримерZOOKEEPER_DS_CHROOT:/adapter.
4.10. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore. Параметр prostore-rest-client.enabled со значением
false позволяет переключить исполнение запросов через JDBC-драйвер.
Например:
prostore-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.11. Секция 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
key:
primary: ${PRIMARY_KEY_NAME:tmp_id}
type: ${PRIMARY_KEY_TYPE:BIGINT}
kafka:
message-limit: ${PS_MESSAGE_LIMIT:1000}
zk-url: ${PS_ZK_KAFKA_URL:localhost:2181}
properties:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
Параметры конфигурации
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, напримерPS_INITIAL_POOL_SIZE:5;maxPoolSize- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8;primary- имя первичного ключа, напримерPRIMARY_KEY_NAME:tmp_id;type- тип первичного ключа, напримерPRIMARY_KEY_TYPE:BIGINT;message-limit- MESSAGE LIMIT, который будет указан при создании EXTERNAL UPLOAD TABLE, напримерPS_MESSAGE_LIMIT:1000;zk-url- подключение к Zookeeper Prostore, напримерPS_ZK_KAFKA_URL:t5-ads-01.ru-central1.internal:2181;bootstrap.servers- подключение к Kafka Prostore, напримерPS_KAFKA:t5-ads-01.ru-central1.internal:9092.
4.12. Секция kafka
В секции kafka собраны настройки параметров подключения к шине данных Apache Kafka.
Например:
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:10}
commit-interval: ${KAFKA_COMMIT_INTERVAL:5s}
internal:
bootstrap.servers: ${PS_KAFKA:localhost:9092}
topic.prefix: ${INTERNAL_TOPIC_PREFIX:${agent.topic.prefix}}
consumer:
tp-request:
topic: ${kafka.internal.topic.prefix}mppw.tp
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}podd-adapter-mppw-tp
auto.offset.reset: earliest
enable.auto.commit: false
upload-request:
topic: ${kafka.internal.topic.prefix}mppw.upload.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-upload
auto.offset.reset: earliest
enable.auto.commit: false
delta-apply-request:
topic: ${kafka.internal.topic.prefix}mppw.delta.in.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-delta
auto.offset.reset: earliest
enable.auto.commit: false
upload-data:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.internal.topic.prefix}podd-adapter-mppw-data
auto.offset.reset: earliest
enable.auto.commit: false
producer:
tp-result: ${kafka.internal.topic.prefix}mppw.rs
upload-result: ${kafka.internal.topic.prefix}mppw.upload.rs
delta-apply-result: ${kafka.internal.topic.prefix}mppw.delta.in.rs
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры конфигурации
AGENT_TOPIC_PREFIX- префикс для топиков агента ПОДД, например.
4.13. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9843}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9843.
4.14. Секция jet-connector
Секция jet-connector предназначена для оптимизации задержек записи данных.
Например:
jet-connector:
use: ${JET_CONNECTOR_USE:false}
kafka-consumer-group-name: ${JET_CONNECTOR_GROUP_NAME:mpww}
kafka-poll-duration-ms: ${JET_POLL_DURATION:200}
kafka-poll-buffer-size: ${JET_POLL_BUFFER:2000}
db-records-buffer-size: ${JET_DB_RECORDS_BUFFER:2000}
Параметры настроек
use- флаг активации jet connector’а, например{JET_CONNECTOR_USE:false};kafka-consumer-group-name- имя консьюмер-группы, загружающей данные, например:{JET_CONNECTOR_GROUP_NAME:mpww};kafka-poll-duration-ms- максимальное время одного прохода вычитки из топика в мс, например:{JET_POLL_DURATION:200};kafka-poll-buffer-size- максимальный размер буфера прочитанных, но еще не загруженных сообщений, например:{JET_POLL_BUFFER:2000};db-records-buffer-size- максимальное количество строк, загружаемых в таблицу за один проход, например:{JET_DB_RECORDS_BUFFER:2000}.