Newsfeed Архитектура - PullRequest
2 голосов
/ 07 июня 2011

Для проекта, над которым я работаю, мне нужно реализовать новостную ленту, похожую на Facebook, с той разницей, что она будет обновляться со скоростью, сходной с частотой чата, и что лента будет добавляться пользователями(только обновления статуса).Я планировал использовать Thrift с php на клиенте и C ++ на сервере.

Поскольку частота обновления должна быть настолько высокой, на сервере я думал о сохранении последних ~ 20 записей для каналов в связанном списке (или аналогичной структуре) в памяти для быстрого доступа (поскольку любойдля обновления нужны только самые последние записи) при отправке любых старых записей в базу данных mysql для хранения.

Похоже ли это на правильную архитектуру для этой реализации?Если это так, что будет хорошим способом отправить старые записи в базу данных?

Ответы [ 3 ]

1 голос
/ 07 июня 2011

Отправить все элементы непосредственно в БД, но сохранить список с последними 100 или около того.

Если вы используете шаблон репозитория, сохраните список в своем классе репозитория и добавьте метод с именем GetLatest.Остальной части вашего приложения не должно быть важно, кэшированы они или нет.

Если вы используете nhibernate, вы можете включить кэширование и позаботиться об этом за nhibernate.

0 голосов
/ 07 июня 2011

Извините за упрощенный ответ, но я бы отправлял записи в базу данных по мере их поступления на сервер, а не как "состарившиеся". Нет смысла ждать. Затем вы можете использовать свою БД в качестве хранилища и запрашивать ее, когда приходит новый клиент для последних 20 записей.

0 голосов
/ 07 июня 2011

Учитывая использование memcached перед вашей базой данных.Вот для чего он предназначен.

Но прежде чем вы даже сделаете это, просто реализуйте это без кэширования.Посмотрите, как это происходит.Может быть, это будет хорошо работать с довольно скучной реализацией

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