Здравствуйте! Сегодня я расскажу Вам немного о масштабировании web-приложений , где затрону вопросы, касающиеся технологии NoSQL , а также одного из ее воплощений в PHP - модуль Memcached .

Зачем нужен сервер Memcached в PHP

Здравствуйте! Сегодня я расскажу Вам немного о масштабировании web-приложений, где затрону вопросы, касающиеся технологии NoSQL, а также одного из ее воплощений в PHP - модуль Memcached.

Масштабирование- это одна из ключевых характеристик любого грамотно спроектированного приложения. Хорошо масштабируемое приложение может справиться с возрастающей нагрузкой без внесения изменений в его исходный код. Существую два вида масштабирования:

  • вертикальное
  • горизонтальное

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

При разработке сайтов на стороне сервера, как правило, используется стек технологий: Apache, Nginx - PHP - MySQL. И для большинства задач этих технологий хватает вполне. Однако, так как многие сайты создаются в целях получения дохода, то их производительность становится важным фактором. И поэтому с ростом посещаемости, рано или поздно, перед владельцем сайта возникает необходимость увеличения лимита используемых ресурсов сервера, говоря проще, ресурсов, предоставляемых ему хостером прекращает хватать.

В этом случае есть несколько стратегий:

  • провести рефакторинг и определить причину замедления сайта;
  • купить дополнительные ресурсы хостинга;
  • оптимизировать потребление ресурсов сайтом c помощью плагинов (если сайт на CMS);
  • начать использовать PHP модули, такие как Memcached

Очень часто, основной причиной замедления сайта являются операции чтения/записи, осуществляемые с файловой системой и базой данных, особенно при большом количестве запросов. Такие базы данных как MySQL, PostgreSQL особенно показательны в этом отношении.

Поэтому либо вместе с системами управления баз данных, либо вместо них применяют NoSQL-решения. Для своих операций, последние не используют жесткий диск, а хранят данные (в виде документов или пар "ключ/значение" ) полностью в памяти. Это обеспечивает производительность на порядок больше чем у решений на базе реляционных баз данных.

Сегодня в мире используются множество разнообразных NoSQL-решений:

  • MongoDB;
  • Redis;
  • HBase;
  • Riak;
  • CouchDB.

Однако одним из самых первых решений служит memcached-сервер, который хранит данные в виде пар "ключ/значение". Для работы с memcached существуют два расширения - Memcache и Memcahed. Memcached появился позднее и в отличие от Memcache предоставляет интерфейс для всех возможностей сервера memcached. В следующих статьях рассмотрим его подробнее, а на этом все. Спасибо за внимание.