Вернуться в каталог собеседований

System Design с Валерием Бабушкиным | Выпуск 1 | Собеседование | karpov.courses

Разбор задачи проектирования глобального URL shortener в формате System Design-собеседования. Участники рассчитывают ключевое пространство, память и нагрузку, а затем строят масштабируемую архитектуру сервиса.

karpov.courses
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 42,2 тыс.
  • Лайки на YouTube: 876
Открыть на YouTube

Таймлайн

Коротко о видео

Это учебное System Design-собеседование: Валерий Бабушкин интервьюирует ученика 11 класса Алексея, которого автор описания называет победителем международного детского конкурса по ИИ AIIJC. На задаче глобального сервиса коротких ссылок они проходят путь от требований и расчёта ёмкости ключей до выбора между усечённым хешем и заранее сгенерированными ключами без коллизий. Затем собеседники оценивают объём хранения и QPS, проектируют таблицы свободных и занятых ключей, кэш, балансировщики, репликацию и локальные буферы ключей.

Затронутые темы

Что взять на заметку

  • В System Design сначала зафиксируйте ограничения: срок жизни ссылок, соотношение чтений и записей, SLA по задержке, географию пользователей и ожидаемый объём данных.
  • При допущении 1 млн новых ссылок в день и TTL два года в упражнении получают около 8×10^8 активных ключей; ёмкость пространства ключей нужно сравнивать с этой оценкой с запасом.
  • Ключ из 8 символов алфавита Base64 даёт 64^8 = 2^48 вариантов, поэтому в обсуждаемой модели его ёмкости достаточно; уменьшение ключа экономит место, но сокращает запас вариантов.
  • Усечение хеша, например MD5 до 48 бит, повышает риск коллизий. Альтернатива из ролика — заранее создать уникальный пул ключей и атомарно переводить ключ из свободных в занятые.
  • Для пула ключей полезно отделить свободные ключи от занятых: из первой структуры ключ берётся за O(1), а во второй хранятся ключ, исходный URL и время истечения.
  • Для частых переходов по короткой ссылке нужен путь cache → хранилище → заполнение cache; при масштабировании добавляются географическая маршрутизация, load balancer, реплики и безопасная выдача локально забуференных ключей.

Рекомендуем посмотреть