Skip to content

Cluster Ingest

Cluster Ingest - это механизм отказоустойчивого захвата, который позволяет выдержать гарантию единоразового получения потока с источника. Он нужен в тех сценариях, где надо обеспечить надежный прием видео, но каждое подключение к источнику дорого, нежелательно или вообще невозможно дублировать.

Как работает Cluster Ingest

В этом сценарии поток с внешнего источника в каждый момент времени захватывает только один стример. Остальные стримеры находятся в резерве и не создают повторное подключение к источнику.

Типовая схема выглядит так:

flowchart LR
    source["Source"] --> primary["active origin"]
    primary --> edge["edge сервер"]
    edge --> player["player"]
    backup -.-> edge

    central["контроллер"] -- controls --> primary["primary streamer"]
    central -- controls --> backup["backup streamer"]

В Agora этот сценарий реализуется управляющим сервером контроллер. Именно он следит за состоянием стримеров и управляет переключением захвата. Если первичный стример недоступен или неработоспособен, контроллер отдает команду резервному стримеру на включение захвата.

Таким образом, отказоустойчивость достигается не за счет параллельного двойного приема, а за счет управляемого переключения активного захвата между стримерами.

Когда применять

Cluster Ingest имеет смысл использовать в следующих случаях:

  • каждое получение канала с источника является дорогим;
  • повторное подключение к источнику нежелательно;
  • пропускной способности канала недостаточно для двойной доставки одного и того же потока;
  • требуется отказоустойчивость именно на этапе захвата, а не за счет дублирования входа.

Типичный пример - передача видеопотока из головного офиса в региональный. В такой схеме повторная передача того же канала может быть слишком дорогой по полосе пропускания или вообще невозможной.

Что дает этот сценарий

Основные преимущества Cluster Ingest:

  • отказоустойчивость на уровне захвата;
  • сохранение модели единоразового получения потока;
  • отсутствие постоянного дублирования трафика от источника;
  • возможность переключить захват на резервный стример при отказе первичного.

Ограничения и требования

При проектировании Cluster Ingest нужно учитывать:

  • корректный health-check стримеров со стороны контроллера;
  • время обнаружения отказа первичного стримера;
  • время переключения захвата на резервный стример;
  • требования источника к повторному подключению после сбоя;
  • синхронность конфигурации между primary и backup стримерами.