open atlas
↑ К треку
Разборы System Design SDC · 03 · 05

Медиа и хранилище: разбор с выбором ответа

Синтез с выбором ответа по разборам медиа-хранилища: раскол control-path/data-path, лестницы транскодинга и adaptive bitrate, адресуемые чанки и delta-синк, erasure coding ради долговечности и партиционирование почты на пользователя.

SDC Senior ◷ 14 min
Уровень
ОсновыJuniorMiddleSenior

Шесть вопросов через весь юнит. Каждый — решение, что ты принимаешь у доски, проектируя медиа-систему — держать байты вне пути приложения, выбрать схему избыточности, подобрать ключ партиции — не определение для заучивания.

Убедись, что можешь держать крупные байты вне серверов приложения, обосновать лестницу транскодинга, рассуждать об адресуемых чанках и delta-синке, выбрать erasure coding vs репликацию по стоимости, партиционировать почту по пользователю и распознавать, где число может быть приблизительным.

Викторина

Через YouTube, Drive, объектное хранилище и почту — какой единый принцип правит тем, как двигаются крупные байты?

Викторина

Зачем видео-платформа транскодирует одну загрузку в лестницу рендиций, нарезанную на короткие сегменты с манифестом?

Викторина

Пользователь правит один абзац файла на 200 МБ в Drive. Что делает синк эффективным и какая доп. выгода идёт бесплатно?

Викторина

Хранилище как S3 должно достичь ~11 девяток долговечности для эксабайт холодных данных при минимальной стоимости хранения. Какая схема и почему?

Викторина

Проектируя почту масштаба Gmail, каков естественный ключ партиции и почему он даёт системе масштабироваться чисто?

Викторина

Счётчик просмотров видео получает сотни тысяч инкрементов в секунду. Какой дизайн уважает урок eventual consistency?

Вспомните перед уходом
  1. 01
    Какое повторяющееся правило движения крупных байт и почему?
  2. 02
    Когда erasure-кодировать vs реплицировать и зачем партиционировать почту по пользователю?
Итог

Сквозная линия всех четырёх разборов — медиа-системы формируются до того, как ты их строишь. Держи крупные байты вне пути данных сервера приложения — грузи прямо в объектное хранилище, ссылайся по ключу, отдавай с CDN/data plane — чтобы API остался на пути управления. Транскодируй одну загрузку в лестницу сегментированных рендиций, чтобы adaptive bitrate подстраивался под меняющуюся сеть каждого зрителя. Адресация по содержимому даёт delta-синк (двигай лишь изменённые чанки) и дедуп (одинаковые чанки хранятся однажды) одним механизмом. Erasure coding (10+4 ≈ 1.4× накладных) бьёт 11 девяток куда дешевле 3× репликации для холодных данных, при этом ты всё же реплицируешь малые горячие объекты. Партиционируй почту по пользователю, ведь у ящиков нет кросс-юзер-джойнов на горячем пути. И принимай eventual consistency, где человек не отличит — вирусный счётчик просмотров логируется и агрегируется, никогда синхронно не инкрементируется в одну горячую строку. Сделай структуру правильно — остальное детали; сделай неправильно — никакой тюнинг не спасёт.

Связанные уроки

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.