Проектируем YouTube - Введение в System Design

Поділитися
Вставка
  • Опубліковано 20 чер 2024
  • Обзор и применение методик System Design Видеохостинга наподобие UA-cam
    Таймкоды:
    00:00 ➝ Интро
    00:13 ➝ Введение
    00:45 ➝ Функциональные требования
    01:06 ➝ Нефункциональные требования
    02:10 ➝ Загрузка видео: верхний уровень
    03:13 ➝ Просмотр видео: верхний уровень
    04:55 ➝ Загрузка видео: подробное проектирование
    09:27 ➝ Просмотр видео: подробное проектирование
    12:24 ➝ Заключение
    В данном выпуске выполняется проектирование видеохостинга на основе обширных нефункциональных требований из открытых источников:
    - MAU 2.5 млрд
    - DAU 50 млн
    - 5 млн новых видео в день
    - 5 млрд просмотров видео в день
    Проектирование основано на личном опыте, включая изучение технической литературы
    Ваши ценные комментарии помогают сделать контент еще более интересным и полезным!
    Не бывает правильной архитектуры, буду рад обратной связи
    Ссылка на телеграм-канал: t.me/system_design_notes
    Поддержать канал:
    Яндекс Деньги: yoomoney.ru/to/410015646575581
    #systemdesign #highload

КОМЕНТАРІ • 114

  • @system-design-notes
    @system-design-notes  Місяць тому +6

    PS: о сегментах видео
    Видео представляет собой цельный файл, сегменты видео можно получить с помощью метаданных файла
    Такую работу поддерживают, например, HLS и MP4

  • @ddduser
    @ddduser Місяць тому +88

    Именно таких разборов и видосов не хватает на ютубе, а то сплошные питонисты с тестировщиками. Отлично, что субъективно, это даже интереснее кто как делает и какие подходы применяет. Наконец-то в рекомендациях 🎉

    • @arwichok_
      @arwichok_ Місяць тому

      щось цих "архітекторів" дохера розвелось

    • @hsqlk
      @hsqlk Місяць тому +1

      Искать надо уметь

    • @slashfast
      @slashfast Місяць тому

      ​@@hsqlk ну не все ищут, а тут рекомендацию ютуб подкинул.

    • @bluesdemon1
      @bluesdemon1 Місяць тому +2

      Именно таких разборов, с такой же степенью непрофессионализма, полно на ютубе

  • @belerafon9288
    @belerafon9288 Місяць тому +10

    Круто, про архитектуру мало таких видосов!

  • @Torkvi
    @Torkvi Місяць тому +4

    Очень интересно! Спасибо!

  • @deprome999
    @deprome999 Місяць тому +1

    очень интересное видео!

  • @NNN-vd7lh
    @NNN-vd7lh Місяць тому +1

    Мне понравилось. Было и интересно, и полезно. Спасибо за труды!

  • @zamollaev
    @zamollaev Місяць тому +1

    Интересная тема. С кайфом посмотрел.

  • @test3565
    @test3565 Місяць тому +1

    Спасибо за видео. Подписался)

  • @konstantinchernyaev3011
    @konstantinchernyaev3011 Місяць тому +6

    Про балансировку на клиенте - есть решение лучше с балансированием на уровне dns сервера. Так url один, но его можно распределить на несколько ip адресов.

  • @nikolai.kolosov
    @nikolai.kolosov Місяць тому +1

    Спасибо за контент!

  • @CrossTeamA
    @CrossTeamA Місяць тому +1

    Привет! Спасибо за редкий контент. Еще добавить бы оркестратор контейнеров. На моменте масштабирования Processing Video Server не понятно за счет чего будет достигаться партиционирование. Наверное имелось ввиду партиции кафки и множество консюмеров Processing Video Server (Не про БД партиции:) )Тут как раз скелинг подов от kubernetes зайдет) Ждем новых видео!

  • @efimgibsun7969
    @efimgibsun7969 Місяць тому +1

    Интересно

  • @zvuk3316
    @zvuk3316 Місяць тому +1

    Спасибо за видео, полезно!
    Было бы круто ещё показать на примере как подбирать необходимое железо для подобных сервисов хотя бы для одного сервера. В работе столкнулся с задачей полного развертывания высоконагруженного приложения, с необходимости подбора железа (процессор, оперативная) для виртуальных машин.

  • @Star_exit
    @Star_exit Місяць тому +1

    Интересный ролик

  • @tnuldev6533
    @tnuldev6533 Місяць тому +20

    это очень круто, жди прилива аудитории, подобного мало

  • @leomysky
    @leomysky Місяць тому

    Отличная работа, спасибо за видео

  • @doctorixx_
    @doctorixx_ Місяць тому +1

    Видео хорошее. Кстати, в рекомендациях :)

  • @noobig
    @noobig Місяць тому

    спасибо за шикарный контент!

  • @user-lk8n0fgjk
    @user-lk8n0fgjk Місяць тому

    Отличное видео! Спасибо. Пожалуйста, не останавливайся)

  • @unlomtrash
    @unlomtrash Місяць тому +5

    Я восхищён, и уверен многие тоже
    Подумай над тем, чтобы прикрепить реквизиты куда можно было бы задонатить

  • @AdamantGames
    @AdamantGames Місяць тому

    Класс

  • @chesterbabythegod
    @chesterbabythegod Місяць тому

    топовый контент

  • @valarg5756
    @valarg5756 Місяць тому

    Отличное видео, спасибо большое. Подписался, буду ждать новых роликов.

  • @EatSomeBread123
    @EatSomeBread123 Місяць тому +2

    Интересно было бы послушать про всякие архитектурные штуки по типу гейтвеев и подобной архитектуры. Пришёл из рекомендаций кстати

  • @fullfree1812
    @fullfree1812 Місяць тому +1

    Респект!

  • @finelyzebeats4232
    @finelyzebeats4232 Місяць тому

    Здорово, очень приятный контент, планируется ли что-то более базовое по архитектуре? О его подходах в реализации на практике? А содержательно очень, хотелось бы больше примеров и подобного контента, подписался на Вас в ТГ и в ютубе.

  • @d4vlL
    @d4vlL Місяць тому +2

    Ну с таким контентом набрать первых 10 тысяч подписчиков не составит труда)

  • @temkachannel1747
    @temkachannel1747 Місяць тому

    Расскажи в следующем видео про Twitch. И мб было бы интересно если бы звучала информация, о том какой мощности под это всё нужны выделенные машины, сколько и примерные затраты на поддержку данной архитектуры условно в мес/год. А так видос бомба)

  • @FL4M3M4K3R
    @FL4M3M4K3R Місяць тому +2

    идея для видео гениальна

  • @ilyaershov988
    @ilyaershov988 Місяць тому +1

    Спасибо за видео, можешь объяснить как пропускную способность расcчитал?

  • @michaelsopunov
    @michaelsopunov Місяць тому +3

    Видос пришёл в рекомендациях. Достойно! Но не хватает части про архитектурно-грамотную социальную составляющую/сообщество - как хранилище видосов таки сделали рутубу (интерфейс их мы щас не пинаем уж...), но вот в большинстве своём храждане остаются на уютном ютубчике и это даже при наличии наикошернейшего плейера на "одноглазсиках" 🤪🤪
    Держу палцы крестиком за продолжение!

    • @d0lka397
      @d0lka397 Місяць тому +3

      Ты не по адресу с такими комментариями.

    • @michaelsopunov
      @michaelsopunov Місяць тому

      @@d0lka397 развернёте свою мысль или это был чисто "вброс мимокрокодила"?))

  • @slashfast
    @slashfast Місяць тому +5

    Идея огонь!
    Советую разделять гигабайты и гигабиты, как ГБ и Гбит соответственно.

    • @SofronovMaxim
      @SofronovMaxim Місяць тому

      ГБ и Гб в видео

    • @slashfast
      @slashfast Місяць тому +1

      @@SofronovMaxim Есть:
      GB/ГБ (Gb/Гб) - Гигабайт
      Gbit/Гбит - Гигабит
      GiB/ГиБ - Гибибайт
      и по аналогии с другими основаниями

  • @IlyaSilchenkov
    @IlyaSilchenkov Місяць тому +1

    Мне кажется Кафка здесь не походит:
    Мы упремся в то что количество воркеров == кол-во партиций. А администрирование сотни партиций в Кафке плохо устроено
    Ну или делать разные топики в Кафке, но тогда и расходы на поддержание кода инфраструктуры возрастают.
    Лучше использовать само-писано-украденную очередь поверх любой key value distributed db. Типо scylla

  • @user-iv5co4lu9g
    @user-iv5co4lu9g Місяць тому

    Ух тыыы, давай ютуб мути, код

  • @steelrat7678
    @steelrat7678 Місяць тому +4

    >>Проектирование выполняется на основе моего личного опыта
    Ты бы рассказал о своем личном опыте, где ты проектировал (и по этому проекту был запущен сервис) нечто, приближающееся по масштабу к ютубчику.. А то както очень похоже как школьник из бочки решил подводную лодку или ракету сделать..

    • @system-design-notes
      @system-design-notes  Місяць тому

      Материалы видео носят больше академический характер
      Может сложиться некорректное ожидание - обновил описание видео, спасибо за уточнение
      На данный момент у меня опыт коммерческой разработки в веб 5 лет, общий в разработке ~9 лет, ютубчик пока не запускал

  • @AvitoB0T
    @AvitoB0T Місяць тому

    Всегда было интересно какую максимальную нагрузку выдержат сервера UA-cam
    100Пбт/с или больше 🔥

    • @ivanjermakov
      @ivanjermakov Місяць тому

      Любую, серверов же много

    • @AvitoB0T
      @AvitoB0T Місяць тому

      @@ivanjermakov но они же не безграничны

  • @user-ff1sd6wl1h
    @user-ff1sd6wl1h Місяць тому

    Крутой видос!
    Само видео в кафку загружается или только его идентификатор во временном хранилище?

    • @user-28492b
      @user-28492b Місяць тому +3

      Конечно только id

  • @MountainSeal
    @MountainSeal Місяць тому

    А куда донатить для поддержки канала?(((

  • @user-28492b
    @user-28492b Місяць тому +1

    Все выглядит правильно, есть только вопрос по выбору message broker, на мой взгляд Kafka тут не оправдана, какие доводы в её пользу?

    • @kitsunofflmao9980
      @kitsunofflmao9980 Місяць тому

      пропускная способность большая
      кролик не факт что выдержит

  • @user-sq3rf6tg7f
    @user-sq3rf6tg7f Місяць тому +1

    Такой проект и без кеширования хотя бы запросов?

  • @user-es2uq8fl2i
    @user-es2uq8fl2i Місяць тому +1

    Интересно, хоть кто-то смог до какого-то адекватного уровня нагрузки затюнить коробочную версию шардированной монги?
    Чтобы например это было надежнее выгоднее и быстрее , чем скажем делать свою реализацию шардирования на постгре ?

  • @MiiDosvid
    @MiiDosvid Місяць тому +1

    Уже после слов про запись на 60РПС могу смело говорить о фейле данной архитектуры. ИБо термин РПС применим к быстроработающим запросам, а не загрузке контента на гигабайты. Видос 1 грузиться около 10-30мин + обработка еще гдето столько же. А тут у нас это все равно 1рпс) Так не работает.
    Для загрузки выделяют отдельные физические каналы и меряется оно не рпс а пропускной способотность. Например 10ТБ/с.

    • @Humanzerg
      @Humanzerg Місяць тому

      С чего вы взяли, что видос грузится не чанками?

    • @MiiDosvid
      @MiiDosvid Місяць тому

      @@Humanzerg все грузиться чанками это называются пакеты.
      О того как грузиться видос не меняется сам смысл.
      Во вторых грузя чанками чего именно вы достигаете и зачем? Нагрузку это не снимает + дает возможность что у всех клиентов видос веь не догрузиться. ибо достаточно сбоя в одном чанке и все. Например вы начали грузить новый чанк а места уже нету куда грузить и вы отпали по таймауту. и чем больше юзеров тем более вероятен такой исход.

    • @MiiDosvid
      @MiiDosvid Місяць тому

      @@Humanzerg Сначала идет проблема а потом ее решение. какую проблему решаете вы этим?

    • @MiiDosvid
      @MiiDosvid Місяць тому

      @@Humanzerg я вот сча прям возьму и гляну как он грузит)

    • @Humanzerg
      @Humanzerg Місяць тому

      ​@@MiiDosvid рпс имеется в виду в рамках хттп реквестов, а не пакетов. ф12 на ютубе откройте и посмотрите в нетворке как контент ютуб грузит, с загрузкой на сервер, думаю, то же самое.
      В видео есть ответ что мы этим решаем.

  • @GergertsLab
    @GergertsLab Місяць тому

    !

  • @semenkovalev4988
    @semenkovalev4988 Місяць тому +2

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

  • @Oimasi
    @Oimasi Місяць тому +2

    Видео очень познавательное, спасибо за такой контент. Кстати, для небольшого разбавления неплохо было бы добавить ненавязчивую музыку на фон )

    • @adilzhanuteniyazov7109
      @adilzhanuteniyazov7109 Місяць тому +5

      Вот этого не надо! И так интересно

    • @edgull_tlt
      @edgull_tlt Місяць тому +2

      Ни какой музыки не надо!

  • @MiiDosvid
    @MiiDosvid Місяць тому +1

    S3 не подойдет) Открываем доки по нему и смотрим ограничения которые и близко не сопоставимы.

    • @IlyaSilchenkov
      @IlyaSilchenkov Місяць тому

      Подскажешь куда копать тогда?

    • @MiiDosvid
      @MiiDosvid Місяць тому

      @@IlyaSilchenkov p2p, torrent protocol, chunk storages, udp streaming

    • @MiiDosvid
      @MiiDosvid Місяць тому

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

  • @aeforeve1234
    @aeforeve1234 Місяць тому +10

    Посмотрел видео - почитал комменты - примерно 7-8 класники проектируют инфраструктуру ютуба :)

    • @RisenCode
      @RisenCode Місяць тому +2

      Конечно же аргументов не будет :)

    • @aeforeve1234
      @aeforeve1234 Місяць тому

      @@RisenCode а что ? 8-9ти классики?
      Напоминает как бы сказать - "отсюда заходит Вася со снайперской - а тут юрок с пулеметом - и тратататата"

    • @RisenCode
      @RisenCode Місяць тому

      @@aeforeve1234 понятно, клоун линуксоид)

    • @user-md2fk3jj1e
      @user-md2fk3jj1e Місяць тому

      @@RisenCode а какие вам нужны аргументы, если вы думаете, что можно сделать ютуб взяв хромую монгу и одну кафку ;) как бы архитекторы и получают деньги за то, что знают какую базу можно использовать, а какую нет (въедливо изучая и тестируя разные продукты вместо того, чтобы закрывать тикеты), а обычный разраб возьмут монгу, потому что лет 10 назад было модно и ему главное что nosql.

    • @IlyaSilchenkov
      @IlyaSilchenkov Місяць тому

      Если добавишь конкретики будет ценно для всех 👍

  • @user-hi5fy6wv5j
    @user-hi5fy6wv5j Місяць тому

    Всего навсего 750000 каналов. А давайте посчитаем ... толщину!
    Возьмём для прокладки внутри здания кабель ИКВ-Т2, можно и буржуйский аналог, не суть, диаметр его 6 миллиметра то есть 0,006 метра, соответственно площадь его сечения 0,000028 метра квадратных, нам нужно 750000 таких верёвок, их суммарная площадь составит 21 метр квадратный.
    Но это не совсем правильнй расчёт, потому как верёвка круглая, а не квадратная, значит между верёвками будут пустоты.
    Считаем чуть более правильно, как корень квадратный из 750000 умноженный на 0,006 метра и всё это в степени 2 и получаем: 27 метров квадратных.
    Но и это не правильный расчёт, потому как мы же не будем класить на вершину вершину и тут для расчёта нам нужно обратиться к упаковкам кругов ("Circle packing in a square") а это уже совсем другая история, которую в максимальную длину комментария не уложить :)

  • @mihax56
    @mihax56 Місяць тому +12

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

    • @ilgizilgiz
      @ilgizilgiz Місяць тому

      Спасибо - меня этот вопрос держал на всем протяжении просмотра видео. Такие обрезки я видел на сайтах фильмов, в которых 1х бэт рекламмируется, видимо для защиты от прямого скачивания)

    • @mihax56
      @mihax56 Місяць тому

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

    • @system-design-notes
      @system-design-notes  Місяць тому

      Спасибо большое за уточнение
      Этот важный тезис был упущен в контенте
      Уточнение сохранено пока в комментарии

    • @user-md2fk3jj1e
      @user-md2fk3jj1e Місяць тому

      с чего вы решили что файловой системе есть какая-то разница от того сколько у вас там файлов в каталоге? вот только что проверил для ext4 в виртуалке, ls отрабатывает пропорционально количеству файлов (взял 10 к и 1 млн для сравнения), а не квадратично или еще как. чтение случайного файла похоже что совпадает (а чего ему не совпадать то?). понятие каталога полностью абстрактно, это запись в какой-то структуре и любая работа с файлами и папками - это обращение к этой структуре, сложность чтения из нее наверняка будет n*logn от всех файлов на диске, а не конкретной папки. если вы не собираетесь делать файлы по 4кб и заполнять ими все 20 тб своего диска, то об этом можно не беспокоиться. Даже 4кб для диска в 4тб еще ок - это рекомендованное значение блока при форматировании, а законы и математика там примерно такие же.

    • @mihax56
      @mihax56 Місяць тому

      @@user-md2fk3jj1e а с чего ей не должно быть разницы? "запись в какойто структуре" - каждая "какаята" структура имеет свои ограничения и плохие сценарии использования. овердохера файлов в каталоге это всегда плохой сценарий, в ext3 было бинарное дерево под капотом (так же как щас например у btrfs) - несколько тысяч ставит раком на раз, в ext4 - htree, для имен файлов в каталогах используется хеш таблица. все хорошо и приколько когда она закеширована в память - только вот создание файлов в таком кталаоге, а так же откртыие файла при первом (список инодов не грузился, либо был вытеснен из кеша) обращении будет иметь непредсказуемую задрежку (можеш сам эксперименты попроводить, а заодно сравнить полученые значениея с кейсом когда эти файлы разложены по подкаталогам). а теперь посмотри на этот факт с т.з. сервиса, который должен гарантировать +/- одинаковое время отклика на каждый запрос.

  • @TheInspctrcat
    @TheInspctrcat Місяць тому

    в год же 30, не?

  • @bluesdemon1
    @bluesdemon1 Місяць тому +8

    Объяснение выбора между tcp и udp вообще не в тему. Какой-то бред сказан, а потом "поэтому используем tcp". Как ты вообще udp собрался в браузере использовать, с этого надо начинать

    • @ivanjermakov
      @ivanjermakov Місяць тому

      HTTP/3 работает поверх UDP, а вообще да, совсем не в тему.

  • @maximpalenov3653
    @maximpalenov3653 Місяць тому

    Что-то я не понял почему почему нужер 4.5 миллиона сетевых каналов по 10ГБ/с, чтобы хватило пропустить 6ПБ/c. Используя простую арифметику получаем 4.5 * 10^6 * 10 = 45 * 10^6 = 45ПБ/c, что в 7.5 раз больше, чем нужно. Выглядит так, что нужно 600 тыс сетевых каналов по 10ГБ/с.

    • @system-design-notes
      @system-design-notes  Місяць тому

      В видео используются Гб (Гбит)

    • @slashfast
      @slashfast Місяць тому +1

      @@system-design-notes тогда лучше пишите Гбит, это очевидное понятие, а Гб вообще не встречал, как сокращение Гигабит

  • @unicoxr5tj417
    @unicoxr5tj417 Місяць тому +5

    афтер, ты архитектор и об етом канал?

    • @system-design-notes
      @system-design-notes  Місяць тому +2

      Разработчик ПО, проектирование архитектуры присутствует в практике
      Канал про System Design, актуальная информация поддерживается в описании канала

  • @user-sq3rf6tg7f
    @user-sq3rf6tg7f Місяць тому

    Монго? Серьезно ? Это тормозное решение для пит проекта пойдет, ты через сутки положишь хост. Лучше коучбаз брать тогда.