Архитектура платформы 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.
Специфичные опции для gateway-tvip-tms-provider-api
application:
provider:
device_limit_visible: true
network:
access-networks:
enabled: true
restriction-type: blocked
networks:
- X.X.X.X/24
- Y.Y.Y.Y/32
Опция device_limit_visible предоставляет администраторам субпровайдеров TMS, использующим Провайдер-портал, доступ к управлению лимитом пользовательских устройств.
Подраздел network определяет опции сетевого взаимодействия для шлюза. Внутри него определена опция access-networks, отвечающая за ограничение доступа к шлюзу и имеющая следующие свойства:
enabled - управляет включением опции ограничения доступа, может принимать занчение true или false;
restriction-type - управляет тем, разрешат или запрещает данная опция доступ для выбранных сетей, может принимать значение allowed или blocked;
networks - определяет сети, к которым применяется данная опция.
Специфичные опции для gateway-tvip-tms-admin-api
application:
network:
access-networks:
enabled: true
restriction-type: blocked
networks:
- X.X.X.X/24
- Y.Y.Y.Y/32
Подраздел network определяет опции сетевого взаимодействия для шлюза. Внутри него определена опция access-networks, отвечающая за ограничение доступа к шлюзу и имеющая следующие свойства:
enabled - управляет включением опции ограничения доступа, может принимать занчение true или false;
restriction-type - управляет тем, разрешат или запрещает данная опция доступ для выбранных сетей, может принимать значение allowed или blocked;
networks - определяет сети, к которым применяется данная опция.
Общая конфигурация менеджера
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'
vod-rating-sort: true
Подключение к базы данных TMDB c помощью ключа API, передаваемого в свойстве api-key блока tmdb, включает возможность автоматического импорта информации о фильмах и сериалах в разделе VoD.
Свойство vod-rating-sort служит для выбора режима сортировки выдаваемого VOD-контента в рамках жанра. При значении true VOD-контент сортируется по рейтингу IMDB (данный метод сортировки используется по умолчанию), при значении false - по дате добавления в TMS.
Специфичные опции для 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-21-jremongodb-org(>=4.2)rabbitmq-server(>=3.6)postgresql(>=10.0)nginx(>=1.14)manager-tvip-tms-finite-statemanager-tvip-tms-weather- отключен, не используетсяmanager-tvip-tms-vodmanager-tvip-tms-vncmanager-tvip-tms-tvip-apimanager-tvip-tms-reportmanager-tvip-tms-profilemanager-tvip-tms-mediamanager-tvip-tms-filemanager-tvip-tms-epgmanager-tvip-tms-commandmanager-tvip-tms-casmanager-tvip-tms-admin-apimanager-tvip-authmanager-tvip-tms-statsmanager-tvip-tms-auditgateway-tvip-tms-tvip-apigateway-tvip-tms-provider-apigateway-tvip-tms-admin-apigateway-tvip-tms-activation-apigateway-tvip-file-apigateway-tvip-cas-apigateway-tvip-tms-websocketgateway-tvip-tms-vncgateway-tvip-tms-stats-apigateway-tvip-tms-commandmanager-tvip-tms-searchmanager-tvip-tms-metrics