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

02-social-feed: обзор с выбором ответа

Синтез кейсов соцленты в формате с выбором ответа: fan-out уведомлений и шторм ретраев, компромисс fan-out ленты и гибрид знаменитостей, server-push и порядок в диалоге у чата, правило офлайн-предвычисления у автодополнения.

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

Четыре решения по четырём кейсам юнита — каждое из тех, что принимаешь в дизайн-ревью, а не определение для пересказа. Нить, связывающая их, та же, что в любой read-heavy соцсистеме: сделай дорогую работу раз, на стороне записи или сборки, а путь к пользователю держи дешёвым лукапом.

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

Викторина

Провайдер уведомлений восстанавливается после сбоя, бэклог хлынул заново; пользователи получают один push 5–9 раз. Ретраи с backoff уже на месте. Какой единственной части не хватает?

Викторина

Твоя лента использует fan-out-on-write, но пост знаменитости на 30M подписчиков вызывает шторм записей, стопорящий ленты всех. В чём стандартная починка?

Викторина

Два пользователя чата на разных гейтвеях быстро переписываются; сообщения рендерятся не по порядку, и одно дублируется после переподключения. Как получить консистентный порядок и без дублей?

Викторина

Автодополнение запрашивает логи поиска на каждое нажатие ради ранжирования совпадений; тормозит на 600 мс и перегружает кластер. В чём архитектурная починка?

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

Четыре кейса рифмуются. Система уведомлений ретраит at-least-once, потому ей нужен ключ идемпотентности ради избегания шторма ретраев — ретраи без дедупа дублируют. Лента новостей read-heavy, потому толкает (fan-out-on-write) обычных авторов, но тянет знаменитостей в гибриде, ведь степенной хвост ломает единую стратегию. Чат упорядочивает сообщения seq в диалоге, назначенным на персисте — тотальный порядок там, где он важен, без глобальной координации — и дедупит по id сообщения. Автодополнение никогда не ранжирует вживую на нажатие; оно отдаёт предвычисленный top-k из trie, построенного офлайн, O(1) чтение за edge-кешем. Объединяющий принцип всех четырёх: сделай дорогую работу раз, на стороне записи или сборки, а путь к пользователю держи дешёвым, безопасным лукапом.

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

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

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

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

Trademarks belong to their respective owners. Editorial reference only.