Русский
Русский
English
Статистика
Реклама

Webtor.io и в чем его отличия от обычного сидбокса

Сегодня я вам расскажу вам о сервисе webtor.io для проигрывания и скачивания торрентов онлайн. О том что он умеет, зачем нужен, а также с какими трудностями пришлось столкнуться в процессе разработки читаем далее.

Что это такое и что умеет

Webtor предоставляет онлайн-доступ к содержимому любого торрент-файла, если конечно есть доступные пиры. Контент можно не только скачать, его также можно и просмотреть. Всё работает через обычный браузер без каких-либо расширений, т.е. будет работать даже на мобильных устройствах. Причем если проигрывание контента не поддерживается нативно в браузере (например mkv), то осуществляется его транскодирование на лету. Проигрывание начинается без ожидания полной загрузки файла из BitTorrent-сети, т.е. почти сразу. Всё бесплатно и без регистрации. Загружать можно как публичные, так и приватные торренты. Загрузки абсолютно анонимны и безопасны, ip-адрес пользователя не виден участникам BitTorrent-сети.

Помимо самого сайта webtor.io существует расширение для Google Chrome и SDK для встраивания плеера в любой другой сайт.

Код почти всех компонентов был передан в open source, посмотреть можно здесь.

В чем отличие от обычного сидбокса

Стандартные сидбоксы обычно работают по подписке. Чем дороже подписка тем больший объем хранилища и трафика предоставляется. В Webtor решили переосмыслить работу сидбокса и предложить пользователям загружать контент из BitTorrent-сети за просмотр рекламы без возможности длительного хранения в облаке. Основной целью было сократить количество действий пользователя для получения контента.

Технические детали

Вся система работает под управлением Kubernetes, практически весь бэкенд написан на golang. Каждая загрузка торрента - это отдельная задача (job) в кластере. Общение между сервисами осуществляется через GRPC. Фронтенд написан на Vue.js. Фронт с бэком общается через специальный прокси который проверяет авторизацию и связывает с нужным сервисом внутри кластера. Сборка проектов проходит через Google Cloud Build. Для мониторинга используется Promethus и Grafana.

История появления

Когда-то давно я разрабатывал один сайт. Он агрегировал видео-торренты со всех популярных отечественных трекеров, группировал их по конкретному кинопроизведению и подтягивал данные с кинопоиска. В итоге получалась видео-витрина и как-то я подумал, что было бы неплохо реализовать там возможность не только скачивать торрент-файлы, но и онлайн-просмотр. Я пробовал подтягивать соответствующее видео с VK, но это было всё не то, хотелось настоящего стримминга контента из BitTorrent-сети. В какой-то момент, времени стало не хватать на поддержку сайта и пришлось его забросить, а идею забыть... на время...

Год спустя (где-то в 17-ом году) я наткнулся на проект, который произвёл на меня сильное впечатление, это был webtorrent.io. "Как раз то что надо" - подумал я. Всё там хорошо, можно проигрывать торрент-файлы через браузер, никакой торрент-клиент устанавливать не нужно, но есть нюанс, доступны только те торренты которые раздаются с использованием webtorrent. И тут появилась идея разработать сервис который позволил бы объединить лучшее из обоих миров и в случае если нет раздающих пиров в webtorrent-сети загружать контент через стандартную BitTorrent-сеть. Для реализации необходимо было разработать сервис, который начинал бы загрузку торрент-файлов и передавал полученные фрагменты по http на лету. Под руку попалась гибридная версия всё того же webtorrent которая могла загружать контент через стандартную BitTorrent-сеть, но уже в исполняемой среде Node.js. Кроме того подкупала возможность разработать проект целиком на JavaScript. Спустя некоторое время удалось разработать прототип который вполне исправно работал. Функционально всё работало хорошо, но после релиза, с увеличением потока посетителей, выяснилась одна неприятная особенность, у приложения были большие аппетиты и оно периодически съедало всю доступную оперативную память, что приводило к полной перезагрузке и обрыву всех текущих соединений. Было потрачено много ночей на поиск утечки памяти, но кардинально изменить ситуацию не удалось. Наверное можно было всё и бросить на этом моменте, учитывая что были и добрые люди которые уверяли, что проект "не взлетит" поскольку доход с проекта никогда не превысит затрат на хостинг. Но тут я не стал унывать и решил двигаться дальше.

Чем дальше я углублялся в поиски решения тем более отчётливо становилось понятно, что бэкенд необходимо переписать заново. В конце концов выбор пал на golang в основном из-за его малой требовательности к ресурсам. Опыта разработки на нём у меня было на тот момент довольно мало, но к счастью все необходимые библиотеки уже были кем-то написаны (это также было одной из ключевых причин выбора). Ну и, чтобы добавить драматизма в происходящее решено было построить всё на базе Kubernetes. Решение оказалось выигрышным, удалось без особых сложностей переписать весь имеющийся функционал. В процессе работы было создано порядка дюжины сервисов.

Сервис стал работать довольно стабильно, люди начали интересоваться проектом. Кто-то хотел проигрывать торрент-контент у себя на сайте, кто-то хотел хостить бэкенд у себя на оборудовании и использовать в личных целях. Для удовлетворения потребностей обеих групп населения весь бэкенд был передан в open-source, а также был разработан SDK для встраивания торрент-плеера на сайт.

Проект за свою жизнь уже пережил порядка 5 переездов по разным причинам и каждый переезд занимал не более суток. Я не раз становился бета-тестером различных Kubernetes-as-a-service решений от различных хостеров и приходилось разбираться в проблемах различной степени тяжести. Весь полученный опыт мне удалось успешно применить в работе.

Спасибо за внимание!

Источник: habr.com
К списку статей
Опубликовано: 21.01.2021 00:20:21
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Распределенные системы

Torrent

Seedbox

Webtor

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru