2. Конфигурация Модуля группировки чанков репликации (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором описаны подключение к сервису Kafka,
порт веб-сервера, и настройки журналирования запросов и ответов.
2.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}
3. Параметры конфигурации
Настройка конфигурации Модуля группировки чанков репликации осуществляется путем редактирования параметров настроек в
файле application.yml, где настраиваются секции:
http-server- указывается порт веб-сервера.storage- блок настроек хранения чанков данных репликации. При изменении параметров необходимо синхронизировать аналогичные параметры в сервисе MPPW.kafka- настройки параметров подключения к шине данных Apache Kafka.logging- настройки журналирования запросов и ответов.metrics- настройка порта для получения метрик.
3.1. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${HTTP_PORT:8084}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:8084.
3.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- параметры подключения к базе.
3.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.
3.4. Секция environment
В секции environment выбирается среда разработки (например, значение test, prod и т.д).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры конфигурации
name- название окружения, напримерENVIRONMENT_NAME:test.
3.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.
3.6. Секция logging
Секция logging предназначена для настройки журналирования запросов и ответов.
Например:
logging:
scl.delta:
enabled: ${SCL_DELTA_ENABLED:false}
Параметры конфигурации
enabled- Журналировать события SCL delta, например:SCL_DELTA_ENABLED:false.
LOG_FORMAT - Логирование в формате (JSON/TEXT) - указывается в logback.xml.
3.7. Секция metrics
Секция metrics предназначена для настроек порта получения метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры настроек
port- Порт для получения метрик, например{METRICS_PORT:9837}.