Что бы вы порекомендовали для сайта с интенсивным движением ajax? - PullRequest
7 голосов
/ 15 октября 2008

Для веб-сайта, такого как reddit, с большим количеством голосов "за" и "против" и большим количеством комментариев по теме, с чем мне идти?

Lighttpd / Php или Lighttpd / CherryPy / Genshi / SQLAlchemy?

и для базы данных, что будет лучше масштабироваться / быть самым быстрым MySQL (4.1 или 5?) Или PostgreSQL?

Ответы [ 5 ]

8 голосов
/ 15 октября 2008

Идеальная настройка была бы близка к this :

caching

Короче говоря, nginx - это быстрый и легкий веб-сервер / front-proxy с уникальным модулем, который позволяет извлекать данные непосредственно из хранилища RAM memcached , не обращаясь к диску. или любое динамическое веб-приложение. Конечно, если URL-адрес запроса еще не был кэширован (или если срок его действия истек), запрос переходит в веб-приложение как обычно. Гениальная часть заключается в том, что когда веб-приложение сгенерировало ответ, его копия отправляется в memcached, готовый для повторного использования.

Все это прекрасно применимо не только к веб-страницам, но и к запросам / ответам AJAX.

В этой статье серверы 'back' - это http, и в частности речь идет о дворняге. Было бы еще лучше, если бы на спине были FastCGI и другие (более быстрые?) Фреймворки; но это намного менее критично, так как команда nginx / memcached поглощает большую часть нагрузки.

обратите внимание, что если ваша схема URL для трафика AJAX хорошо спроектирована (REST лучше, IMHO), вы можете поместить большую часть БД прямо в memcached, и любой POST (который будет передаваться приложению) может превентивно обновить кэш.

8 голосов
/ 15 октября 2008

Я не могу говорить с вопросом MySQL / PostgreSQL, так как у меня ограниченный опыт работы с Postgres, но мой исследовательский проект Masters был посвящен высокопроизводительным веб-сайтам с CherryPy, и я не думаю, что вы будете разочарованы, если вы используете CherryPy для вашего сайта. Он может легко масштабироваться до тысяч одновременных пользователей на обычном оборудовании.

Конечно, то же самое можно сказать и о PHP, и я не знаю каких-либо разумных критериев сравнения производительности PHP и CherryPy. Но если вам интересно, может ли CherryPy обрабатывать сайт с большим трафиком с огромным количеством запросов в секунду, ответ однозначно да.

3 голосов
/ 15 октября 2008

В вопросе о БД я бы сказал, что PostgreSQL масштабируется лучше и имеет лучшую целостность данных, чем MySQL. Для небольшого сайта MySQL может быть быстрее, но, насколько я слышал, он значительно замедляется с ростом размера базы данных. ( Примечание: я никогда не использовал MySQL для большой базы данных, поэтому вы, вероятно, должны получить второе мнение о его масштабируемости. ) Но PostgreSQL определенно хорошо масштабируется и будет хорошим выбором для сайта с высоким трафиком. .

2 голосов
/ 28 октября 2008

Я бы пошел с nginx + php + xcache + postgresql

2 голосов
/ 15 октября 2008

Потребуется больше данных. У Джеффа было несколько статей по тем же проблемам, и ответом было подождать, пока вы не столкнетесь с проблемой производительности.

для начала - кто хостинг и что у них доступно? какие у тебя навыки в доме? Собираетесь ли вы нанимать стороннюю фирму? что они рекомендуют? новый проект с командой, желающей освоить новую структуру?

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

Как только у вас появится более полное представление о требованиях к данным и их работе, приступайте к проектированию базы данных. Есть много правил, которым нужно следовать, но одно из лучших - следовать правилам нормализации (да, я парень из ДБ, почему?)

Теперь у вас есть пара страниц сборки - запустите ваши тесты. у тебя проблемы? Да, теперь посмотрим, что это. Страница обслуживающая или дб тянет? Мера, а затем выбрать курс действий.

...