Методы написания масштабируемого веб-сайта

Я новичок в области масштабируемости веб-сайта. Можете ли вы предложить мне некоторые способы сделать сайт масштабируемым для большого числа пользователей?

Если вы ожидаете, что ваш сайт будет масштабироваться за пределы возможностей одного сервера, вам нужно будет тщательно спланировать его. Создайте так, чтобы было возможно: –

  • Сделайте так, чтобы ваша база данных могла находиться на отдельном сервере. Это обычно не слишком сложно.
  • Убедитесь, что весь ваш статический контент можно переместить в CDN, так как это обычно вытаскивает большую нагрузку с ваших серверов.
  • Будьте готовы потратить много денег на оборудование. Больше RAM и более быстрых дисков помогают LOT.
  • Это становится намного сложнее, когда вам нужно разделить либо базу данных, либо php с одного сервера на несколько серверов, так что оптимизируйте все, начиная с вашего кода, схемы базы данных, конфигурации вашего сервера и всего остального, о чем вы можете думать, чтобы поставить это окончательное отключайте как можно дольше.

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

  1. Проверьте свой сайт под большой нагрузкой.
  2. Мониторинг всей статистики
  3. Найти узкое место
  4. Устранение узких мест
  5. Вернуться к 1

удачи

Посмотрите эту беседу Расмус Лердорф (создатель PHP)

Специально и выше.

Возможно, вы захотите посмотреть этот ресурс – highscalability.com .

Многие люди упоминали инструменты для выявления узких мест, и это, конечно, необходимо. Вы не можете потратить время, ускоряя что-то, не зная, где это медленно. Но другое, что вам нужно знать, – это то, где ваша целевая масштабируемость. Является ли соотношение цены и качества потратить пару месяцев на то, чтобы ваш сайт масштабировался до того же количества пользователей, что и Twitter, если он будет использоваться тремя людьми в HR? У вас есть известная скорость транзакций или латентность ответа или количество пользователей в соответствии с требованиями продукта? Если это так, укажите эти цифры в своей стратегии оптимизации. Если нет, найдите их перед тем, как преследовать крышу производительности над отверстием.

Очень похоже: как PHP работает правильно?

Масштабируемость – это не маленький предмет и, конечно, более существенный материал, который может быть обоснованно рассмотрен в одном вопросе.

Например, с некоторыми видами приложений объединения (в SQL) не масштабируются, что приводит к разным стратегиям кэширования и очертания.

Beanstalk – еще один инструмент масштабируемости и производительности на высокопроизводительных PHP-сайтах. Как и memcache (разного рода).

Самой большой проблемой для масштабируемости обычно являются общие ресурсы, такие как СУБД. Проблема возникает из-за того, что СУБД обычно не имеют возможности ослабить гарантии последовательности.

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

Например, вы можете разделить схему своей базы данных, чтобы иметь стандартизованную модель данных для записи, и реплицированную часть, обработанную только для чтения, для 90% операций чтения. Данные только для чтения могут распространяться на несколько серверов.

Другим способом увеличения масштабируемости базы данных является разделение данных, например, разделение данных в базе данных для каждого отдела и объединение их либо в ORM, либо в СУБД.

В порядке важности:

  1. Если вы запустите PHP, используйте кеш-код операции, например APC . (Это достаточно важно, чтобы быть встроенным в следующее поколение PHP.)

  2. Используйте YSlow или Google Page Speed для выявления узких мест. (Это покажет структурные проблемы с вашим сайтом, которые влияют как на производительность клиента, так и на сервер).

  3. Убедитесь, что ваш веб-сервер отправляет правильный заголовок Expires для статического содержимого (изображения, Javascript, CSS), чтобы браузер мог его кешировать должным образом. (YSlow предупредит вас об этом тоже.)

  4. Используйте ускоритель HTTP, такой как Varnish . (На этом снимке сказано все – и у них уже есть HTTP-ускоритель.)

Разработайте свой сайт с использованием твердых методов ООП. Вам нужно, чтобы ваш сайт был модульным, поскольку не все узкие места производительности очевидны с самого начала. Будьте готовы реорганизовать части вашего сайта по мере увеличения трафика. Первое предложение, которое я написал, поможет вам сделать это более легко и безопасно. Кроме того, используйте разработку, основанную на тестах. Поскольку рефакторинг означает новые введенные ошибки, а хороший TDD хорош в том, чтобы ловить их, прежде чем они вступят в производство.
Отделите максимально возможный код на стороне клиента от кода на стороне сервера, поскольку они, вероятно, будут обслуживаться с разных серверов, если ваш трафик сайта оправдывает это.
Читайте статьи (читайте, например, советы YSlow).

GL

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