Прежде чем говорить о потоковой передаче, давайте поговорим о кэшировании и о том, почему их так много и как минимум один находится рядом с вами.

Отказ от ответственности: я не специалист. Я провел исследование по этой теме, потому что у меня была идея. А я просто «отдам», так что продолжайте читать! Конечно, это может быть бесполезно, это может быть невыполнимо или это может быть что-то… так что продолжим.

Сервер

Вы уже разработали свой веб-сайт, теперь вам нужно его развернуть.

Это может быть чрезмерным упрощением, но только очень большие или действительно устаревшие компании имеют локальные серверы. Большинство используют какой-либо облачный провайдер.

Легко понять, почему, потому что его легче контролировать и масштабировать. И масштаб нам нужен.

Какой сервер выдержит миллионы запросов?

Уж точно не ОДИН.

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

Но наличие нескольких серверов по-прежнему не решает небольшую проблему ФИЗИКИ.

Ограничения, не связанные с кодом

Пинг, лаг, задержка… по крайней мере, один из тех, о которых вы, вероятно, слышали в какой-то момент. Потому что, если вы находитесь на одной стороне земного шара, а сервер — на другой, независимо от того, насколько быстр ваш сервер, путь туда и обратно, чтобы вызвать что-то и получить его обратно, займет около 133 мс… но учитывая прямую линию в более чем идеальные условия. Фактическое время намного, намного больше, чем это.

Я дам вам две ссылки, первая — на действительно интересную статью об этом, а вторая — на карту интернет-кабелей, соединяющих земной шар.

https://www.pingdom.com/blog/theoretical-vs-real-world-speed-limit-of-ping/

https://www.submarineablemap.com/

Зачем кешировать?

Вернемся к теоретическому примеру 133 мс. Скажем, на самом деле это 500 мс каждый круговой обмен… представьте, что сайту требуется несколько секунд для загрузки, даже если у вас хорошая скорость интернета… Таким образом, реплицируя контент в CDN (сеть доставки контента), вы можете сделать контент ближе к пользователям, и они не нужно будет ждать секунд, пока что-то загрузится. Кроме того, даже если у вас есть локальные серверы, они защищены от перегрузки запросами.

Вопрос!

К настоящему моменту, возможно, вы уже пришли к такому же выводу, а может и нет.

CDN отлично работает с небольшим статическим контентом. Но мы говорим о потоковой передаче здесь.

Как я пришел к идее

Я уже говорил об этом раньше, но когда я работал с компонентом плеера в своем интервью (посмотрите, если не видели), я многое узнал о том, как работают медиа в Интернете.

И, узнав это, я задал себе вопрос, а потом погуглил: зачем нам кешировать видео?

Я имею в виду, конечно, я нажимаю, чтобы открыть видео на YouTube, я хочу, чтобы оно началось немедленно… но после этого?

Даже если бы у него были задержки в 500 мс, имеющегося у вас буфера более чем достаточно, чтобы справиться с этим.

И это было бы так же «просто», как проверка буфера и смена источника потока на другой источник… скажем, более дешевый.

Но потоковая передача — это не только видео и музыка, если у вас есть файлы… даже 500 мс не будут иметь значения при загрузке!

Расходы на интернет

Бразилия является одним из крупнейших интернет-потребителей, и тем не менее облачные провайдеры будут взимать с региона Южной Америки в основном двойную или более плату по сравнению с Северной Америкой или Европой.

Кроме того, провайдеры размещают серверы ближе к тем местам, где они могут оказать наибольшее влияние, и не обязательно туда, где это может быть дешевле… даже место с более низкими затратами на электроэнергию может в конечном итоге иметь более высокие затраты из-за масштаба.

(Есть несколько провайдеров, и другие регионы также страдают от этого. Вы, в основном и буквально, должны пройти курс, чтобы понять все, что предоставляет облачный провайдер, и стоимость… так что я мог просто не понять всех тонкостей, которые сделают это неверный.)

Как сделать стриминг дешевле?

Если вы пропустили прямо здесь, или если вы все еще не поняли...

Мы кэшируем только несколько секунд потоковой передачи, которых достаточно для создания буфера. Затем мы меняем потоки, чтобы указать на более дешевый источник.

Мы увеличиваем это с помощью моделей ML, которых пруд пруди, но даже с помощью простых алгоритмов мы можем проверить, достаточно ли буфера.

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

За и против

Если мои предположения верны, то в местах, где затраты выше, вы можете переложить затраты и получить огромную прибыль. Если я не... ну... ¯\(ツ)

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

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

Самая большая проблема, которую я вижу, заключается в том, что это будет означать увеличение трафика в подводной кабельной сети, и я припоминаю, что она уже перегружена слишком большим потоком…

Outro

На самом деле я «приберегал» эту идею в надежде, что если меня возьмут на работу в какое-то место, это может иметь смысл, я мог бы сказать: «Эй, у меня была эта идея. Как вы думаете, это может сработать?».

И начните с правой ноги, производящей впечатление на людей прямо из летучей мыши.

Но увы, мои поиски не увенчались успехом… так что просто отдам.

Что я хочу взамен?

  • Если я несу чушь, то просветите меня.

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

  • Но если это действительно имеет смысл…

Хотя это может означать миллионы сбережений, я не ожидаю семизначной благодарности… Я имею в виду, конечно, даже десятая часть может означать, что я могу безопасно сменить работу и сосредоточиться на эмиграции и получении «работы мечты». .

Опять же, мне нравится говорить, что я могу делать больше, чем просто программировать. Сначала я сделал это интерактивное интервью, а теперь могу выдать, в буквальном смысле, идею на миллион долларов. Если этого недостаточно, чтобы привлечь внимание компаний… я не знаю, что еще.

Итак, поделитесь моим профилем или ссылкой на интервью, если можете… может быть, мы станем коллегами.

Фото на обложке Glenn Carstens-Peters на Unsplash