Конструирование упрощённой соцсети в стиле Twitter
Разделите записи, подписки и построение ленты; при большом числе читателей обычно нужен гибрид push и pull. Выбор определяется распределением подписчиков, а не только общим DAU.
Читать ответПодготовка к интервью
889 вопросов по System Design
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Каталог
Разделите записи, подписки и построение ленты; при большом числе читателей обычно нужен гибрид push и pull. Выбор определяется распределением подписчиков, а не только общим DAU.
Читать ответСделайте единый шлюз с проверкой доступа, TTL-кэшем и объединением одновременных запросов одного документа. Экономия не должна превращать устаревшие данные в молчаливое основание решения.
Читать ответХраните соответствие короткого кода исходному URL, дату истечения и владельца. Создание проверяет допустимость URL и лимит, переход проверяет срок, а аналитику записывает асинхронно.
Читать ответРазместите быстрый IP-лимит на границе, а детальные квоты — после авторизации. Для распределённого лимита применяйте атомарное общее состояние или явно распределённые бюджеты между узлами.
Читать ответОбъём оценивается как число записей, умноженное на средний размер полей и накладные расходы хранения. Без длин URL, типов ключей и модели индексов единственного точного ответа нет.
Читать ответРазделите хранение пользователей, подписок и твитов, формирование ленты и доставку медиа. Начните с требований к задержке, порядку ленты и объёму подписчиков, а не с обязательного набора микросервисов.
Читать ответОграничьте ожидание сетевым тайм-аутом и бюджетом попыток; для расчётов на часы используйте очередь и получение результата по идентификатору задачи. Обычная горутина вокруг зависшего вызова проблему не решает.
Читать ответРазместите грубый IP-лимит на входе, а пользовательские и endpoint-лимиты — после проверки личности. Общие квоты нескольких шлюзов требуют согласованного состояния, например атомарной операции Redis.
Читать ответРазделите авторов, книги, читателей и выдачи. Связь книги с авторами допускает соавторство, а уникальность незакрытой выдачи не позволяет одновременно выдать экземпляр двум читателям.
Читать ответВозможны рост памяти, устаревшие данные, гонки и лавина одинаковых загрузок. Нужны ограничения, политика актуальности, синхронизация и объединение конкурентных промахов.
Читать ответНужен явный список обслуживаемых муниципалитетов и правило определения права на конкретную услугу. Геолокация браузера сама по себе не доказывает место проживания.
Читать ответДля Марса стоит сохранить привычные локальные IP-сети и приложения, а межпланетный обмен строить как задержкоустойчивую асинхронную доставку. Земля не может быть обязательной частью каждого запроса.
Читать ответ