Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Распределение нагрузки по Transcoder узлам

Определение загрузки узла, исходя из загрузки процессора

Если в CDN входят несколько Transcoder узлов с одинаковыми профилями, нагрузка по таким узлам распределяется, исходя из загрузки процессора. Максимально допустимая загрузка конкретного Transcoder узла определяется настройкой

...

Эта величина задает соотношение между средней загрузкой процессора (параметр JVM SystemLoadAverage) и количеством процессорных ядер с учетом гипертрединга. Если значение превышено, Transcoder перестает участвовать в выборе маршрута для новых потоков и профилей. При этом в секции PROFILE данный узел отображается в маршрутах потока для тех профилей, по которым уже транскодируется этот поток.Настройка должна задаваться на Transcoder узлах.

Текущее состояние узла (участвует ли он в выборе маршрута для новых потоков) можно определить при помощи REST API. Узел в статусе NEW_STREAMS_ALLOWED может принимать новые потоки для транскодирования, узел в статусе GROUP_CONNECTION_ALLOWED может только отдавать потоки, которые на нем уже транскодируются.

Настройка должна задаваться на Transcoder узлах. Также эта настройка может задаваться на Origin узлах, в этом случае при помощи REST API можно контролировать загрузку Origin сервера и при достижении статуса GROUP_CONNECTION_ALLOWED публиковать потоки на другом Origin сервере.

Равномерное распределение нагрузки по узлам

Для того, чтобы потоки по доступным Transcoder узлам распределялись равномерно, для транскодирования нового потока выбирается следующий свободный узел (алгоритм Round Robin). При этом, чтобы один и тот же опубликованный поток при одновременном запросе с нескольких клиентов не расходился по нескольким Transcoder узлам, предусмотрено кэширование по имени потока. Интервал времени кэширования задается в миллисекундах при помощи настройки

Code Block
themeRDark
cdn_transcoder_for_new_connects_expire_ms=10000

В данном случае интервал кэширования составит 10 секунд.

Настройка должна задаваться на Transcoder узлах

Предотвращение транскодирования на Origin

Для того, чтобы Origin узлы не принимали на себя транскодинг, если все Transcoder узлы заняты, предусмотрена настройка

Code Block
themeRDark
cdn_origin_allowed_to_transcode=false

В данном случае (по умолчанию), если для транскодирования нового потока по указанному профилю нет доступных Transcoder узлов, поток не будет играться с ошибкой No available transcoders.

При необходимости, транскодирование на Origin серверах можно разрешить

Code Block
themeRDark
cdn_origin_allowed_to_transcode=true

Эта настройка должна задаваться на Edge узлах.

Получение текущего состояния узла при помощи REST API

...

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/cdn/show_nodes



Code Block
languagejs
themeRDark
[
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.64", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "TRANSCODER"
    }, 
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.39", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "ORIGIN"
    }
]

200 – OK

500 – Internal Server Error

Показать состояние узлов CDN

Параметры

Имя параметра

Описание

Пример

globalState

Статус узла: ACTIVE или PASSIVE

ACTIVE

id

Адрес узла

192.168.1.64
processingState

Участвует ли узел в выборе маршрута для воспроизведения потоков:

NEW_STREAMS_ALLOWED - участвует

GROUP_CONNECTION_ALLOWED - не участвует

NEW_STREAMS_ALLOWED
roleРоль узла: ORIGIN, TRANSCODER или EDGE
ORIGIN

Запрос /cdn/show_nodes может быть направлен определенному узлу, в ответ узел вернет состояния всех видимых ему узлов CDN, кроме себя самого.

...