Платформа → Технологии

Технологии и WebRTC

В основе Krona.Chat — живой видеостриминг по WebRTC на бесплатном open-source медиасервере Janus. Балансировку медиапотоков между серверами Janus мы разработали сами: трансляции автоматически распределяются по сотням серверов в разных гео-зонах, а задержка остаётся в пределах долей секунды.

<500 мстипичная задержка от модели до зрителя
Сотни серверовв одном кластере с автоматической балансировкой по гео
$0за лицензии медиасервера: Janus — open source

Janus — бесплатный open-source медиасервер WebRTC

Трансляции идут через Janus WebRTC Server — медиасервер с открытым исходным кодом. Он бесплатный: за лицензии не нужно платить ни при запуске, ни при росте числа серверов, моделей и зрителей.

Janus работает как SFU (Selective Forwarding Unit): один входящий поток от модели раздаётся множеству зрителей без перекодирования для каждого из них. Поэтому один медиасервер выдерживает большую аудиторию, а видео приходит к зрителю с минимальной задержкой.

Балансировка медиапотоков между серверами Janus

Сам Janus не умеет распределять потоки между серверами — балансировку нагрузки медиапотоков мы реализовали на уровне платформы Krona.Chat. Благодаря ей медиасерверы работают как единый кластер:

Масштаб

Сотни серверов

Нагрузку можно распределять между сотнями медиасерверов — рост числа трансляций и зрителей закрывается добавлением серверов.

Гео

Автоматически по гео-зонам

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

Отказоустойчивость

Автовосстановление потоков

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

Обслуживание

Серверы без простоя

Новые серверы легко добавить в кластер, а любой сервер — вывести из кластера на обслуживание.

Аналогов на рынке нет

Готовых вебкам платформ с мультисерверной балансировкой WebRTC-потоков на бесплатном медиасервере на рынке нет: известные решения работают на одном медиасервере и не масштабируются добавлением серверов.

Мультисерверное решение Krona.Chat выигрывает и технологически, и по стоимости владения: вы не платите за лицензии медиасерверов, а видео с низкой задержкой доставляется через ваши собственные серверы, а не через дорогой CDN с оплатой за каждый гигабайт трафика.

WebRTC вместо HLS: живое видео без отставания

При стриминге через HLS или DASH видео приходит к зрителю с отставанием в десятки секунд. WebRTC передаёт трансляцию в реальном времени — задержка составляет доли секунды. Для вебкам сайта это критично: реакция модели на чат, чаевые и игрушки Lovense, приватные и групповые шоу работают только в живом времени.

Трансляция и просмотр в любом браузере

  • зрители смотрят трансляции в браузере на компьютере (Windows, macOS, Linux) и на смартфоне или планшете (Android, iOS) — без плагинов и приложений;
  • модели выходят в эфир прямо из браузера — с компьютера или с телефона, подробнее на странице кабинета модели;
  • качество видео подстраивается под скорость соединения каждого зрителя, не прерывая трансляцию для остальных.

Стек технологий платформы

На каких технологиях и языках построена вебкам платформа Krona.Chat:

Фронтенд

ReactJS

Фронтенд сайтов платформы: вебкам сайта, кабинетов моделей и партнёров.

Видео

WebRTC

Передача живого видео и звука в браузере с задержкой в доли секунды.

Медиасервер

Janus

Бесплатный open-source медиасервер WebRTC, работающий как SFU.

Балансировка медиа

Медиабалансировщик Krona.Chat

Наша разработка: распределяет медиапотоки между серверами Janus по гео-зонам.

Балансировка трафика

Cloudflare

Балансировщик веб-трафика сайтов платформы.

Бэкенд

PHP 8.5

Серверный язык платформы.

Медиапотоки

C (Си)

Работа с медиапотоками и сервером Janus.

СУБД

MariaDB 11.x / 12.x

Реляционная база данных платформы.

Кластер БД

Galera Cluster

Кластер MariaDB Galera — минимум из трёх серверов для отказоустойчивости базы данных.

Сколько медиасерверов нужно вебкам сайту

Ориентир: один выделенный медиасервер с гарантированным портом 1 Гбит/с даёт около 700 Мбит/с полезной полосы при длительной нагрузке. Нужное число серверов зависит от числа одновременных трансляций, зрителей и выбранного качества — от 480p до 4K.

Рассчитайте конфигурацию под вашу нагрузку в калькуляторе серверов.

Вопросы о WebRTC и медиасерверах

Какой медиасервер использует Krona.Chat?

Janus WebRTC Server — бесплатный медиасервер с открытым исходным кодом, работающий как SFU. За лицензии медиасервера платить не нужно, сколько бы серверов ни было в кластере.

Как работает балансировка WebRTC-потоков между серверами?

Балансировку медиапотоков между серверами Janus реализовала платформа Krona.Chat. Трансляции автоматически распределяются между медиасерверами в разных гео-зонах, а в кластере могут работать сотни серверов.

Что будет, если медиасервер перезагрузится?

Все потоки, которые обслуживал этот сервер, автоматически поднимутся снова. Новые серверы можно добавлять в кластер, а любой сервер — выводить на обслуживание.

Почему WebRTC, а не HLS?

WebRTC передаёт видео в реальном времени с задержкой в доли секунды, а HLS — с отставанием в десятки секунд. Для вебкам сайта живое взаимодействие модели и зрителя — чат, чаевые, приваты — возможно только с WebRTC.

Сколько серверов нужно для вебкам сайта?

Ориентир — около 700 Мбит/с полезной полосы на один медиасервер с портом 1 Гбит/с. Точное число зависит от трансляций, зрителей и качества видео; оценить его можно в калькуляторе серверов.

На каком стеке технологий построена платформа?

Фронтенд — ReactJS, видео — WebRTC, медиасервер — Janus с медиабалансировщиком Krona.Chat, балансировка веб-трафика — Cloudflare, серверный язык — PHP 8.5, работа с медиапотоками и Janus — на C, база данных — MariaDB 11.x / 12.x в кластере Galera.

Сколько стоит доставка видео с низкой задержкой?

Медиасервер Janus бесплатный, а видео раздаётся через ваши собственные серверы с фиксированной стоимостью канала, а не через CDN с оплатой за каждый гигабайт. Поэтому стоимость владения медиасерверами и доставки видео с низкой задержкой остаётся низкой даже при росте аудитории.