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

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 มิ.ย. 2024
  • Обзор и применение методик System Design Видеохостинга наподобие TH-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

  • @belerafon9288
    @belerafon9288 หลายเดือนก่อน +10

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

  • @ddduser
    @ddduser หลายเดือนก่อน +88

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

    • @arwichok_
      @arwichok_ หลายเดือนก่อน

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

    • @hsqlk
      @hsqlk หลายเดือนก่อน +1

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

    • @slashfast
      @slashfast หลายเดือนก่อน

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

    • @bluesdemon1
      @bluesdemon1 หลายเดือนก่อน +2

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

  • @konstantinchernyaev3011
    @konstantinchernyaev3011 หลายเดือนก่อน +6

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

  • @zamollaev
    @zamollaev หลายเดือนก่อน +1

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

  • @test3565
    @test3565 หลายเดือนก่อน +1

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

  • @deprome999
    @deprome999 หลายเดือนก่อน +1

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

  • @Torkvi
    @Torkvi หลายเดือนก่อน +4

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

  • @efimgibsun7969
    @efimgibsun7969 หลายเดือนก่อน +1

    Интересно

  • @AdamantGames
    @AdamantGames หลายเดือนก่อน

    Класс

  • @NNN-vd7lh
    @NNN-vd7lh หลายเดือนก่อน +1

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

  • @EatSomeBread123
    @EatSomeBread123 หลายเดือนก่อน +2

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

  • @Star_exit
    @Star_exit หลายเดือนก่อน +1

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

  • @IlyaSilchenkov
    @IlyaSilchenkov หลายเดือนก่อน +1

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

  • @zvuk3316
    @zvuk3316 หลายเดือนก่อน +1

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

  • @nikolai.kolosov
    @nikolai.kolosov หลายเดือนก่อน +1

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

  • @CrossTeamA
    @CrossTeamA หลายเดือนก่อน +1

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

  • @chesterbabythegod
    @chesterbabythegod หลายเดือนก่อน

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

  • @tnuldev6533
    @tnuldev6533 หลายเดือนก่อน +20

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

  • @unlomtrash
    @unlomtrash หลายเดือนก่อน +5

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

  • @d4vlL
    @d4vlL หลายเดือนก่อน +2

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

  • @finelyzebeats4232
    @finelyzebeats4232 หลายเดือนก่อน

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

  • @user-ff1sd6wl1h
    @user-ff1sd6wl1h หลายเดือนก่อน

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

    • @user-28492b
      @user-28492b หลายเดือนก่อน +3

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

  • @temkachannel1747
    @temkachannel1747 หลายเดือนก่อน

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

  • @slashfast
    @slashfast หลายเดือนก่อน +5

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

    • @SofronovMaxim
      @SofronovMaxim หลายเดือนก่อน

      ГБ и Гб в видео

    • @slashfast
      @slashfast หลายเดือนก่อน +1

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

  • @doctorixx_
    @doctorixx_ หลายเดือนก่อน +1

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

  • @ilyaershov988
    @ilyaershov988 หลายเดือนก่อน +1

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

  • @user-es2uq8fl2i
    @user-es2uq8fl2i หลายเดือนก่อน +1

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

  • @fullfree1812
    @fullfree1812 หลายเดือนก่อน +1

    Респект!

  • @leomysky
    @leomysky หลายเดือนก่อน

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

  • @user-lk8n0fgjk
    @user-lk8n0fgjk หลายเดือนก่อน

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

  • @noobig
    @noobig หลายเดือนก่อน

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

  • @user-sq3rf6tg7f
    @user-sq3rf6tg7f หลายเดือนก่อน +1

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

  • @michaelsopunov
    @michaelsopunov หลายเดือนก่อน +3

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

    • @d0lka397
      @d0lka397 หลายเดือนก่อน +3

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

    • @michaelsopunov
      @michaelsopunov หลายเดือนก่อน

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

  • @user-28492b
    @user-28492b หลายเดือนก่อน +1

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

    • @kitsunofflmao9980
      @kitsunofflmao9980 หลายเดือนก่อน

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

  • @valarg5756
    @valarg5756 หลายเดือนก่อน

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

  • @AvitoB0T
    @AvitoB0T หลายเดือนก่อน

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

    • @ivanjermakov
      @ivanjermakov หลายเดือนก่อน

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

    • @AvitoB0T
      @AvitoB0T หลายเดือนก่อน

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

  • @FL4M3M4K3R
    @FL4M3M4K3R หลายเดือนก่อน +2

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

  • @MountainSeal
    @MountainSeal หลายเดือนก่อน

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

  • @user-iv5co4lu9g
    @user-iv5co4lu9g หลายเดือนก่อน

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

  • @GergertsLab
    @GergertsLab หลายเดือนก่อน

    !

  • @semenkovalev4988
    @semenkovalev4988 หลายเดือนก่อน +2

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

  • @steelrat7678
    @steelrat7678 หลายเดือนก่อน +4

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

    • @system-design-notes
      @system-design-notes  หลายเดือนก่อน

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

  • @MiiDosvid
    @MiiDosvid หลายเดือนก่อน +1

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

    • @IlyaSilchenkov
      @IlyaSilchenkov หลายเดือนก่อน

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

    • @MiiDosvid
      @MiiDosvid หลายเดือนก่อน

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

    • @MiiDosvid
      @MiiDosvid หลายเดือนก่อน

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

  • @MiiDosvid
    @MiiDosvid หลายเดือนก่อน +1

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

    • @Humanzerg
      @Humanzerg หลายเดือนก่อน

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

    • @MiiDosvid
      @MiiDosvid หลายเดือนก่อน

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

    • @MiiDosvid
      @MiiDosvid หลายเดือนก่อน

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

    • @MiiDosvid
      @MiiDosvid หลายเดือนก่อน

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

    • @Humanzerg
      @Humanzerg หลายเดือนก่อน

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

  • @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") а это уже совсем другая история, которую в максимальную длину комментария не уложить :)

  • @TheInspctrcat
    @TheInspctrcat หลายเดือนก่อน

    в год же 30, не?

  • @Oimasi
    @Oimasi หลายเดือนก่อน +2

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

    • @adilzhanuteniyazov7109
      @adilzhanuteniyazov7109 หลายเดือนก่อน +5

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

    • @edgull_tlt
      @edgull_tlt หลายเดือนก่อน +2

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

  • @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, для имен файлов в каталогах используется хеш таблица. все хорошо и приколько когда она закеширована в память - только вот создание файлов в таком кталаоге, а так же откртыие файла при первом (список инодов не грузился, либо был вытеснен из кеша) обращении будет иметь непредсказуемую задрежку (можеш сам эксперименты попроводить, а заодно сравнить полученые значениея с кейсом когда эти файлы разложены по подкаталогам). а теперь посмотри на этот факт с т.з. сервиса, который должен гарантировать +/- одинаковое время отклика на каждый запрос.

  • @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 тогда лучше пишите Гбит, это очевидное понятие, а Гб вообще не встречал, как сокращение Гигабит

  • @user-sq3rf6tg7f
    @user-sq3rf6tg7f หลายเดือนก่อน

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

  • @unicoxr5tj417
    @unicoxr5tj417 หลายเดือนก่อน +5

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

    • @system-design-notes
      @system-design-notes  หลายเดือนก่อน +2

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

  • @bluesdemon1
    @bluesdemon1 หลายเดือนก่อน +8

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

    • @ivanjermakov
      @ivanjermakov หลายเดือนก่อน

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