Архитектура платформы TVIP TMS
TMS является серверным микросервисным приложением.
Базовая поставка TVIP TMS позволяет установить все микросервисы на один сервер. При необходимости платформу можно разделить на несколько серверов, горизонтально масштабировать необходимые сервисы для обработки большего числа клиентов.
Микросервисная архитектура позволяет резервировать критические подсистемы на нескольких физических серверах или локациях.
Конфигурации, отличающиеся от базовой поставки, поставляются индивидуально для каждого клиента, исходя из его потребности и задач.
Примечание
В приведенных ниже примерах access-token-secret
и refresh-token-secret
требуется изменить на свои уникальные значения, если платформа установлена через пакет tvip-tms-standalone
в общем случае дополнительные настройки не требуются.
Конфигурация микросервисов
/opt/tvip-tms/manager
- каталог микросервисов менеджеров
/opt/tvip-tms/gateway
- каталог микросервисов шлюзов
Конфигурация микросервиса хранится в файле application-prod.yml
каталога микросервиса
Общая конфигурация шлюза
application:
jwt:
access-token-secret: 'access-token-secret'
refresh-token-secret: 'refresh-token-secret'
network:
trusted-proxies:
- 127.0.0.1
Специфичные опции для gateway-tvip-tms-tvip-api
application:
features:
vod: true
wowza:
app:
secret:
key: yourverysecretkey
ttl: 87000
features.vod включает поддержку VoD в клиентских приложениях.
Раздел wowza определяет ключ (key) и время жизни токена (ttl) для защиты потоков Wowza.
Общая конфигурация менеджера
spring:
datasource:
url: jdbc:postgresql://127.0.0.1:5432/tvip-tms
username: tvip-tms
password:
application:
jwt:
access-token-secret: 'access-token-secret'
refresh-token-secret: 'refresh-token-secret'
Специфичные опции для manager-tvip-tms-file
spring:
liquibase:
url: jdbc:postgresql://127.0.0.1:5432/tvip-tms
user: tvip-tms
password:
r2dbc:
host: 127.0.0.1
port: 5432
database: tvip-tms
username: tvip-tms
password:
datasource:
url: jdbc:postgresql://127.0.0.1:5432/tvip-tms
username: tvip-tms
password:
Специфичные опции для manager-tvip-tms-vod
tmdb:
api-key: 'your_tmdb_api_key'
При подключении базы данных TMDB включается возможность автоматического импорта информации о фильмах и сериалах в разделе VoD.
Специфичные опции для manager-tvip-tms-vod-viju
Пакет интеграции кинотеатра viju не входит в стандартную поставку, и при необходимости может быть установлен вручную.
О настройке библиотеки viju читайте в соответствующей статье.
Специфичные опции для manager-tvip-tms-search
Примечание
Сервис поиска по умолчанию выключен, требуется дополнительная настройка и активация:
systemctl enable manager-tvip-tms-search
systemctl start manager-tvip-tms-search
elasticsearch:
host: 127.0.0.1
port: 9200
scheme: http
username: tms
password: your_password
refresh-interval: 60s
number-of-shards: 1
Управление микросервисами
Микросервисы управляются через сервисы system.d
, микросервисы загружают свои конфигурации только при запуске и рестарте.
systemctl start <name>
- запуск микросервиса
systemctl stop <name>
- остановка микросервиса
systemctl restart <name>
- перезапуск микросервиса
Микросервисы менеджеры при запуске проверяют необходимость обновления структур базы данных и миграций, в некоторых случаях миграции могут продолжаться продолжительное время.
Обновление платформы перезапускает все обновленные сервисы, что может привести к последовательному обновлению БД каждым микросервисом.
Существует три Postgresql БД TMS: tvip-tms
, tvip-tms-audit
, tvip-tms-vod
. Ведется работа по дальнейшему разделению БД tvip-tms
по доменным зонам.
В случае, если несколько микросервисов будут обновлять одну БД, процедура будет проведена последовательно, что также увеличивает время старта.
Лог файлы микросервисов
Предупреждение
По умолчанию логирование отключено.
Активация логов возможна через редактирование конфигурации application-prod.yml
микросервиса:
Для применения изменений необходимо перезапустить микросервис.
Все лог файлы хранятся в директориях /var/log/tvip-tms/
.
Файлы разделены по типам:
application.log
- основной лог файлframework.log
- сервисный лог файлaccess.log
- информация о взаимодействиях с внешними системамиaudit.log
- расширенная информация о взаимодействиях с внешними системами
Зависимости TMS на примере tvip-tms-standalone:
openjdk-17-jre
mongodb-org
(>=4.2)rabbitmq-server
(>=3.6)postgresql
(>=10.0)nginx
(>=1.14)manager-tvip-tms-finite-state
manager-tvip-tms-weather
- отключен, не используетсяmanager-tvip-tms-vod
manager-tvip-tms-vnc
manager-tvip-tms-tvip-api
manager-tvip-tms-report
manager-tvip-tms-profile
manager-tvip-tms-media
manager-tvip-tms-file
manager-tvip-tms-epg
manager-tvip-tms-command
manager-tvip-tms-cas
manager-tvip-tms-admin-api
manager-tvip-auth
manager-tvip-tms-stats
manager-tvip-tms-audit
gateway-tvip-tms-tvip-api
gateway-tvip-tms-provider-api
gateway-tvip-tms-admin-api
gateway-tvip-tms-activation-api
gateway-tvip-file-api
gateway-tvip-cas-api
gateway-tvip-tms-websocket
gateway-tvip-tms-vnc
gateway-tvip-tms-stats-api
gateway-tvip-tms-command
manager-tvip-tms-search
manager-tvip-tms-metrics