TGViewer
LEFT JOIN LEFT JOIN @leftjoin · 41.9K subscribers
Post #1767 8.51K
Польза несовершенства на примере BlueSky
BlueSky — соцсеть, созданная как альтернатива Twitter. Принцип работы тот же: пользователи создают профили, подписываются на других пользователей и видят их посты в своих лентах.

Давайте посмотрим, как это работает изнутри и почему часть постов не доходит до подписчиков — и это нормально.
🔵 Таблица Timeline — те самые ленты постов — разделена на несколько шардов, где для каждого юзера выделена своя партиция. Всего на 32 млн пользователей приходится несколько сотен шардов.
🔵 Когда кто-то выкладывает новый пост, он разлетается по его подписчикам и встраивается в таблицы, из которых формируются их ленты. Одновременно старые сообщения выводятся из них.  Этот процесс работает нормально, если пользователи не шалят и не подписываются на всех подряд. Но если кто-то подписывается на тысячи или сотни тысяч аккаунтов, начинаются проблемы.
🔵 Его лента постоянно обновляется, и это создает повышенную нагрузку не только на его партицию, но и на соседей по шарду. При этом сам пользователь (если это и правда человек, а не бот) никогда не сможет прочитать все сообщения в ней. Значит, и BlueSky незачем выводить все-все новые посты — достаточно просто, чтобы в ленте регулярно появлялся новый контент.

Так, чтобы избежать перегрузки, BlueSky внедрили такие понятия:
🔵 разумное ограничение (reasonable limit) на число подписок — то есть сколько подписок нужно, чтобы лента стабильно обновлялась и оставалась читабельной.
🔵 loss_factor — процент новых сообщений, которые не попадут в ленту пользователя. Он рассчитывается по формуле min(reasonable_limit/num_follows, 1).

Допустим лимит у нас 2000, а подписан пользователь на 8000 аккаунтов. В этом случае loss_factor = 0,25, то есть только 25% новых постов попадут в его ленту.

Внедрение таких запрограммированных потерь помогло значительно поднять производительность и снизить задержки.

Как вам это решение?
❤️ — Изящно!
🌚 — Можно было и получше придумать…
  • ❤ 18
  • 👍 7
  • 🌚 2
More from @leftjoin
  1. Sep 28, 2026В одной ячейке Excel можно будет хранить массивы значений Наконец-то важные новости и не п…
  2. Sep 25, 2026Новый ИИ-бенчмарк подвезли Тем, как ИИ пишет код, взламывает сайты или решает математическ…
  3. Sep 23, 2026Как грамотно делегировать задачи ИИ Внедрение искусственного интеллекта и агентов в работу…
  4. Sep 18, 2026Что делать с тепловыми картами и хороплетами? Все виды графиков и чартов по-своему хороши…
  5. Sep 16, 20263D-карты СУБД Отвлечемся от новостей про ИИ и скандалов вокруг OpenAI и посмотрим, что вну…
  6. Sep 14, 2026Решение математических проблем это не просто бенчмарк На прошлой неделе разгорелся серьезн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →