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 стримерами.