Разработка масштабируемого сайта с использованием Php - PullRequest
4 голосов
/ 01 сентября 2010

Я собираюсь разработать социальный + профессиональный сетевой сайт с использованием Php (Zend или Yii Framework). Мы нацелены на более чем 5000 запросов в минуту. У меня есть опыт разработки продвинутых веб-сайтов с использованием MVC-фреймворков.

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

Я читал о memcache и APC. Какой из них я должен искать? Кроме того, я должен использовать единственный сервер Mysql или комбинацию master / slave (если позже, почему и как?)

Спасибо!

Ответы [ 3 ]

3 голосов
/ 01 сентября 2010

Возможно, вы захотите спроектировать свой сайт для использования, как минимум, системы репликации master / slave.Для начала вам не обязательно устанавливать репликационные блоки mysql, но вы хотите спроектировать свое приложение так, чтобы при чтении базы данных использовалось соединение, отличное от записи (даже если в начале оба соединения подключались к одному и тому же серверу БД).

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

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

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

Если выТщательно продумайте и абстрактно храните / извлекайте данные, и вы будете двигаться в правильном направлении.

2 голосов
/ 01 сентября 2010

Memcached - это распределенная система кеширования, тогда как APC является нераспределенной и в основном это кэш кода операции.

Если (и только если) ваш сайт должен работать на разных веб-серверах (балансировка нагрузки), вы должны использовать memcache для распределенного кэширования. Если нет, просто придерживайтесь APC и его кеша.


Что касается базы данных MySQL, я бы посоветовал использовать сетку, которая может автоматически масштабироваться в соответствии с требованиями.

1 голос
/ 02 сентября 2010

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

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

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