Архитектура платформы 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 читайте в соответствующей статье.

Управление микросервисами

Микросервисы управляются через сервисы 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-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