Что бы вы порекомендовали для веб-сайта с интенсивным использованием ajax с высоким трафиком?
Для такого веб-сайта, как reddit, с большим количеством голосов вверх/вниз и большим количеством комментариев по каждой теме, что мне следует выбрать?
Lighttpd/Php или Lighttpd/Вишневый/Генши/SQLAlchemy?
И для базы данных, что будет масштабироваться лучше/быстрее MySQL (4.1 или 5? ) или PostgreSQL?
5 answers
Я не могу ответить на вопрос MySQL/PostgreSQL, так как у меня ограниченный опыт работы с Postgres, но мой исследовательский проект был посвящен высокопроизводительным веб-сайтам с CherryPy, и я не думаю, что вы будете разочарованы, если будете использовать CherryPy для своего сайта. Он может легко масштабироваться до тысяч одновременных пользователей на обычном оборудовании.
Конечно, то же самое можно сказать и о PHP, и я не знаю никаких разумных критериев, сравнивающих производительность PHP и CherryPy. Но если бы ты был задаваясь вопросом, может ли CherryPy обрабатывать сайт с высоким трафиком с огромным количеством запросов в секунду, ответ определенно да.
Идеальная настройка была бы близка к этой:
Короче говоря, nginx - это быстрый и легкий веб-сервер/прокси-сервер с уникальным модулем, который позволяет ему извлекать данные непосредственно из хранилища оперативной памяти memcached, не нажимая на диск или какое-либо динамическое веб-приложение. Конечно, если URL-адрес запроса еще не был кэширован (или если срок его действия истек), запрос отправляется в веб-приложение как обычно. Гениальная часть заключается в том, что, когда веб-приложение сгенерировало ответ, его копия отправляется в memcached, готовая к повторному использованию.
Все это прекрасно применимо не только к веб-страницам, но и к запросам/ответам AJAX.
В статье "обратными" серверами являются http, и конкретно говорится о дворняге. Было бы еще лучше, если бы сзади были FastCGI и другие (более быстрые?) фреймворки; но это намного менее критично, так как команда nginx/memcached поглощает большую часть нагрузки.
Обратите внимание, что если ваша схема URL-адресов для трафика AJAX хорошо разработана (ОТДЫХ лучше всего, ИМХО), вы можете поместить большую часть базы данных прямо в memcached, и любая запись (которая будет передана в приложение) может предварительно обновить кэш.
Что касается вопроса о БД, я бы сказал, что PostgreSQL масштабируется лучше и обладает лучшей целостностью данных, чем MySQL. Для небольшого сайта MySQL может быть быстрее, но, насколько я слышал, он значительно замедляется по мере увеличения размера базы данных. ( Примечание: Я никогда не использовал MySQL для большой базы данных, поэтому вам, вероятно, следует получить второе мнение о ее масштабируемости.) Но PostgreSQL определенно хорошо масштабируется и будет хорошим выбором для сайта с высоким трафиком.
Потребуется больше данных. У Джеффа было несколько статей по тем же проблемам, и ответом было подождать, пока вы не столкнетесь с проблемой производительности.
Для начала - кто является хостингом и что у них есть в наличии? каковы ваши внутренние наборы навыков талантов? Собираетесь ли вы нанимать стороннюю фирму? что они рекомендуют? совершенно новый проект с командой, желающей изучить новый фреймворк?
2-я вещь - сделать несколько макетов - как будет работать интерфейс. какие данные это делает нужно загружать и сохранять? идея состоит в том, чтобы снизить ваш трафик между Интернетом и базой данных. например, никаких болтливых страниц с большим количеством запросов. и т.д.
Как только у вас будет лучшее представление о требованиях к данным и потоке - тогда работайте над дизайном базы данных. есть много правил, которым нужно следовать, но одно из лучших - следовать правилам нормализации (да, я парень из бд, почему?)
Теперь у вас есть пара страниц для сборки - запустите свои тесты. у тебя какие-то проблемы? Да, теперь посмотрите, что это такое. Обслуживание страниц или подтягивание базы данных? Измерьте, а затем выберите план действий.
Я бы выбрал nginx + php + xcache + postgresql