2009-04-09 5 views
0

Я работаю на сайте, основанном на форуме, сайт также поддерживает обмен сообщениями на месте (то есть, пользователи могут отправлять личные сообщения другим пользователям), что я пытаюсь do уведомляет участника, если у них есть новые сообщения, например, путем отображения выделенной области входящих сообщений, а также количества сообщений, например Входящие (3)Внедрение функции уведомления о новых сообщениях в сценарии фермы серверов

Я немного запутался, как это может быть реализовано на веб-сайт работает на ферме серверов запросов к базе данных с каждым запрос кажется как излишняя для меня, так что это может быть и речь, вероятно, для этого должен использоваться общий кеш, я считаю, что это общая функция для многих сайтов, включая многие из крупных (работает на фермах серверов), интересно, как они это реализуют, любые идеи приветствуются.

ответ

0

SO кэширует вопросы, однако каждый возврат обратно требует вашей репутации. Это можно увидеть, написав пару хороших ответов быстро, а затем обновив первую страницу.

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

0

Waleed, я рекомендую прочитать статьи по адресу high scalability. У них есть конкретные тематические исследования по архитектуре различных мегамасштабных веб-приложений. (См. Боковую панель на правой стороне главной страницы.)

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

This series должен быть информативным для различных мнений по этой теме. A word on scalability сильно цитируется.

Во всех этих случаях имейте в виду, что эти люди имеют дело с Flickr, Amazon, проблемами и архитектурой твитерского масштаба. Решения являются несколько радикальными отклонениями от (ранее принятых) норм, и если ваше приложение для форума не является следующей Большой Вещью, вы можете сначала проверить традиционный подход, чтобы определить, может ли он справиться с нагрузкой или нет.

+0

Спасибо за ваш ответ, я уже являюсь постоянным посетителем highscalability.com :) .. проблема с внедрением этой функции заключается в том, что если вы решите использовать свою СУБД для этого, тогда вам придется запросить с базой данных почти с каждым запросом, который, по моему мнению, не очень масштабируемым, с другой стороны, эта функция реализована на многих крупных веб-сайтах, поэтому я задал этот вопрос, мне было любопытно узнать, как они его реализуют. Мне кажется, что единственный разумный способ сделать это - использовать общий кэш, и на самом деле это направление, в котором я сейчас веду ... –

+0

Извините, вы никогда не знаете! :) Я бы рекомендовал посмотреть на Redis, но звучит так, как будто вы на окнах. Вам действительно необходим распределенный сервисный уровень, обертывающий кластер кэшей памяти. Учитывая, что ваш бэкэнд будет оставаться РСУБД (?) Независимо, вам также понадобится механизм (лениво) синхронизировать фронт-кеш и хранилище постоянного хранилища. Поместите согласованный хеш на уровне клиента (веб-сервера), чтобы распределить пользовательские ключи через средний уровень mem-кешей. Уровень кэша также должен периодически обновлять бэкэнд. – alphazero