Выбор ответа Senior Масштабирование обновлено

Горячий шард

Вопрос

Соцсеть шардирует посты по author_id. Один блогер с 20 млн подписчиков создаёт огромную нагрузку на чтение своего шарда. Какое решение наиболее разумно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Кешировать его посты и добавить шарду реплики чтения. Проблема в чтении горячих данных, поэтому её решают кешированием и репликами: посты популярного автора меняются редко, а читаются постоянно.

Варианты ответа

  1. Кешировать его посты и добавить шарду реплики чтенияправильный ответ
  2. Перешардировать всю систему по post_id вместо author_id
  3. Ограничить число подписчиков у одного автора
  4. Перенести блогера в отдельную БД без реплик

Разбор

Проблема в чтении горячих данных, поэтому её решают кешированием и репликами: посты популярного автора меняются редко, а читаются постоянно. Перешардирование всей системы ради одного автора дорого и ломает запросы «посты автора». Ограничивать подписчиков нельзя по продуктовым причинам. Отдельная БД без реплик только сконцентрирует нагрузку.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.