2. Настройка программы
2.1. Настройка технических средств
Сервер, на которым будет установлена программа, должен соответствовать техническим характеристикам, указанным в документе «Техническим описание системы».
2.2. Настройка программных средств
Все предварительные действия необходимые перед установкой программы, процесс установки и проверка корректной установки программы описан в документе «Руководство по установке».
2.2.1. Настройка ProStore
Настройка ProStore заключается в настройке составляющих его компонентов и осуществляется путём внесения изменений в описание файла application.yml – основной конфигурационный файл, в котором задана логика и порядок работы Сервиса исполнения запросов (query-execution). Программная конфигурация, в частности, включает сетевые адреса, сетевые порты и идентификаторы компонентов для взаимосвязи между ними, пути на дисковых пространствах для обработки пользовательских и служебных данных, а также метаданных.
Внимание
Не рекомендуется менять настройки при первоначальной установке программы с помощью Ansible. Все необходимые настройки для корректной работы будут сконфигурированы автоматически.
2.2.1.1. Настройка Сервиса исполнения запросов (query-execution)
Файл application.yml – основной конфигурационный файл, в котором задана логика и порядок работы Сервиса исполнения запросов (query-execution). Для первоначальной установки используйте значения «по умолчанию».
Настройка ProStore:
DTM_CORE_PLUGINS_ANALYTICAL- настройка профилей приоритетности СУБД для запросов аналитики;DTM_CORE_PLUGINS_DICTIONARY- настройка профилей приоритетности СУБД для запросов ключ-значение;DTM_CORE_PLUGINS_UNDEFINED- настройка профилей приоритетности СУБД для не указанной категории запросов;DTM_CORE_HTTP_PORT- номер порта, на который Сервис исполнения запросов ожидает входящие запросы от JDBC-драйвера;DTM_NAME- имя среды для формирования полного наименования датамартов;CORE_TIME_ZONE- настройки временной зоны;DTM_CORE_METRICS_ENABLED- настройки генерации метрики Сервиса исполнения запросов;DTM_CORE_TASK_POOL_SIZE- максимальный объем пула задач в Сервисе исполнения запросов;DTM_CORE_TASK_TIMEOUT- интервал времени завершения задачи, выполняемой в Сервисе исполнения запросов.
Оптимизация работы сокета
TCP_NODELAY:
DTM_CORE_HTTP_TCP_NODELAY- настройка режима оптимизации работы сокетаTCP_NODELAY;DTM_CORE_HTTP_TCP_FAST_OPEN- настройка режимаTCP FAST_OPEN;DTM_CORE_HTTP_TCP_QUICK_ACK- настройка режима оптимизации работы сокетаTCP_QUICKACK.
Настройки для
EDMLоператоров:
EDML_DATASOURCE- тип СУБД-источника;EDML_DEFAULT_CHUNK_SIZE– размерchunkпо умолчанию;EDML_STATUS_CHECK_PERIOD_MS- период проверки статуса плагина в миллисекундах;EDML_FIRST_OFFSET_TIMEOUT_MS- интервал времени ожидания до таймаута в миллисекундах при работе с первым смещением;EDML_CHANGE_OFFSET_TIMEOUT_MS- интервал времени ожидания до таймаута в миллисекундах при работе с первым смещением в топике Kafka.
Настройка Zookeeper-серверов:
ZOOKEEPER_DS_ADDRESS- сетевой адрес хоста Zookeeper для служебной БД;ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS- интервал времени ожидания (в миллисекундах) соединения с хостом Zookeeper для служебной БД до достижения таймаута;ZOOKEEPER_DS_SESSION_TIMEOUT_MS- интервал времени бездействия (в миллисекундах) соединения с хостом Zookeeper для служебной БД до достижения таймаута;ZOOKEEPER_DS_CHROOT- корневой путь к хосту Zookeeper для служебной БД;ZOOKEEPER_KAFKA_ADDRESS- сетевой адрес хоста Zookeeper для брокера сообщений Kafka;ZOOKEEPER_KAFKA_CONNECTION_TIMEOUT_MS- интервал времени ожидания (в миллисекундах) соединения с хостом Zookeeper для брокера сообщений Kafka до достижения таймаута;ZOOKEEPER_KAFKA_SESSION_TIMEOUT_MS- интервал времени бездействия (в миллисекундах) соединения с хостом Zookeeper для брокера сообщений Kafka до достижения таймаута;ZOOKEEPER_KAFKA_CHROOT- корневой путь к хосту Zookeeper для брокера сообщений Kafka.
Настройка Kafka-серверов:
KAFKA_INPUT_STREAM_TIMEOUT_MS– интервал времени ожидания (в миллисекундах) входного потока данных для брокера сообщений Kafka до достижения таймаута;KAFKA_STATUS_EVENT_ENABLED- разрешение на публикацию событий;KAFKA_STATUS_EVENT_TOPIC- наименование топика Kafka, в который публикуются события;STATUS_MONITOR_URL- сетевой адрес, порт и путь к Сервису мониторинга статусов Kafka.
Настройки кэширования запросов:
CACHE_INITIAL_CAPACITY- начальная емкость кэша;CACHE_MAXIMUM_SIZE- максимальный размер кэша;CACHE_EXPIRE_AFTER_ACCESS_MINUTES- время (в минутах) устаревания кэша после последнего момента доступа к нему.
2.2.2. Настройка ПОДД-адаптера - Модуль исполнения запросов
2.2.2.1. Конфигурация СМЭВ4-адаптера - Модуль исполнения запросов (application.yml)
Файл application.yml – основной конфигурационный файл СМЭВ4-адаптера - Модуль исполнения запросов, в котором задана
логика и порядок работы адаптера:
получение и обработка входящих запросов;
подключение к Сервису формирования документов (секция:
printable-forms-service);настройки логирования (секция:
logging), а также другие настройки необходимые для корректной работы адаптера.
Хинт пагинации FORCE_LLR определен в переменных среды.
2.2.2.1.1. Пример файла application.yml
В конфигурационном файле задаются настройки, которые необходимы для решения текущих бизнес-задач.
http-server:
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}
log-pool-size: ${EXECUTOR_LOG_POOL_SIZE:20}
send:
channel-size: ${SEND_CHANNEL_SIZE:1}
compress: ${SEND_COMPRESS:none}
max-message-size: ${SEND_MAX_MESSAGE_SIZE:800000}
query:
data-source-type:
for-listagg: ${DATA_SOURCE_TYPE_LISTAGG:ADP}
statistics-request: ${DATA_SOURCE_TYPE_STATISTIC:ADP}
force-llr-for-order: ${FORCE_LLR_FOR_ORDER:true}
force-llr-for-all: ${FORCE_LLR_FOR_ALL:false}
llr-rows-limit: ${LLR_ROWS_LIMIT:200}
fetch-size: ${FETCH_SIZE:1000}
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:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
printable-forms-service:
host: ${PFS_HOST:localhost}
port: ${PFS_PORT:8080}
pool-size: ${PFS_POOL_SIZE:10}
timeout: ${PFS_TIMEOUT:30}
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:1000}
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.external.topic.prefix}query.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
query-cancel-request:
topic: ${kafka.external.topic.prefix}cancel.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}cancel.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
metadata-request:
topic: ${kafka.external.topic.prefix}metadata.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}metadata.consumer
auto.offset.reset: earliest
enable.auto.commit: false
metadata-new-data-request:
topic: ${kafka.external.topic.prefix}metadata.newdata.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}metadata.newdata.consumer
auto.offset.reset: earliest
enable.auto.commit: false
statistics-request:
topic: ${kafka.external.topic.prefix}statistics.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}statistics.rq.consumer
auto.offset.reset: earliest
enable.auto.commit: false
report-request:
topic: ${kafka.external.topic.prefix}procedure.query.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}report.rq.consumer
auto.offset.reset: earliest
enable.auto.commit: false
producer:
query-result: ${kafka.external.topic.prefix}query.rs
query-error: ${kafka.external.topic.prefix}query.err
query-estimation-result: ${kafka.external.topic.prefix}query.estimation.rs
query-cancel-result: ${kafka.external.topic.prefix}cancel.rs
query-cancel-error: ${kafka.external.topic.prefix}cancel.err
metadata-result: ${kafka.external.topic.prefix}metadata.rs
metadata-error: ${kafka.external.topic.prefix}metadata.err
metadata-newdata-result: ${kafka.external.topic.prefix}metadata.newdata.rs
metadata-newdata-error: ${kafka.external.topic.prefix}metadata.newdata.err
statistics-result: ${kafka.external.topic.prefix}statistics.rs
statistics-error: ${kafka.external.topic.prefix}statistics.err
report-result: ${kafka.external.topic.prefix}query.rs
report-error: ${kafka.external.topic.prefix}query.err
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
mppr-query-request: ${kafka.internal.topic.prefix}mppr.delegate.rq
tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
statistics:
enabled: ${STATISTICS_ENABLED:false}
timeout-min: ${STATISTICS_TIMEOUT_MIN:60}
datamarts:
- name: demo_dev
tables:
- name: all_types
columns:
- varchar_c
- char_c
- bigint_c
logging:
request-response:
query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}
pf-request: ${PF_REQUEST_LOG_ENABLED:false}
pf-response: ${PF_RESPONSE_LOG_ENABLED:false}
metrics:
port: ${METRICS_PORT:9837}
2.2.2.2. Параметры конфигурации
Настройка конфигурации СМЭВ4-адаптера - Модуль исполнения запросов осуществляется путем редактирования параметров настроек
в файле application.yml, где настраиваются секции:
http-server- указывается порт для подключения;environment- указывается название окружения (test,prodи т.д.);executor- настраивается размер пула для запросов;send- настраиваются ограничения на размер загружаемого файла;query- настройка выполнения запросов;zookeeper- подключения в Zookeeper;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore;prostore- указываются настройки подключения к ProStore;printable-forms-service- настройки подключения к Сервис формирования документов;kafka- настройки параметров подключения к шине данных Apache Kafka;statistics- управление статистикой;logging- настройка сохранения лог-файла;metrics- настройка получения метрик.
2.2.2.2.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http:
port: ${HTTP_PORT:8090}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8090.
2.2.2.2.2. Секция environment
Секция environment предназначена для настройки параметров окружения.
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- название окружения (test, prod и т.д.), например:ENVIRONMENT_NAME:test.
2.2.2.2.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.
2.2.2.2.4. Секция send
В секции send настраиваются ограничения на размер загружаемого файла.
Например:
send:
channel-size: ${SEND_CHANNEL_SIZE:1}
compress: ${SEND_COMPRESS:none}
max-message-size: ${SEND_MAX_MESSAGE_SIZE:800000}
Параметры настроек
channel-size- размер канала на отправку сообщения, напримерSEND_CHANNEL_SIZE:10;compress- сжатие выгружаемых сообщений (none или zstd), напримерSEND_COMPRESS:none;max-message-size- максимальный размер отправляемого сообщения, напримерSEND_MAX_MESSAGE_SIZE:800000.
2.2.2.2.5. Секция query
В секции query выполняется настройка выполнения запросов.
Например:
query:
data-source-type:
for-listagg: ${DATA_SOURCE_TYPE_LISTAGG:ADP}
statistics-request: ${DATA_SOURCE_TYPE_STATISTIC:ADP}
force-llr-for-order: ${FORCE_LLR_FOR_ORDER:true}
force-llr-for-all: ${FORCE_LLR_FOR_ALL:false}
llr-rows-limit: ${LLR_ROWS_LIMIT:200}
fetch-size: ${FETCH_SIZE:1000}
Параметры настроек
data-source-type- выполнение запроса с LISTAGG на (ADB/ADP), напримерDATA_SOURCE_TYPE:ADB;force-llr-for-order- выполнение ORDER BY запроса c использованием пагинации, напримерFORCE_LLR_FOR_ORDER:true;force-llr-for-all- выполнение всех запросов через LLR, напримерFORCE_LLR_FOR_ALL:false;llr-rows-limit- ограничение выгрузки через ЛЛР, при использовании в запросе лимита со значением меньшим, чем указанное значение, напримерLLR_ROWS_LIMIT:200, будет использован режим LLR;fetch-size- размер выгрузки через JDBC, напримерFETCH_SIZE:1000.
Внимание
Для опции force-llr-for-order параметр false можно устанавливать только при развертывании витрины на единственной БД ADP.
2.2.2.2.6. Секция zookeeper
Секция zookeeper определяет настройки подключения к Zookeeper DS.
Например:
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.
2.2.2.2.7. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
prostore-rest-client:
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.
2.2.2.2.8. Секция printable-forms-service
Секция printable-forms-service определяет настройки подключения к Сервис формирования документов.
Например:
printable-forms-service:
host: ${PFS_HOST:localhost}
port: ${PFS_PORT:8080}
pool-size: ${PFS_POOL_SIZE:10}
timeout: ${PFS_TIMEOUT:30}
Параметры настроек
host- адрес сервера формирования документов, напримерPFS_HOST:localhost;port- порт сервера формирования документов, напримерPFS_PORT:8080;pool-size- размер пула соединений для ПФ, напримерPFS_POOL_SIZE:10;timeout- таймаут переподключения к сервису формирования документов (секунды), напримерPFS_TIMEOUT:30.
2.2.2.2.9. Секция kafka
В секции kafka настраиваются параметры подключения к шине данных Apache Kafka.
Например:
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:1000}
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.external.topic.prefix}query.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
query-cancel-request:
topic: ${kafka.external.topic.prefix}cancel.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}cancel.query.consumer
auto.offset.reset: earliest
enable.auto.commit: false
metadata-request:
topic: ${kafka.external.topic.prefix}metadata.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}metadata.consumer
auto.offset.reset: earliest
enable.auto.commit: false
metadata-new-data-request:
topic: ${kafka.external.topic.prefix}metadata.newdata.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}metadata.newdata.consumer
auto.offset.reset: earliest
enable.auto.commit: false
statistics-request:
topic: ${kafka.external.topic.prefix}statistics.rq
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}statistics.rq.consumer
auto.offset.reset: earliest
enable.auto.commit: false
report-request:
topic: ${kafka.external.topic.prefix}procedure.query.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}report.rq.consumer
auto.offset.reset: earliest
enable.auto.commit: false
producer:
query-result: ${kafka.external.topic.prefix}query.rs
query-error: ${kafka.external.topic.prefix}query.err
query-estimation-result: ${kafka.external.topic.prefix}}query.estimation.rs
query-cancel-result: ${kafka.external.topic.prefix}cancel.rs
query-cancel-error: ${kafka.external.topic.prefix}cancel.err
metadata-result: ${kafka.external.topic.prefix}metadata.rs
metadata-error: ${kafka.external.topic.prefix}metadata.err
metadata-newdata-result: ${kafka.external.topic.prefix}metadata.newdata.rs
metadata-newdata-error: ${kafka.external.topic.prefix}metadata.newdata.err
statistics-result: ${kafka.external.topic.prefix}statistics.rs
statistics-error: ${kafka.external.topic.prefix}statistics.err
report-result: ${kafka.external.topic.prefix}query.rs
report-error: ${kafka.external.topic.prefix}query.err
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
mppr-query-request: ${kafka.internal.topic.prefix}mppr.delegate.rq
tp-delete-tmp: ${kafka.internal.topic.prefix}tp.delete.tmp
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры конфигурации
topic- префикс для топиков Агента СМЭВ4, напримерAGENT_TOPIC_PREFIX.
2.2.2.2.10. Секция statistics
Секция statistics предназначена для управления статистикой.
Например:
statistics:
enabled: ${STATISTICS_ENABLED:false}
timeout-min: ${STATISTICS_TIMEOUT_MIN:60}
datamarts:
- name: demo_dev
tables:
- name: all_types
columns:
- varchar_c
- char_c
- bigint_c
Параметры конфигурации
enabled- включение (true)/ выключение (false) расчета статистики, напримерSTATISTICS_ENABLED:false;timeout-min- время обновления статистики (минуты), напримерSTATISTICS_TIMEOUT_MIN:60.
2.2.2.2.11. Секция logging
Секция logging предназначена для настройки параметров логирования.
Например:
logging:
request-response:
query-request: ${QUERY_REQUEST_LOG_ENABLED:false}
query-response: ${QUERY_RESPONSE_LOG_ENABLED:false}
pf-request: ${PF_REQUEST_LOG_ENABLED:false}
pf-response: ${PF_RESPONSE_LOG_ENABLED:false}
Параметры конфигурации
query-request- журналирование query запросов, напримерQUERY_REQUEST_LOG_ENABLED:false;query-response- журналирование query ответов, напримерQUERY_RESPONSE_LOG_ENABLED:false;pf-request- журналирование запросов на сервис формирования документов, напримерPF_REQUEST_LOG_ENABLED:false;pf-response- журналирование ответов от сервиса формирования документов, напримерPF_RESPONSE_LOG_ENABLED:false.
2.2.2.2.12. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.
Описание формата взаимодействия между Агентом ПОДД и ПОДД-адаптером - Модуль исполнения запросов (название топиков, формат сообщений, схема взаимодействия) описан в документе Спецификация Модуля исполнения запросов.
2.2.3. Настройка ПОДД-адаптер – Модуль MPPR
2.2.3.1. Конфигурация СМЭВ4-адаптера - Модуль MPPR (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля:
получение входящих запросов, их обработка, а также настройка подключения к ядру витрины (секция: prostore), настройка
метрик (секция: metrics), а также другие настройки необходимые для корректной работы адаптера.
2.2.3.1.1. Пример файла application.yml
http-server:
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:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
prostore:
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}
2.2.3.2. Параметры конфигурации
Настройка конфигурации СМЭВ4-адаптера - Модуль MPPR осуществляется путем редактирования параметров настроек в файле
application.yml, где настраиваются секции:
http-server- указывается порт веб-сервера;environment- указывается название окружения (test,prodи т.д.);executor- предназначена для указания размера пула для запросов;send- настраиваются ограничения на размер загружаемого файла;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore;prostore- настройка подключения к серверу и базе данных ProStore;kafka- настройки параметров подключения к шине данных Apache Kafka;metrics- настройка получения метрик;logging- настройки журналирования запросов и ответов;
2.2.3.2.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${HTTP_PORT:8085}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8085.
2.2.3.2.2. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod)
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- Название окружения, напримерENVIRONMENT_NAME:test.
2.2.3.2.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.
2.2.3.2.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.
2.2.3.2.5. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
prostore-rest-client:
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.
2.2.3.2.6. Секция prostore
В секции prostore осуществляется настройка подключения к серверу и базе данных ProStore.
Например:
prostore:
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
Параметры настроек
message-limit- лимит сообщений, напримерPS_MESSAGE_LIMIT:1000;zk-url- адрес сервера Zookeeper для загрузки данных в ProStore, напримерPS_ZK_KAFKA_URL:localhost:2181.
2.2.3.2.7. Секция kafka
Секция kafka определяет настройки взаимодействия через СМЭВ4-адаптер между Поставщиком данных (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- префикс для топиков Агента СМЭВ4, напримерAGENT_TOPIC_PREFIX.
2.2.3.2.8. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9843}
Параметры конфигурации
port- порт для метрик, напримерMETRICS_PORT:9843.
2.2.3.2.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.
2.2.4. Настройка ПОДД-адаптер-Модуль MPPW
2.2.4.1. Конфигурация модуля СМЭВ4-адаптер - Модуль MPPW (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля:
подключение к Агенту СМЭВ4, Брокеру сообщений Kafka, Zookeeper, а также настройка подключения к Prostore
(секция: prostore), настройка метрик (секция: metrics) и другие настройки необходимые для корректной работы адаптера.
2.2.4.1.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
tp:
data-topic-prefix: ${DATA_TOPIC_PREFIX:tp.data}
upload-topic-prefix: ${UPLOAD_TOPIC_PREFIX:tmp.w}
upload:
data-topic-prefix: ${AGENT_TOPIC_PREFIX:}
retry:
attempts: 5
delay: 1m
http-server:
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}
spring:
liquibase:
enabled: ${LIQUIBASE_ENABLED:true} # Для replication.storage.type=kafka необходимо выключить
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://${replication.storage.postgres.connection.host}:${replication.storage.postgres.connection.port}/${replication.storage.postgres.connection.database}?currentSchema=${replication.storage.postgres.connection.schema}
user: ${replication.storage.postgres.connection.user}
password: ${replication.storage.postgres.connection.password}
replication:
should-check-source-topic: false
should-delete-prostore-topic: false
prostore-topic-template: "mppw.{datamart}.{table}"
storage: # блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе mppw
type: ${STORAGE_TYPE:postgres} # тип, postgres|kafka
postgres: # параметры подключения к базе. Используется только при type=postgres
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
delta:
# параметр ожидания перед повторной попыткой открытия дельты в случае ошибки
open-delay: ${DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}}s
# количество попыток открытия дельты в случае ошибки
open-attempts: ${DELTA_OPEN_ATTEMPTS:5}
# период проверки открытых дельт
open-check: ${DELTA_OPEN_CHECK:60}s
# количество попыток фиксации дельты в случае ошибки
commit-attempts: ${DELTA_COMMIT_ATTEMPTS:5}
# период ожидания перед повторной попыткой фиксации дельты
commit-error-delay: ${DELTA_COMMIT_DELAY:1}s
# количество попыток отката дельты в случае ошибки
rollback-attempts: ${DELTA_COMMIT_ATTEMPTS:3}
# период ожидания перед повторной попыткой отката дельты
rollback-error-delay: ${DELTA_COMMIT_DELAY:5}s
#enable/disable/period
creating-delta-on-upload-request: ${DELTA_CREATING_MODE:enable}
period: ${CREATING_DELTA_ON_UPLOAD_REQUEST_PERIOD:300}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:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
prostore:
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:true}
2.2.4.2. Параметры конфигурации
Настройка конфигурации СМЭВ4-адаптера - Модуль MPPW осуществляется путем редактирования параметров настроек в
файле application.yml, где настраиваются секции:
tp- указываются настройки топиков для табличных параметров;upload- настройки загрузки через DATA-Uploader;http-server- указывается порт для подключения;environment- указывается название окружения (test,prodи т.д.);executor- настраивается размер пула для запросов;scheduler- настройки планировщика отложенных заданий;replication- блок настроек хранения чанков данных репликации;send- настраиваются ограничения на размер загружаемого файла;zookeeper- указываются настройки подключения к Zookeeper;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore;prostore- указываются настройки генерации на создание и удаление writable table;kafka- настройки параметров подключения к шине данных Apache Kafka;metrics- настройка получения метрик;jet-connector- подготовлен для оптимизации задержек записи.
2.2.4.2.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.
2.2.4.2.2. Секция upload
В секции upload - указываются настройки загрузки через DATA-Uploader.
Например:
upload:
data-topic-prefix: ${AGENT_TOPIC_PREFIX:}
retry:
attempts: 5
delay: 1m
Параметры конфигурации
AGENT_TOPIC_PREFIX:- значение префикса для топиков. Топики взаимодействия с СМЭВ4-адаптером - Модуль исполнения запросов (см. Спецификация Модуля исполнения запросов);retry- повтор попытки загрузки;attempts- количество попыток;delay- период задержки (в минутах).
2.2.4.2.3. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${HTTP_PORT:8090}
Параметры настроек
port- указывается порт веб-сервера, например:HTTP_PORT:8090.
2.2.4.2.4. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- среда разработки, напримерENVIRONMENT_NAME:test.
2.2.4.2.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.
2.2.4.2.6. Секция scheduler
Секция scheduler предназначена для настроек планировщика отложенных заданий.
Например:
scheduler:
delta-apply-request-timeout: ${DELTA_APPLY_REQUEST_TIMEOUT:60}
Параметры настроек
delta-apply-request-timeout- таймаут применения отложенной дельты, напримерDELTA_APPLY_REQUEST_TIMEOUT:60.
2.2.4.2.7. Секция replication
секции
replicationуказываются настройки хранения чанков данных репликации.
Например:
replication:
should-check-source-topic: false
should-delete-prostore-topic: false
prostore-topic-template: "mppw.{datamart}.{table}"
storage: # блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе mppw
type: ${STORAGE_TYPE:postgres} # тип, postgres|kafka
postgres: # параметры подключения к базе. Используется только при type=postgres
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
Параметры настроек
type- тип, postgres|kafka, например:STORAGE_TYPE:postgres;connection- параметры подключения к базе.
2.2.4.2.8. Секция delta
В секции delta настраивается параметр ожидания перед повторной попыткой открытия дельты при ошибке.
Например:
delta:
# параметр ожидания перед повторной попыткой открытия дельты в случае ошибки
open-delay: ${DELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout}}s
# количество попыток открытия дельты в случае ошибки
open-attempts: ${DELTA_OPEN_ATTEMPTS:5}
# период проверки открытых дельт
open-check: ${DELTA_OPEN_CHECK:60}s
# количество попыток фиксации дельты в случае ошибки
commit-attempts: ${DELTA_COMMIT_ATTEMPTS:5}
# период ожидания перед повторной попыткой фиксации дельты
commit-error-delay: ${DELTA_COMMIT_DELAY:1}s
# количество попыток отката дельты в случае ошибки
rollback-attempts: ${DELTA_COMMIT_ATTEMPTS:3}
# период ожидания перед повторной попыткой отката дельты
rollback-error-delay: ${DELTA_COMMIT_DELAY:5}s
#enable/disable/period
creating-delta-on-upload-request: ${DELTA_CREATING_MODE:enable}
period: ${CREATING_DELTA_ON_UPLOAD_REQUEST_PERIOD:300}s
Параметры настроек
open-delay- параметр ожидания (в секундах) перед повторной попыткой открытия дельты в случае ошибки, напримерDELTA_OPEN_DELAY:${scheduler.delta-apply-request-timeout};open-attempts- количество попыток открытия дельты в случае ошибки, напримерDELTA_OPEN_ATTEMPTS:5;open-check- период проверки открытых дельт (в секундах), напримерDELTA_OPEN_CHECK:60;commit-attempts- количество попыток фиксации дельты в случае ошибки, напримерDELTA_COMMIT_ATTEMPTS:5;commit-error-delay- период ожидания перед повторной попыткой фиксации дельты (в секундах), напримерDELTA_COMMIT_DELAY:1;rollback-attempts- количество попыток отката дельты в случае ошибки, напримерDELTA_COMMIT_ATTEMPTS:3;rollback-error-delay- период ожидания перед повторной попыткой отката дельты (в секундах), напримерDELTA_COMMIT_DELAY:5;creating-delta-on-upload-request- создание дельты при запросе загрузки, напримерDELTA_CREATING_MODE:enable;period- период создания дельты при запросе загрузки (в секундах), напримерCREATING_DELTA_ON_UPLOAD_REQUEST_PERIOD:300, используется только при mode=llw и creating-delta-on-upload-request=period;
Для параметра creating-delta-on-upload-request доступны значения:
enable- формируются дельты для загружаемых порций данных, данное значение используется для работы подписок;disable- формирование дельт отключено;period- исключается формирование дельт в процессе исполнения команд загрузки данных, вместо этого дельты периодически открываются и закрываются с периодом, указанным в данном параметре. При этом приложение запоминает датамарты по которым завершены инсерты за истекший период. Дельты открываются и закрываются только для датамартов, в которые происходила вставка данных.
Внимание
При потере связи коннектора с Prostore отмены операции не происходит автоматически и модуль MPPW получает ошибку.
После восстановления связи коннектора с Prostore и попытке загрузки данных в эту же таблицу возвращается ошибка о блокировке таблицы предыдущей операции вставки.
Для исправления ошибки Администратор должен вручную выполнить команду resume или erase в Prostore.
2.2.4.2.9. Секция send
В секции send настраиваются ограничения на размер загружаемого файла.
Например:
send:
channel-size: ${SEND_CHANNEL_SIZE:10}
timeout: ${SEND_TIMEOUT:60}
Параметры настроек
channel-size- размер канала на отправку сообщения, напримерSEND_CHANNEL_SIZE:10;timeout- таймаут вычитывания данных из топика (сек), напримерSEND_TIMEOUT:60.
2.2.4.2.10. Секция 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.
2.2.4.2.11. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с Prostore.
Например:
prostore-rest-client:
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.
2.2.4.2.12. Секция prostore
Секция prostore
Например:
prostore:
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}
Параметры настроек
primary- название первичного ключа, напримерtmp_id;type- тип первичного ключа, напримерBIGINT;message-limit- лимит сообщений, напримерPS_MESSAGE_LIMIT:1000;zk-url- адрес сервера Zookeeper для загрузки данных в Prostore, напримерPS_ZK_KAFKA_URL:localhost:2181.
2.2.4.2.13. Секция 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, например.
2.2.4.2.14. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9843}
Параметры конфигурации
port- порт для метрик, напримерMETRICS_PORT:9843.
2.2.4.2.15. Секция jet-connector
Секция jet-connector предназначена для оптимизации задержек записи данных.
Например:
jet-connector:
use: ${JET_CONNECTOR_USE:false}
Параметры настроек
use- флаг активации jet-connector, например{JET_CONNECTOR_USE:false};
Режим/СУБД |
ADB |
ADP |
ADQM |
ADG |
|---|---|---|---|---|
Чтение |
Нет |
Нет |
Нет |
Нет |
Запись |
В перспективе |
Да |
Нет |
Нет |
Чтобы воспользоваться jet-connector требуется вместо upload external table создавать readable external table, указывающую на топик,
как отражено в документации Prostore
В модуль MPPW не передается информация о том, в какую БД физически будут загружаться данные, синтаксис Prostore един для всех поддерживаемых СУБД. Конкретная СУБД указывается в настройках Prostore.
Даже если загрузка данных выполняется в более чем одну базу, на работе адаптеров это не сказывается.
При формировании запросов в табличными параметрами, в том числе при регистрации РЗ, необходимо явно перечислять поля таблиц, по которым будет выполняться фильтрация записей или объединение таблиц.
Переключение с jet-connector на kafka postgres writer и наоборот допускается при завершенных операциях загрузки данных.
Предупреждение
jet-connector в настоящее время применим для ADP, что делает его применимым, только для иснталляций одной единственной СУБД ADP. Это ограничение остается на уровне документации при использовании jet-connector с другими базами должна появиться ошибка.
2.2.5. Настройка Модуля подписок
2.2.5.1. Конфигурация модуля СМЭВ4-адаптер - Модуль подписок (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля:
настройка подключения к Prostore (секция:
prostore);подключение к Брокеру сообщений Kafka, Zookeeper;
порядок обработки запросов между Получателем и Поставщиком данных (секция:
kafka);настройка метрик (секция:
metrics) и другие настройки необходимые для корректной работы адаптера.
2.2.5.1.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
environment:
name: ${ENVIRONMENT_NAME:test}
http-server:
port: ${HTTP_PORT:8085}
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
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}
migration:
enabled: ${MIGRATION_ENABLE:false}
old-connection-string: ${OLD_ZOOKEEPER_DS_ADDRESS:localhost}
table-metadata:
cache:
enabled: false
prostore-rest-client:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
prostore:
status-event-topic:
topic: ${PS_STATUS_EVENT_TOPIC:status.event}
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-status-event
auto.offset.reset: earliest
enable.auto.commit: false
subscription:
consumer:
# режим отмены подписки на потребителе. Возможные значения rename, drop, none
cancel-mode: none
# Продолжительность исключения подписки в случае ошибки применения
exclusion-duration: 24h
# Периодичность срабатывания механизма очистки для ошибочных подписок
cleanup-interval: 5s
replication:
max-deltas-in-batch: 10 # максимальное число дельт в выгружаемой пачке
# Массив описания standalone таблиц, участвующих в репликации
#standalone-tables: []
# Пример описания
#standalone-tables:
# - table: "misdm05.readable_book"
# anchor: "update_at"
# soft-delete: "delete_at"
storage: # блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе mppw
type: ${STORAGE_TYPE:postgres} # тип, postgres|kafka
postgres: # параметры подключения к базе. Используется только при type=postgres
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
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:
subscription-request:
topic: ${kafka.external.topic.prefix}replication.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-cancel-request:
topic: ${kafka.external.topic.prefix}replication.cancel.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-cancel-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-consumer-cancel-request:
topic: ${kafka.external.topic.prefix}replication.cancel.in.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}}replicator-subscription-consumer-cancel-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-storage-request:
topic: ${kafka.external.topic.prefix}replication.in.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-storage-request
auto.offset.reset: earliest
enable.auto.commit: false
delta-request:
topic: ${kafka.external.topic.prefix}delta.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-delta-request
auto.offset.reset: earliest
enable.auto.commit: false
delta-apply-notification:
topic: ${kafka.internal.topic.prefix}subscription.in
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}replicator-delta-apply-notification
auto.offset.reset: earliest
enable.auto.commit: false
mppw-delta-apply-result:
topic: ${kafka.internal.topic.prefix}mppw.delta.in.rs
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}replicator-delta-apply-result
auto.offset.reset: earliest
enable.auto.commit: false
producer:
subscription-result: ${kafka.external.topic.prefix}replication.rs
subscription-error: ${kafka.external.topic.prefix}replication.err
subscription-cancel-error: ${kafka.external.topic.prefix}replication.cancel.rs
subscription-cancel-result: ${kafka.external.topic.prefix}replication.cancel.rs
subscription-consumer-cancel-result: ${kafka.external.topic.prefix}replication.cancel.in.rs
subscription-storage-result: ${kafka.external.topic.prefix}replication.in.rs
subscription-storage-error: ${kafka.external.topic.prefix}replication.in.err
delta-error: ${kafka.external.topic.prefix}delta.err
delta-apply-error: ${kafka.external.topic.prefix}delta.in.err
delta-apply-result: ${kafka.external.topic.prefix}delta.in.rs
delta-notification: ${kafka.external.topic.prefix}delta.notification
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
mppr-delta-request: ${kafka.internal.topic.prefix}mppr.delta.rq
mppw-delta-apply-request: ${kafka.internal.topic.prefix}mppw.delta.in.rq
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
metrics:
port: ${METRICS_PORT:9837}
log:
replRequest: ${REPL_REQUEST_LOG_ENABLED:false}
replResponse: ${REPL_RESPONSE_LOG_ENABLED:false}
backup:
zk-path: ${REPLICATOR_BACKUP_ZK_PATH:/${environment.name}/podd-adapter-replicator}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
adapterCommandBroadcast: ${REPLICATOR_COMMAND_BROADCAST_TOPIC:adapter.command.broadcast}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
timeout: ${BACKUP_TIMEOUT:PT180s}
idleDelay: ${BACKUP_DELAY:500}
kafka:
consumer:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${REPLICATOR_BACKUP_GROUP_ID:podd_adapter_replicator_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
2.2.5.2. Параметры конфигурации
Настройка конфигурации СМЭВ4-адаптера - Модуль подписок осуществляется путем редактирования параметров настроек в
файле application.yml, где настраиваются секции:
environment- указывается название окружения (test,prodи т.д.);http-server- настройки порта подключения;executor- масштабирования нагрузки на модуль;zookeeper– параметры подключения к Zookeeper;migration- настройки миграции;prostore-api-client- блок параметров конфигурирования взаимодействия с Prostore;subscription- настройки подписки;replication- настройки репликации;storage- блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе MPPW.kafka- настройки параметров подключения к шине данных Apache Kafka;log- настройка сохранения лог-файла;metrics- настройка получения метрик;backup- настройки бекапирования.
2.2.5.2.1. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- среда разработки, напримерENVIRONMENT_NAME:test.
2.2.5.2.2. Секция http-server
Секция http-server предназначена для настройки порта и протокола передачи данных (одно из значений http или https).
Например:
http-server:
port: ${HTTP_PORT:8085}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8085.
2.2.5.2.3. Секция executor
Секция executor предназначена для масштабирования нагрузки (увеличения / уменьшения) на модуль.
Например:
executor:
reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20}
Параметры настроек
reader-pool-size- размер пула для чтения Kafka, напримерEXECUTOR_READER_POOL_SIZE:20.
2.2.5.2.4. Секция 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}
Параметры настроек
ZOOKEEPER_DS_ADDRESS- адрес сервера Zookeeper DS;ZOOKEEPER_DS_SESSION_TIMEOUT_MS- таймаут подключения к Zookeeper DS,максимальное время ожидания для выявления сбоев потребителей, указывается в миллисекундах (MS.);ZOOKEEPER_DS_SESSION_TIMEOUT_MS- таймаут сессии, максимальное время ожидания подключения к Zookeeper. Если ответ не получен до истечения установленного значения, клиент повторно отправляет запрос при необходимости, указывается в миллисекундах (MS.);ZOOKEEPER_DS_CHROOT- Zookeeper DS chroot path.
2.2.5.2.5. Секция migration
Секция migration реализована настройка миграции Zookeeper для задачи бекапирования.
Например:
migration:
enabled: ${MIGRATION_ENABLE:false}
old-connection-string: ${OLD_ZOOKEEPER_DS_ADDRESS:localhost}
Параметры настроек
enabled- подключение миграции, например{MIGRATION_ENABLE:false};old-connection-string- адрес Zookeeper, например{OLD_ZOOKEEPER_DS_ADDRESS:localhost}.
2.2.5.2.6. Секция 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.
2.2.5.2.7. Секция subscription
В секции subscription настраиваются подписки на потребителе.
Например
subscription:
consumer:
# режим отмены подписки на потребителе. Возможные значения rename, drop, none
cancel-mode: none
# Продолжительность исключения подписки в случае ошибки применения
exclusion-duration: 24h
# Периодичность срабатывания механизма очистки для ошибочных подписок
cleanup-interval: 5s
Параметры конфигурации
cancel-mode- режим отмены подписки на потребителе. Возможные значения:rename,drop,none;exclusion-duration- продолжительность исключения подписки в случае ошибки применения (в часах), напримерexclusion-duration: 24h;cleanup-interval- периодичность срабатывания механизма очистки для ошибочных подписок (в секундах), напримерcleanup-interval: 5s.
2.2.5.2.8. Секция replication
В секции subscription указываются настройки репликации.
Например
replication:
max-deltas-in-batch: 10
Параметры конфигурации
max-deltas-in-batch- максимальное число дельт в выгружаемой пачке, напримерmax-deltas-in-batch: 10.
2.2.5.2.9. Секция storage
В секции storage указываются настройки хранения чанков данных репликации.
ри изменении параметров необходимо синхронизировать аналогичные параметры в сервисе MPPW.
Например:
storage:
type: ${STORAGE_TYPE:postgres}
postgres:
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
Параметры настроек
type- тип, postgres|kafka, например:STORAGE_TYPE:postgres;connection- параметры подключения к базе.
2.2.5.2.10. Секция kafka
В секции kafka настраиваются параметры подключения к шине данных Apache Kafka (используется для взаимодействия с СМЭВ4-адаптером)
и настройки взаимодействия через топики модуля СМЭВ4-адаптер - Модуль исполнения запросов.
Модуль взаимодействует через топики:
replication.rq/rs/err- запрос создания подписки (Поставщик данных);replication.cancel.rq/rs/err- запрос отмены подписки (Поставщик данных);delta.rq/mppr.delta.rq- запрос дельты (Поставщик данных);replication.in.rq/rs/err- запрос создания структуры по подписке (Получатель данных);subscription.in/delta.in.rs/delta.in.err- запрос применения дельты (Получатель данных);status.event/delta.notification- статусы с Prostore (Поставщик данных).
Например:
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:
subscription-request:
topic: ${kafka.external.topic.prefix}replication.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-cancel-request:
topic: ${kafka.external.topic.prefix}replication.cancel.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-cancel-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-consumer-cancel-request:
topic: ${kafka.external.topic.prefix}replication.cancel.in.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}}replicator-subscription-consumer-cancel-request
auto.offset.reset: earliest
enable.auto.commit: false
subscription-storage-request:
topic: ${kafka.external.topic.prefix}replication.in.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-subscription-storage-request
auto.offset.reset: earliest
enable.auto.commit: false
delta-request:
topic: ${kafka.external.topic.prefix}delta.rq
max-concurrent-handle: ${kafka.max-concurrent-handle}
commit-interval: ${kafka.commit-interval}
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}replicator-delta-request
auto.offset.reset: earliest
enable.auto.commit: false
delta-apply-notification:
topic: ${kafka.internal.topic.prefix}subscription.in
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}replicator-delta-apply-notification
auto.offset.reset: earliest
enable.auto.commit: false
mppw-delta-apply-result:
topic: ${kafka.internal.topic.prefix}mppw.delta.in.rs
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}replicator-delta-apply-result
auto.offset.reset: earliest
enable.auto.commit: false
producer:
subscription-result: ${kafka.external.topic.prefix}replication.rs
subscription-error: ${kafka.external.topic.prefix}replication.err
subscription-cancel-error: ${kafka.external.topic.prefix}replication.cancel.rs
subscription-cancel-result: ${kafka.external.topic.prefix}replication.cancel.rs
subscription-consumer-cancel-result: ${kafka.external.topic.prefix}replication.cancel.in.rs
subscription-storage-result: ${kafka.external.topic.prefix}replication.in.rs
subscription-storage-error: ${kafka.external.topic.prefix}replication.in.err
delta-error: ${kafka.external.topic.prefix}delta.err
delta-apply-error: ${kafka.external.topic.prefix}delta.in.err
delta-apply-result: ${kafka.external.topic.prefix}delta.in.rs
delta-notification: ${kafka.external.topic.prefix}delta.notification
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
internal:
mppr-delta-request: ${kafka.internal.topic.prefix}mppr.delta.rq
mppw-delta-apply-request: ${kafka.internal.topic.prefix}mppw.delta.in.rq
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры конфигурации
AGENT_TOPIC_PREFIX- значение префикса для топиков. Топики взаимодействия с СМЭВ4-адаптером - Модуль исполнения запросов
2.2.5.2.11. Секция metrics
В секции metrics настраиваются параметры метрик.
Например:
metrics:
port: ${METRICS_PORT:9837
Параметры конфигурации
port- порт для получения метрик, например9837.
2.2.5.2.12. Секция log
В секции log настраиваются параметры логирования.
Например:
log:
replRequest: ${REPL_REQUEST_LOG_ENABLED:false}
replResponse: ${REPL_RESPONSE_LOG_ENABLED:false}
Параметры конфигурации
repl-request- журналировать запросы к модулю подписок, напримерREPL_REQUEST_LOG_ENABLED:false;repl-response- журналировать ответы модуля подписок, напримерREPL_RESPONSE_LOG_ENABLED:false.
2.2.5.2.13. Секция backup
В секции backup настраиваются параметры бекапирования модуля.
Например:
backup:
zk-path: ${REPLICATOR_BACKUP_ZK_PATH:/${environment.name}/podd-adapter-replicator}
commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command}
adapterCommandBroadcast: ${REPLICATOR_COMMAND_BROADCAST_TOPIC:adapter.command.broadcast}
backupTopic: ${BACKUP_TOPIC:adapter.backup}
statusTopic: ${STATUS_TOPIC:adapter.status}
timeout: ${BACKUP_TIMEOUT:PT180s}
idleDelay: ${BACKUP_DELAY:500}
kafka:
consumer:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
group.id: ${REPLICATOR_BACKUP_GROUP_ID:podd_adapter_replicator_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры настроек
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}.
2.2.6. Настройка Модуля группировки группировки чанков репликации
2.2.6.1. Конфигурация Модуля группировки чанков репликации (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором описаны подключение к сервису Kafka,
порт веб-сервера, и настройки журналирования запросов и ответов.
2.2.6.1.1. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
http-server:
port: ${HTTP_PORT:8084}
spring:
liquibase:
enabled: ${LIQUIBASE_ENABLED:true} # Для storage.type=kafka необходимо выключить
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://${storage.postgres.connection.host}:${storage.postgres.connection.port}/${storage.postgres.connection.database}?currentSchema=${storage.postgres.connection.schema}
user: ${storage.postgres.connection.user}
password: ${storage.postgres.connection.password}
storage:
type: ${STORAGE_TYPE:postgres} # тип, postgres|kafka
postgres: # параметры подключения к базе. Используется только при type=postgres
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
# максимальное количество обработчиков входящих запросов
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:100}
# периодичность фиксации оффсета обработанных сообщений
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:
delta-apply-request: ${kafka.external.topic.prefix}delta.in.rq
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}podd-adapter-group-repl
auto.offset.reset: earliest
enable.auto.commit: false
producer:
refresh-interval: 60s
delta-apply-notification: ${kafka.internal.topic.prefix}subscription.in
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
environment:
name: ${ENVIRONMENT_NAME:test}
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:8640000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
logging:
scl.delta:
enabled: ${SCL_DELTA_ENABLED:false}
metrics:
port: ${METRICS_PORT:9837}
2.2.6.2. Параметры конфигурации
Настройка конфигурации Модуля группировки чанков репликации осуществляется путем редактирования параметров настроек в
файле application.yml, где настраиваются секции:
http-server- указывается порт веб-сервера.storage- блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе MPPW.kafka- настройки параметров подключения к шине данных Apache Kafka.logging- настройки журналирования запросов и ответов.metrics- настройка порта для получения метрик.
2.2.6.2.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${HTTP_PORT:8084}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8084.
2.2.6.2.2. Секция storage
В секции storage указываются настройки хранения чанков данных репликации.
ри изменении параметров необходимо синхронизировать аналогичные параметры в сервисе MPPW.
Например:
storage:
type: ${STORAGE_TYPE:postgres}
postgres:
connection:
database: ${STORAGE_DATABASE:replication}
schema: ${STORAGE_SCHEMA:public}
host: ${STORAGE_HOST:localhost}
port: ${STORAGE_PORT:5432}
user: ${STORAGE_USER:postgres}
password: ${STORAGE_PASSWORD:postgres}
pool:
max-size: ${STORAGE_POOL_SIZE:30}
Параметры настроек
type- тип, postgres|kafka, например:STORAGE_TYPE:postgres;connection- параметры подключения к базе.
2.2.6.2.3. Секция kafka
Секция kafka определяет настройки взаимодействия через СМЭВ4-адаптер между Поставщиком данных (producer) и
Получателем данных (consumer).
Здесь же задаются настройки параметров подключения к шине данных Apache Kafka.
Например:
kafka:
agent.topic.prefix: ${AGENT_TOPIC_PREFIX:}
max-concurrent-handle: ${KAFKA_MAX_CONCURRENT_HANDLE:100}
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:
delta-apply-request: ${kafka.external.topic.prefix}delta.in.rq
property:
bootstrap.servers: ${kafka.external.bootstrap.servers}
group.id: ${kafka.external.topic.prefix}podd-adapter-group-repl
auto.offset.reset: earliest
enable.auto.commit: false
producer:
refresh-interval: 60s
delta-apply-notification: ${kafka.internal.topic.prefix}subscription.in
property:
bootstrap.servers: ${kafka.internal.bootstrap.servers}
Параметры конфигурации
topic- префикс для топиков агента СМЭВ4, напримерAGENT_TOPIC_PREFIX;max-concurrent-handle- максимальное количество обработчиков входящих запросов, напримерKAFKA_MAX_CONCURRENT_HANDLE:100;commit-interval- периодичность фиксации оффсета обработанных сообщений, напримерKAFKA_COMMIT_INTERVAL:5s.
2.2.6.2.4. Секция environment
В секции environment выбирается среда разработки (например, значение test, prod и т.д).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры конфигурации
name- название окружения, напримерENVIRONMENT_NAME:test.
2.2.6.2.5. Секция zookeeper
В секции zookeeper настраиваются параметры подключения к Zookeeper.
Например:
zookeeper:
connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost}
connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000}
session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:8640000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
Параметры настроек
connection-string- Подключение к Zookeeper DS, напримерZZOOKEEPER_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;chroot- Zookeeper DS chroot path, напримерZOOKEEPER_DS_CHROOT:/adapter.
2.2.6.2.6. Секция logging
Секция logging предназначена для настройки журналирования запросов и ответов.
Например:
logging:
scl.delta:
enabled: ${SCL_DELTA_ENABLED:false}
Параметры конфигурации
enabled- Журналировать события SCL delta, например:SCL_DELTA_ENABLED:false.
LOG_FORMAT - Логирование в формате (JSON/TEXT) - указывается в logback.xml.
2.2.6.2.7. Секция metrics
Секция metrics предназначена для настроек порта получения метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры настроек
port- Порт для получения метрик, например{METRICS_PORT:9837}.
2.2.7. Настройка CSV-Uploader
2.2.7.1. Конфигурация CSV-uploader (application.yml)
Файл application.yml – основной конфигурационный файл модуля CSV-uploader, в котором задана логика и порядок
работы загрузчика, а также другие настройки необходимые для корректной работы адаптера.
2.2.7.1.1. Пример файла application.yml
# Kafka Prostore
.kafkaUrl: &kafkaUrl ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
http-server:
# Порт для старта веб сервера
port: ${HTTP_PORT:8080}
# Включить веб-сервер
enabled: ${HTTP_ENABLED:true}
send:
# Размер отправляемой порции данных
chunk-row-count: ${CHUNK_ROW_COUNT:1000}
# Размер буфера на чтение файла
file-buffer-size: ${FILE_BUFFER_SIZE:1048576}
# Количество Job на чтение
read-job-count: ${READ_JOB_COUNT:4}
# Размер Channel для сериализации
serialize-channel-size: ${SERIALIZE_CHANNEL_SIZE:20}
# Количество Job на сериализацию
serialize-job-count: ${SERIALIZE_JOB_COUNT:4}
# Размер Job на отправку
send-channel-size: ${SEND_CHANNEL_SIZE:20}
# Количество Job на отправку
send-job-count: ${SEND_JOB_COUNT:4}
file-size:
# Ограничение на размер оправляемого файла (мегабайты)
restriction: ${SEND_FILE_SIZE_RESTRICTION:1024}
logging.level:
root: info
ru.itone: debug
environment:
# Название окружения
name: ${ENVIRONMENT_NAME:test}
# Папка для ошибочных файлов
error-folder: ${ENVIRONMENT_ERROR_FOLDER:error}
zookeeper:
# Адрес сервера zookeeper
connection-string: ${ZK_CONNECTION:localhost}
# Таймаут сессии
session-timeout-ms: ${ZK_SESSION_TIMEOUT_MS:30000}
# Таймаут подключения
connection-timeout-ms: ${ZK_CONNECTION_TIMEOUT_MS:86400000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
migration:
enabled: ${MIGRATION_ENABLE:false}
prostore-rest-client:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:8}
prostore:
zookeeper:
# Адрес сервера zookeeper для загрузки данных в простор
connection-string: ${ZK_PROSTORE_CONNECTION:locahost:2181}
validation:
enable: ${VALIDATION_ENABLE:true}
rest-uploader-url: ${REST_UPLOADER_URL:http://localhost:8081}
# обязательность использования ФЛК
mandator: ${VALIDATION_MANDATOR:false}
upload:
# требуется токен для аутентификации на rest-uploader
jwt-auth: ${JWT_AUTH:false}
kafka:
create-topic:
# Количество партиций на загрузку через EDML
num-partitions: ${EDML_UPLOAD_NUM_PARTITIONS:1}
# Фактор репликации при создании топика
replication-factor: ${EDML_UPLOAD_REPLICATION_FACTOR:1}
topic:
# Топик для журналирования
journal-log: journal.log
flk-log: flk.log
consumer:
# Количество партиций на выгрузку через EDML
num-partitions: ${EDML_DOWNLOAD_NUM_PARTITIONS:1}
property:
bootstrap.servers: *kafkaUrl
group.id: csv-uploader
auto.offset.reset: earliest
enable.auto.commit: true
producer:
property:
bootstrap.servers: *kafkaUrl
# Настройки парсера 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}
metrics:
port: ${METRICS_PORT:9837}
backup:
zk-path: ${CSV_UPLOADER_BACKUP_ZK_PATH:/${environment.name}/csv-uploader/config}
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}
group.id: ${CSV_UPLOADER_BACKUP_GROUP_ID:csv_uploader_adapter_command}
auto.offset.reset: latest
producer:
property:
bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost}
jet-connector:
use: ${JET_CONNECTOR_USE:true}
2.2.7.2. Параметры конфигурации
Настройка конфигурации CSV-uploader осуществляется путем редактирования параметров настроек в файле application.yml.
Некоторые настройки доступны для редактирования через пользовательский интерфейс модуля, например,
Настройка отображения количества записей и Запуск по расписанию в Журнале операций .
В файле конфигурации CSV-uploader могут быть настроены следующие секции:
kafkaUrl- URL для доступа к Kafka;http-server- настройки порта подключения;send- настройка отправки файлов;file-size- ограничение на размер отправляемого файла (мегабайты);logging.level- настройка сохранения лог-файла;environment- определяет значение среды разработки;zookeeper- настройка подключения Zookeeper;migration- настройка миграции зукипера для задачи бекапирования;prostore-rest-client- блок параметров конфигурирования взаимодействия с ProStore;prostore- адрес сервера zookeeper для загрузки данных в ProStore;validation- включение/выключение механизма валидации загрузки с помощью модуля REST-Uploader;upload- требование токена для аутентификации на REST-Uploader;kafka- настройка подключения к шине данных Apache Kafka;csv-parser- настройка парсинга CSV;metrics- настройка получения метрик;backup- настройка бэкапирования модуля;jet-connector- подготовлен для оптимизации задержек записи.
2.2.7.2.1. Секция kafkaUrl
В секция kafkaUrl указывается URL-адрес для доступа к Apache Kafka (ProStore).
Например:
.kafkaUrl: &kafkaUrl ${KAFKA_BOOTSTRAP_SERVERS:dev-dtm-one05.ru-central1.internal:9092}
Параметры конфигурации
KAFKA_BOOTSTRAP_SERVERS - URL-адрес для доступа к Apache Kafka (ProStore).
2.2.7.2.2. Секция http-server
Секция http-server предназначена для настройки порта и протокола передачи данных (одно из значений http или https).
Например:
http:
port: ${HTTP_PORT:8080}
enabled: ${HTTP_ENABLED:true}
Параметры конфигурации
port- порт для старта веб-сервера, напримерHTTP_PORT:8080;enabled- статус включения/отключения веб-сервера, напримерHTTP_ENABLED:true.
2.2.7.2.3. Секция send
В секции send настраивается отправка файлов.
Например:
send:
chunk-row-count: ${CHUNK_ROW_COUNT:1000}
file-buffer-size: ${FILE_BUFFER_SIZE:1048576}
read-job-count: ${READ_JOB_COUNT:4}
serialize-channel-size: ${SERIALIZE_CHANNEL_SIZE:20}
serialize-job-count: ${SERIALIZE_JOB_COUNT:4}
send-channel-size: ${SEND_CHANNEL_SIZE:20}
send-job-count: ${SEND_JOB_COUNT:4}
Параметры конфигурации:
chunk-row-count- размер отправляемой порции данных, напримерCHUNK_ROW_COUNT:100;file-buffer-size- размер буфера на чтение файла, напримерFILE_BUFFER_SIZE:1048576;read-job-count- количество Job на чтение, напримерREAD_JOB_COUNT:4;serialize-channel-size- размерChannelдля сериализации, напримерSERIALIZE_CHANNEL_SIZE:20;serialize-job-count- количество задач на сериализацию, напримерSERIALIZE_JOB_COUNT:4;send-channel-size- размер задач на отправку, напримерSEND_CHANNEL_SIZE:20;send-job-count- количество задач на отправку, напримерSEND_JOB_COUNT:4;
2.2.7.2.4. Секция file-size
Секция file-size отвечает за ограничение на размер отправляемого файла (указывется в мегабайтах).
file-size:
#
restriction: ${SEND_FILE_SIZE_RESTRICTION:1024}
Параметры конфигурации
restriction- ограничение на размер отправляемого файла, напримерSEND_FILE_SIZE_RESTRICTION:1024.
2.2.7.2.5. Секция logging.level
В секции logging.level настраиваются записи логирования.
Например:
logging.level:
root: info
ru.itone: debug
2.2.7.2.6. Секция environment
В секции environment выбирается среда разработки (например, значение test, prod и т.д).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
error-folder: ${ENVIRONMENT_ERROR_FOLDER:error}
Параметры конфигурации
name- название окружения, напримерENVIRONMENT_NAME:test;error-folder- папка для ошибочных файлов, напримерENVIRONMENT_ERROR_FOLDER:error.
2.2.7.2.7. Секция zookeeper
В секции zookeeper настраиваются параметры подключения к серверу Zookeeper.
Например:
zookeeper:
# Адрес сервера zookeeper
connection-string: ${ZK_CONNECTION:localhost}
# Таймаут сессии
session-timeout-ms: ${ZK_SESSION_TIMEOUT_MS:30000}
# Таймаут подключения
connection-timeout-ms: ${ZK_CONNECTION_TIMEOUT_MS:86400000}
chroot: ${ZOOKEEPER_DS_CHROOT:/adapter}
Параметры конфигурации
connection-string- адрес сервера Zookeeper, напримерZK_CONNECTION:localhost;session-timeout-ms- таймаут сессии, напримерZK_SESSION_TIMEOUT_MS:30000;connection-timeout-ms- таймаут подключения, напримерZK_CONNECTION_TIMEOUT_MS:86400000;chroot- Zookeeper DS chroot path, напримерZOOKEEPER_DS_CHROOT:/adapter.
2.2.7.2.8. Секция migration
В секции migration реализована настройка миграции зукипера для задачи бекапирования.
Например:
migration:
enabled: ${MIGRATION_ENABLE:false}
Параметры настроек
enabled- включение миграции (по умолчанию выключена), например{MIGRATION_ENABLE:false}.
2.2.7.2.9. Секция prostore-rest-client
В секции prostore-rest-client реализован блок параметров конфигурирования взаимодействия с ProStore.
Например:
prostore-rest-client:
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.
2.2.7.2.10. Секция prostore
В секции prostore указывается адрес сервера zookeeper для загрузки данных в Prostore.
Например:
prostore:
zookeeper:
connection-string: ${ZK_PROSTORE_CONNECTION:locahost:2181}
Параметры настроек
connection-string- адрес сервера Zookeeper для загрузки данных в Prostore, напримерZK_PROSTORE_CONNECTION:locahost:2181.
2.2.7.2.11. Секция validation
В секции validation реализован механизм настройки валидации ФЛК.
Например:
enable: ${VALIDATION_ENABLE:true}
rest-uploader-url: ${REST_UPLOADER_URL:http://localhost:8081}
mandator: ${VALIDATION_MANDATOR:false}
Параметры конфигурации
enable- валидация включена (по умолчанию), например{VALIDATION_ENABLE:true};rest-uploader-url- URL к сервису rest-uploader для выполнения валидации, например{REST_UPLOADER_URL:http://localhost:8081};mandator- флаг использования ФЛК, например{VALIDATION_MANDATOR:false}.
2.2.7.2.12. Секция upload
В секции upload реализована настройка требования токена для аутентификации на REST-Uploader (если true, то при переключении на вкладку
Загрузка появляется модальное окно для задания токена в текстовом виде и кнопка Сохранить).
Например:
upload:
jwt-auth: ${JWT_AUTH:false}
Параметры конфигурации
jwt-auth- требование токена для аутентификации на REST-Uploader, например{JWT_AUTH:false}.
2.2.7.2.13. Секция kafka
В секции kafka настраиваются параметры подключения к шине данных Apache Kafka.
Например:
kafka:
create-topic:
num-partitions: ${EDML_UPLOAD_NUM_PARTITIONS:1}
replication-factor: ${EDML_UPLOAD_REPLICATION_FACTOR:1}
topic:
journal-log: journal.log
consumer:
num-partitions: ${EDML_DOWNLOAD_NUM_PARTITIONS:1}
property:
bootstrap.servers: *kafkaUrl
group.id: csv-uploader
auto.offset.reset: earliest
enable.auto.commit: true
producer:
property:
bootstrap.servers: *kafkaUrl
Параметры конфигурации
num-partitions- количество партиций на загрузку через EDML, напримерEDML_UPLOAD_NUM_PARTITIONS:1;replication-factor- фактор репликации при создании топика, напримерEDML_UPLOAD_REPLICATION_FACTOR:1.
2.2.7.2.14. Секция 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:';Настройка интерпретации значений как null. Допустимые значения:
EMPTY_SEPARATORS - пустое значение между двумя разделителями, например ;;
EMPTY_QUOTES - пустые кавычки, например ;»»;
BOTH - оба варианта
NEITHER - никогда. Пустая строка всегда определяется как пустая строка
field-as-null- способ определения null поля, напримерCSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS.
Дополнительное описание параметров
Параметр
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»].
2.2.7.2.15. Секция metrics
Секция metrics предназначена для настройки параметров метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры конфигурации
port- Порт для метрик, напримерMETRICS_PORT:9837.
2.2.7.2.16. Секция 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}.
2.2.7.2.17. Секция jet-connector
Секция jet-connector предназначена для оптимизации задержек записи данных.
Например:
jet-connector:
use: ${JET_CONNECTOR_USE:false}
Параметры настроек
use- флаг активации jet-connector, например{JET_CONNECTOR_USE:false};
Режим/СУБД |
ADB |
ADP |
ADQM |
ADG |
|---|---|---|---|---|
Чтение |
Нет |
Нет |
Нет |
Нет |
Запись |
В перспективе |
Да |
Нет |
Нет |
Чтобы воспользоваться Jet-коннектор требуется вместо upload external table создавать readable external table, указывающую на топик,
как отражено в документации Prostore
В модуль MPPW не передается информация о том, в какую БД физически будут загружаться данные, синтаксис Простора един для всех поддерживаемых СУБД. Конкретная СУБД указывается в настройках Простора.
Даже если загрузка данных выполняется в более чем одну базу, на работе адаптеров это не сказывается.
При формировании запросов с табличными параметрами, в том числе при регистрации РЗ, необходимо явно перечислять поля таблиц, по которым будет выполняться фильтрация записей или объединение таблиц.
Переключение с jet-connector на kafka postgres writer и наоборот допускается при завершенных операциях загрузки данных.
Предупреждение
Jet-коннектор в настоящее время применим для ADP, что делает его применимым, только для иснталляций одной единственной СУБД ADP. Это ограничение остается на уровне документации при использовании Jet-коннектор с другими базами должна появиться ошибка.
2.2.8. Настройка Агента СМЭВ4
Порядок установки и описание настроек Агента СМЭВ4 см. в документе: «17514186.СМЭВ-2021-3.О1.РА Руководство администратора СМЭВ4».
Описание формата взаимодействия между Агентом ПОДД и ПОДД-адаптером (название топиков, формат сообщений, схема взаимодействия) описан в документе Спецификация Модуля исполнения запросов.
2.2.9. Настройка взаимодействия программы с Агентом СМЭВ4
После установки программы и Агента СМЭВ4 надо настроить их взаимодействие между собой. Для этого:
Настройте Агента СМЭВ4 и ПОДД-адаптер на работу с одним и тем же брокером сообщения Kafka:
Если вместе с Агентом СМЭВ4 устанавливается брокер сообщений Kafka, а Агент СМЭВ4 преднастроен на работу именно с этим экземпляром брокера сообщений, то укажите адрес этого брокера сообщений в конфигурационном файле ПОДД-адаптера (application.yml), параметр
kafkaUrl.Если вместе с Агентом СМЭВ4 не устанавливается брокер сообщений Kafka, то в Агенте СМЭВ4 согласно его документации настройте работу с брокером сообщений Kafka, установленным с программой. Для этого используйте адрес сервера Kafka из конфигурационного файла ПОДД-адаптера (application.yml), параметр
kafkaUrl.
Настройте названия топиков (см.
tab_topic_name) для обмена сообщениями в конфигурационном файле ПОДД-адаптера (application.yml).
№ |
Назначение |
Настройка |
Значение по умолчанию |
|---|---|---|---|
1 |
Получение запросов |
|
|
2 |
Ответы на запросы |
|
|
3 |
Ошибки запросов |
|
|
4 |
Результат запроса оценки |
|
|
Формат обмена электронными сообщениями с ПОДД-адаптер описан в разделе Спецификация Модуля исполнения запросов.