2. Конфигурация модуля Counter-Provider (application.yml)
Файл application.yml – основной конфигурационный файл модуля, в котором задана его логика и порядок работы сервиса:
среда разработки;
настройка счетчика;
настройка подключения к Zookeeper, а также другие настройки необходимые для корректной работы сервиса.
3. Пример файла application.yml
В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач.
environment:
name: ${ENVIRONMENT_NAME:test}
http-server:
port: ${HTTP_PORT:9000}
counter:
start-number: ${COUNTER_START_NUMBER:1}
retry-after-failure: ${COUNTER_RETRY_AFTER_FAILURE:3}
update-timeout: ${COUNTER_UPDATE_TIMEOUT:}
increment-gap: ${INCREMENT_GAP:1}
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}
persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper
prostore-rest-client:
host: ${PS_HOST:localhost}
port: ${PS_PORT:9195}
http:
max-pool-size: ${PS_MAX_POOL_SIZE:5}
persistence-datamart: ${PERSISTENCE_DATAMART:persistence}
datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора
counter-prefix: ${COUNTER_PREFIX:counter_}
readonly-retry-delay: ${READONLY_RETRY_DELAY:5s}
spring:
liquibase:
enabled: ${LIQUIBASE_ENABLED:true}
analytics-enabled: false
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: ru.datamart.prostore.jdbc.Driver
url: jdbc:prostore://${prostore-rest-client.host}:${prostore-rest-client.port}/${prostore-rest-client.persistence-datamart}
database-change-log-table: counter_provider_changelog
database-change-log-lock-table: counter_provider_changeloglock
liquibase-schema: ${prostore-rest-client.persistence-datamart}
default-schema: ${prostore-rest-client.persistence-datamart}
user: ""
password: ""
# Настройки модуля сбора информации о компонентах витрины
component-info:
enabled: true
# Массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте
datasource: []
# Схема Prostore
datamart: component_info
# Имя таблицы для записи информации о компоненте
table-name: component_info
# Период попыток создания схемы, при неуспехе
create-table-period: 60s
# Период публикации health-check
publish-period: 60s
# Период после которого компонент считается неактивным при отсутствии health-check
timeout-active: 300s
# Список элементов конфига маскируемых при отправке,
# если указан узловой элемент, то маскируются все вложенные в него элементы
secrets:
- keys
- http-server.port
- zookeeper.connection-string
- zookeeper.chroot
- prostore-rest-client.host
- prostore-rest-client.port
- metrics.port
metrics:
port: ${METRICS_PORT:9837}
4. Параметры конфигурации
Настройка конфигурации сервиса генерации уникального номера осуществляется путем редактирования параметров настроек в
файле application.yml, где настраиваются секции:
environment- указывается среда разработки;http-server- указывается порт веб-сервера;counter- указываются настройки счетчика;zookeeper- определяет настройки подключения к Zookeeper;persistence-mode- настройки хранения данных;prostore-rest-client- блок параметров конфигурирования взаимодействия с Prostore;spring- параметры для определения наименований служебных таблиц liquibase;component-info- настройки модуля сбора информации о компонентах витрины;metrics- настройка порта для получения метрик.
4.1. Секция environment
В секции environment указывается среда разработки (dev, test, stable, prod).
Например:
environment:
name: ${ENVIRONMENT_NAME:test}
Параметры настроек
name- среда разработки, напримерENVIRONMENT_NAME:test.
4.2. Секция http-server
В секции http-server указывается порт веб-сервера.
Например:
http-server:
port: ${HTTP_PORT:9000}
Параметры настроек
port- порт веб-сервера, например:HTTP_PORT:9000.
4.3. Секция counter
В секции counter можно настраивать начальный номер счетчика, а также количество попыток записи счетчика после ошибки
обновления.
Например:
counter:
start-number: ${COUNTER_START_NUMBER:1}
retry-after-failure: ${COUNTER_RETRY_AFTER_FAILURE:3}
update-timeout: ${COUNTER_UPDATE_TIMEOUT:}
increment-gap: ${INCREMENT_GAP:1}
Параметры настроек
start-number- начальный номер счетчика, напримерCOUNTER_START_NUMBER:1;retry-after-failure- количество попыток записи счетчика после ошибки обновления, напримерCOUNTER_RETRY_AFTER_FAILURE:3;update-timeout- таймаут обновления счетчика, напримерCOUNTER_UPDATE_TIMEOUT:;increment-gap- шаг инкремента, напримерINCREMENT_GAP:1.
4.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}
Параметры настроек
connection-string- Подключение к Zookeeper DS, напримерZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal;connection-timeout-ms- Zookeeper DS таймаут подключения, напримерZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000;session-timeout-ms- Zookeeper DS таймаут сессии, напримерZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000;chroot- Zookeeper DS chroot path, напримерZOOKEEPER_DS_CHROOT:/adapter.
4.5. Секция persistence-mode
В секции persistence-mode указывается настройка хранения данных: или в Prostore, или в Zookeeper. В случае
выбора Prostore автоматически создаются необходимые таблицы.
Например:
persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper
Параметры настроек
persistence-mode- настройка хранения данных, напримерPERSISTENCE_MODE:prostore.
Если в конфигурации задана настройка persistence-mode: prostore, при запуске Counter-provider выполняется миграция счетчиков из sequence в логические таблицы
Prostore (с использованием liquibase).
Внимание
Миграция из Zookeeper в логические таблицы Prostore не реализуется. При необходимости миграции счетчиков из Zookeeper необходимо выполнить последовательное обновление через одну из версий Витрины из диапазона с 1.16.х по 2.6.х
4.6. Секция 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:5}
persistence-datamart: ${PERSISTENCE_DATAMART:persistence}
datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора
counter-prefix: ${COUNTER_PREFIX:counter_}
readonly-retry-delay: ${READONLY_RETRY_DELAY:5s}
Параметры настроек
host- адрес Prostore, напримерPS_HOST:localhost;port- порт Prostore, напримерPS_PORT:9195;max-pool-size- максимальное число подключений к Prostore, напримерPS_MAX_POOL_SIZE:8;persistence-datamart- настройка хранения данных, например{PERSISTENCE_DATAMART:persistence};datasource- источник данных, напримерPERSISTENCE_DATASOURCE:, по умолчанию пусто, в этом случае берется единственный датасорс из настроек Простора;counter-prefix- префикс счетчика;readonly-retry-delay- время задержки перед повтором отправки запроса к простору в случае ошибки readonly.
4.7. Секция spring
В секции spring указываются параметры для определения наименований служебных таблиц liquibase.
Например:
spring:
liquibase:
enabled: ${LIQUIBASE_ENABLED:true}
analytics-enabled: false
change-log: classpath:/liquibase-changes/changelog.xml
driver-class-name: ru.datamart.prostore.jdbc.Driver
url: jdbc:prostore://${prostore-rest-client.host}:${prostore-rest-client.port}/${prostore-rest-client.persistence-datamart}
database-change-log-table: counter_provider_changelog
database-change-log-lock-table: counter_provider_changeloglock
liquibase-schema: ${prostore-rest-client.persistence-datamart}
default-schema: ${prostore-rest-client.persistence-datamart}
user: ""
password: ""
Параметры настроек
enabled- признак включения/отключения миграций;analytics-enabled- флаг подключения статистики;change-log- путь к файлам миграций, которые находятся внутри jar;driver-class-name- имя JDBC-драйвера Prostore. Константа, без переопределения.url- адрес подключения к простору в формате JDBC. Переопределять не потребуется, конструируется из параметров подключения к Prostore.database-change-log-table- имя таблицы хранения истории выполненных миграций;database-change-log-lock-table- имя таблицы для блокировок, константа;liquibase-schema- имя датамарта, в которой распалагаются 2 таблицы (database-change-log-table, database-change-log-lock-table)default-schema- имя датамарта для системных таблиц. Так же заполняется из блока конфигурации Prostore.user- имя пользователя Prostore;password- пароль пользователя Prostore.
4.8. Секция component-info
В секции component-info хранятся настройки компонента сбора информации о компонентах витрины.
Например:
# Настройки модуля сбора информации о компонентах витрины
component-info:
enabled: true
# Массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте
datasource: []
# Схема Prostore
datamart: component_info
# Имя таблицы для записи информации о компоненте
table-name: component_info
# Период попыток создания схемы, при неуспехе
create-table-period: 60s
# Период публикации health-check
publish-period: 60s
# Период после которого компонент считается неактивным при отсутствии health-check
timeout-active: 300s
# Список элементов конфига маскируемых при отправке,
# если указан узловой элемент, то маскируются все вложенные в него элементы
secrets:
- keys
- http-server.port
- zookeeper.connection-string
- zookeeper.chroot
- prostore-rest-client.host
- prostore-rest-client.port
- metrics.port
Параметры настроек
enabled- статус подключения компонента, указывается булево значение;datasource- массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте;datamart- схема Prostore;table-name- имя таблицы для записи информации о компоненте;create-table-period- период попыток создания схемы, при неуспехе, указывается в секундах;publish-period- период публикации health-check, указывается в секундах;timeout-active- период после которого компонент считается неактивным при отсутствии health-check, указывается в секундах;secrets- список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы.
4.9. Секция metrics
В секции metrics настраивается порт получения метрик.
Например:
metrics:
port: ${METRICS_PORT:9837}
Параметры настроек
port- порт для получения метрик, например{METRICS_PORT:9837}.