Мое решение проблемы с производительностью - PullRequest
1 голос
/ 21 декабря 2011

У меня есть сайт объявлений, на котором есть реклама и комментарии. Поскольку трафик вырос до значительного объема, а количество объявлений в системе достигло 1,5 миллиона, из которых почти 250 000 являются активными.

Теперь проблема в том, что система была спроектирована так, чтобы быть очень динамичной с точки зрения категории объявлений и свойств, которые каждый вид рекламы может иметь в зависимости от категории или подкатегории, поэтому для показа рекламы мне нужно объединить почти 4-5 таблиц

Чтобы решить эту проблему, я создал плоскую таблицу (концептуально то, что я называю таблицей публикации) и заполняю эту таблицу заданием SQL каждые 3-4 минуты. Теперь для веб-запросов я запрашиваю эту таблицу, чтобы показать списки объявлений или детали.

Я также ввел кэш данных длительностью около 1 минуты для каждой уникальной комбинации URL для списков объявлений и для каждой детали объявления.

Я делаю то же самое для комментариев к объявлениям (т. Е. Кеширую комментарии и поскольку комментарии являются иерархическими, я также использовал для них модель публикации плоских таблиц, снова заполненную заданием SQL)

Мои вопросы следующие:

  1. Является ли издательская модель с заданием на задание sql хорошим подходом к дизайну?
  2. Какой подход вы бы выбрали или люди выбрали для подобных сценариев?
  3. Как веб-сайт, такой как Facebook, отображает комментарии в реальном времени с миллионами пользователей, следя за тем, чтобы они не теряли данные комментариев, только сохраняя их в кэше и выполняя пакетные обновления?

1 Ответ

1 голос
/ 21 декабря 2011

Начиная с конца:

3. Как веб-сайт, такой как Facebook, отображает комментарии в реальном времени с миллионами пользователей, следя за тем, чтобы они не теряли данные комментариев, только сохраняя их в кешеи делать пакетные обновления?

Две вещи:

  • Умнее программирование, чем вы.Они могут поставить за основу решение этой проблемы в течение нескольких месяцев.
  • Невежество.Они действительно не слишком заботятся о том, чтобы кеш был немного устаревшим.Никто не поймет, на самом деле.
  • Аппаратное обеспечение;) Все больше и больше мощных серверов, чем у вас.

При этом ваш подход звучит разумно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...