Технологии и WebRTC
В основе Krona.Chat — живой видеостриминг по WebRTC на бесплатном open-source медиасервере Janus. Балансировку медиапотоков между серверами Janus мы разработали сами: трансляции автоматически распределяются по сотням серверов в разных гео-зонах, а задержка остаётся в пределах долей секунды.
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 с оплатой за каждый гигабайт. Поэтому стоимость владения медиасерверами и доставки видео с низкой задержкой остаётся низкой даже при росте аудитории.