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

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

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