Your AI powered learning assistant

Пробное интервью по системному дизайну: Дизайн TikTok ft. TPM Google

Introduction

00:00:00

В этом видео Адам и ведущий представляются друг другу. Адам работает над облачной инженерией и серверными системами в Oracle, но вскоре перейдет в Google. Они с нетерпением ждут возможности приступить к разработке практической системы.

Question

00:00:37

В этой главе интервьюер спрашивает о разработке TikTok. Собеседник упоминает, что они никогда раньше не использовали TikTok, и предлагает начать с идеи.

Clarifying questions

00:00:56

- TikTok - это мобильное приложение для обмена видео между пользователями. - Пользователи могут загружать видео и просматривать ленту видеороликов, прокручивая их по одному за раз. - Пользователи могут подписываться на других пользователей, чтобы увидеть их опубликованные видео. - Поддерживаются такие действия, как добавление в избранное и комментирование видео.

Answer

00:01:59

- TikTok - это мобильное приложение, которое фокусируется на внутренней инфраструктуре. - Часть мобильного приложения подробно обсуждаться не будет. - Серверная система TikTok богата функциями, и ее стоит изучить.

Requirements

00:02:25

Загружать видео Первое функциональное требование - разрешить пользователям загружать видео со своих мобильных устройств. Загружаемые видео должны быть ограничены по времени, аналогично 15-секундному лимиту Instagram. Пользователи также могут добавлять текстовые данные или подписи к видео.

Просмотр ленты Функция "Просмотр ленты" включает в себя агрегирование видео от людей, на которых подписан пользователь, и, возможно, включение рекомендуемых видео на основе специального алгоритма. Кроме того, пользователи должны иметь возможность комментировать конкретных создателей и ставить им лайки / подписываться на них.

Scale

00:08:06

"Масштаб": Система нацелена на поддержку миллиона активных пользователей в день. По оценкам, объем видео в формате h.264 составляет около пяти мегабайт в минуту, что составляет примерно 10 мегабайт в день на одного пользователя. Объем пользовательских метаданных минимален и составляет около 1 килобайта на пользователя в день.

Design

00:09:51

Загрузка видео Первая глава посвящена процессу загрузки видео. В нем обсуждается конечная точка API для загрузки видео и объясняется структура пользовательского объекта, включая уникальный идентификатор, ссылку на видео и метаданные. Видео хранится в хранилище больших двоичных объектов, таком как S3, с URL-адресом, указанным в таблице.

Просмотр ленты "Просмотр ленты" - еще одна важная функция, обсуждаемая в этой главе. Это включает в себя выполнение запросов GET для загрузки контента при открытии приложения. Служба предварительного кэширования компилирует списки воспроизведения для пользователей на основе их UUID и сохраняет их в виде ссылок на объекты хранения больших двоичных объектов, чтобы пользователи могли быстро получить к ним доступ.

Избранные видео В этой главе рассказывается о добавлении видео в избранное или действиях пользователя в приложении.Конечная точка "Активность пользователя" обрабатывает такие действия, как подписывание на другие учетные записи или лайк определенных видео.Действия пользователей хранятся в отдельных таблицах с использованием внешних ключей для установления связей между различными объектами.Эта информация поступает в алгоритм службы предварительного кэширования, который управляет данными о лайках и подписчиках.

Follow-up questions

00:25:31

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

Вывод - Службе предварительного кэширования может потребоваться своя собственная отдельная структура базы данных. - В целом, были обсуждены все необходимые компоненты для разработки API, структуры базы данных и микросервисов.

Interview analysis

00:31:54

Впечатляющее общение и знания Интервьюируемый проделал отличную работу по четкому изложению идей и продемонстрировал мастерство в различных темах. Они предоставляли дополнительные знания без каких-либо подсказок, демонстрируя свой опыт. Хотя обсуждение было сжатым, выяснилось, что они могли бы углубиться в каждую тему.

Задача "Создать что-то новое" Разработка чего-то незнакомого может быть интересной, но сложной задачей. Опрошенный должен был сделать предположения, основанные на его понимании таких платформ, как Facebook и Instagram.

Положительный общий опыт Интервьюер счел, что беседа в целом прошла хорошо, и выразил благодарность Адаму за его проницательность.