Медиа и хранилище: разбор с выбором ответа
Синтез с выбором ответа по разборам медиа-хранилища: раскол control-path/data-path, лестницы транскодинга и adaptive bitrate, адресуемые чанки и delta-синк, erasure coding ради долговечности и партиционирование почты на пользователя.
Шесть вопросов через весь юнит. Каждый — решение, что ты принимаешь у доски, проектируя медиа-систему — держать байты вне пути приложения, выбрать схему избыточности, подобрать ключ партиции — не определение для заучивания.
Убедись, что можешь держать крупные байты вне серверов приложения, обосновать лестницу транскодинга, рассуждать об адресуемых чанках и delta-синке, выбрать erasure coding vs репликацию по стоимости, партиционировать почту по пользователю и распознавать, где число может быть приблизительным.
Через YouTube, Drive, объектное хранилище и почту — какой единый принцип правит тем, как двигаются крупные байты?
Зачем видео-платформа транскодирует одну загрузку в лестницу рендиций, нарезанную на короткие сегменты с манифестом?
Пользователь правит один абзац файла на 200 МБ в Drive. Что делает синк эффективным и какая доп. выгода идёт бесплатно?
Хранилище как S3 должно достичь ~11 девяток долговечности для эксабайт холодных данных при минимальной стоимости хранения. Какая схема и почему?
Проектируя почту масштаба Gmail, каков естественный ключ партиции и почему он даёт системе масштабироваться чисто?
Счётчик просмотров видео получает сотни тысяч инкрементов в секунду. Какой дизайн уважает урок eventual consistency?
- 01Какое повторяющееся правило движения крупных байт и почему?
- 02Когда erasure-кодировать vs реплицировать и зачем партиционировать почту по пользователю?
Сквозная линия всех четырёх разборов — медиа-системы формируются до того, как ты их строишь. Держи крупные байты вне пути данных сервера приложения — грузи прямо в объектное хранилище, ссылайся по ключу, отдавай с CDN/data plane — чтобы API остался на пути управления. Транскодируй одну загрузку в лестницу сегментированных рендиций, чтобы adaptive bitrate подстраивался под меняющуюся сеть каждого зрителя. Адресация по содержимому даёт delta-синк (двигай лишь изменённые чанки) и дедуп (одинаковые чанки хранятся однажды) одним механизмом. Erasure coding (10+4 ≈ 1.4× накладных) бьёт 11 девяток куда дешевле 3× репликации для холодных данных, при этом ты всё же реплицируешь малые горячие объекты. Партиционируй почту по пользователю, ведь у ящиков нет кросс-юзер-джойнов на горячем пути. И принимай eventual consistency, где человек не отличит — вирусный счётчик просмотров логируется и агрегируется, никогда синхронно не инкрементируется в одну горячую строку. Сделай структуру правильно — остальное детали; сделай неправильно — никакой тюнинг не спасёт.
Что-то непонятно?
Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.