Вернуться в видеотеку

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

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

Источник: karpov.courses

Открыть на 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, реплики и безопасная выдача локально забуференных ключей.

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

47 мин
Разное

🎧 Публичное собеседование #5: net, c#, angular, асинхронность, patterns, db, orm, api, сбор мусора

Публичное техническое собеседование по стеку .NET: C#, Angular, Entity Framework, SQL, паттернам проектирования, асинхронности и управлению памятью. Формат построен как разбор ответов кандидата с пояснениями интервьюера.

1 ч 54 мин
Разное

Собеседование 1С программиста

Публичный разбор технического собеседования 1С-программиста с обсуждением карьерного опыта Андрея и практических вопросов платформы 1С. Формат показывает ход рассуждений при анализе кода, запросов, интеграций и производительности.