.. _podd_adapter_mppw_config: Конфигурация модуля ПОДД-адаптер - Модуль MPPW (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: подключение к Агенту ПОДД, Брокеру сообщений **Kafka**, :term:`Zookeeper`, а также настройка подключения к *Prostore* (секция: ``prostore``), настройка метрик (секция: ``metrics``) и другие настройки необходимые для корректной работы адаптера. .. _podd_mppw_application_yml: Пример файла application.yml ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Приведем типовую структуру файла и возможные настройки **ПОДД-адаптера - Модуль MPPW**. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. Подключаем реальный конфигурационный файл из репозитория podd-adapter-mppw .. .. literalinclude:: /modules/podd-adapter-mppw/src/main/resources/application.yml :language: yaml .. code-block:: yaml 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} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации **ПОДД-адаптера - Модуль MPPW** осуществляется путем редактирования параметров настроек в файле ``application.yml``. :ref:`podd_mppw_application_yml` для **ПОДД-адаптера - Модуль MPPW** можно найти в разделе "2.2. Настройка на состав программных средств" Руководства администратора. В файле конфигурации **ПОДД-адаптера - Модуль MPPW** могут быть настроены следующие секции: - ``tp`` - указываются настройки топиков для табличных параметров; - ``upload`` - настройки загрузки через DATA-Uploader; - ``http`` - указывается порт для подключения; - ``environment`` - указывается название окружения (``test``, ``prod`` и т.д.); - ``executor`` - настраивается размер пула для запросов; - ``scheduler`` - настройки планировщика отложенных заданий; - ``send`` - настраиваются ограничения на размер загружаемого файла; - ``zookeeper`` - указываются настройки подключения к Zookeeper; - ``prostore-rest-client`` - блок параметров конфигурирования взаимодействия с :term:`ProStore`. Если false - будет использоваться JDBC-драйвер; - ``prostore`` - указываются настройки подключения к :term:`ProStore`; - ``kafka`` - настройки параметров подключения к шине данных Apache Kafka; - ``metrics`` - настройка получения метрик; - ``jet-connector`` - подготовлен для оптимизации задержек записи. Секция tp ######### Секция ``tp`` секция предназначена для настройки префиксов топиков, откуда будут вычитываться и куда будут загружаться данные. Например: .. code-block:: yaml 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``. Секция upload ############# В секции ``upload`` - указываются настройки загрузки через DATA-Uploader Например: .. code-block:: yaml upload: data-topic-prefix: ${AGENT_TOPIC_PREFIX:} **Параметры конфигурации** - ``AGENT_TOPIC_PREFIX:`` - значение префикса для топиков. Топики взаимодействия с *ПОДД-адаптером - Модуль исполнения запросов* (см. раздел "Спецификация модуля *ПОДД-адаптер-Модуль исполнения запросов*"); Секция http ########### В секции ``http`` указывается порт веб-сервера. Например: .. code-block:: yaml http: port: ${HTTP_PORT:8090} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``HTTP_PORT:8090``. Секция environment ################## В секции ``environment`` указывается среда разработки (dev, test, stable, prod). Например: .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} **Параметры настроек** - ``name`` - Название окружения, например ``ENVIRONMENT_NAME:test``. Секция executor ############### Секция ``executor`` предназначена для указания размера пула для чтения Kafka и времени выполнения задач. Например: .. code-block:: yaml 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``. Секция scheduler ################ Секция ``scheduler`` предназначена для настроек планировщика отложенных заданий. Например: .. code-block:: yaml scheduler: delta-apply-request-timeout: ${DELTA_APPLY_REQUEST_TIMEOUT:60} **Параметры настроек** - ``delta-apply-request-timeout`` - таймаут применения отложенной дельты, например ``DELTA_APPLY_REQUEST_TIMEOUT:60``; Секция delta ############# В секции ``delta`` настраивается параметр ожидания перед повторной попыткой открытия дельты в случае ошибки Например: .. code-block:: yaml delta: # параметр ожидания перед повторной попыткой открытия дельты в случае ошибки open-delay: ${DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}}s **Параметры настроек** - ``open-delay`` - количество секунд ожидания перед повторной попыткой открытия дельты в случае ошибки, например ``DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}``; Секция send ########### В секции ``send`` настраиваются ограничения на размер загружаемого файла. Например: .. code-block:: yaml send: channel-size: ${SEND_CHANNEL_SIZE:10} timeout: ${SEND_TIMEOUT:60} **Параметры настроек** - ``channel-size`` - размер канала на отправку сообщения, например ``SEND_CHANNEL_SIZE:10``; - ``timeout`` - таймаут вычитывания данных из топика (сек), например ``SEND_TIMEOUT:60``. Секция zookeeper ################ Секция ``zookeeper`` предназначена для настройки параметров подключения к серверу Zookeeper. Например: .. code-block:: yaml 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``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с ProStore. Параметр ``prostore-rest-client.enabled`` со значением ``false`` позволяет переключить исполнение запросов через JDBC-драйвер. Например: .. code-block:: yaml 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``. Секция prostore ############### Секция ``prostore`` определяет настройки подключения к :term:`ProStore`. Например: .. code-block:: yaml 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``. Секция kafka ############ В секции ``kafka`` собраны настройки параметров подключения к шине данных Apache Kafka. Например: .. code-block:: yaml 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`` - префикс для топиков агента ПОДД, например. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9843} **Параметры конфигурации** - ``port`` - Порт для метрик, например ``METRICS_PORT:9843``. Секция jet-connector ############################ Секция ``jet-connector`` предназначена для оптимизации задержек записи данных. Например: .. code-block:: yaml 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}``.