Jeffrey Cross
Jeffrey Cross

Memcached и высокопроизводительный MySQL

Memcached - это распределенная система кэширования объектов, которая изначально была разработана для повышения производительности LiveJournal и впоследствии использовалась в качестве стратегии масштабирования для ряда сайтов с высокой нагрузкой. Он служит большой, чрезвычайно быстрой хэш-таблицей, которая может быть распределена по многим серверам и доступна одновременно из нескольких процессов. Он предназначен для использования практически для любых внутренних задач кэширования, а для высокопроизводительных веб-приложений он является прекрасным дополнением к базе данных, такой как MySQL.

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

Чтобы настроить сервер memcached, вы просто скачиваете демон и запускаете его с несколькими параметрами. С веб-сайта memcached:

Сначала вы запускаете демон memcached на таком количестве запасных машин, которое у вас есть. У демона нет файла конфигурации, только несколько параметров командной строки, только 3 или 4 из которых вы, вероятно, будете использовать:

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211

Это запускает memcached как демон, используя 2 ГБ памяти и слушая по IP 10.0.0.40, порт 11211. Поскольку 32-разрядный процесс может адресовать только 4 ГБ виртуальной памяти (обычно значительно меньше, в зависимости от вашей операционной системы), если у вас есть 32-битный сервер с 4-64 ГБ памяти с использованием PAE, вы можете просто запустить несколько процессов на компьютере, каждый из которых использует 2 или 3 ГБ памяти.

Это так просто, как только может. Там нет реальной конфигурации. Нет аутентификации. Это просто гигантский хэш-стол. Очевидно, вы настроили бы это в частной, не адресуемой сети. Оттуда работа по запросу и обновлению кеша полностью зависит от разработчика приложения. Вам предоставлены основные функции set, get и delete. Вот простой пример в PHP:

$ memcache = new Memcache; $ memcache-> addServer (‘10 .0.40 ’, 11211); $ memcache-> addServer («10 .0.41», 11211);

$ value = «Данные в кеш»;

$ memcache-> set (‘thekey’, $ value, 60); echo «Кэширование на 60 секунд: $ value
“;

$ retrieved = $ memcache-> get (‘thekey’); echo «Восстановлено: $ найдено
“;

Библиотека PHP заботится о грязной работе по сериализации любого значения, которое вы передаете в кеш, так что вы можете отправлять и извлекать массивы или даже завершать объекты данных.

В слое данных вашего приложения вместо немедленного попадания в базу данных вы можете сначала запросить memcached. Если элемент найден, нет необходимости попадать в базу данных и собирать объект данных. Если ключ не найден, вы выбираете соответствующие данные из базы данных и сохраняете производный объект в кеше. Точно так же вы обновляете кеш всякий раз, когда ваш объект данных изменяется и обновляется в базе данных. Предполагая, что ваш API хорошо структурирован, нужно всего лишь несколько изменений, чтобы кардинально изменить масштабируемость и производительность вашего приложения.

Ниже приведены ссылки на несколько ресурсов, где вы можете найти больше информации об использовании memcached в вашем приложении. В дополнение к документации на веб-сайте memcached, Тодд Хофф составил список статей по memcached и суммировал несколько методов исполнения memcached. Это довольно универсальный инструмент. Для тех из вас, кто использовал memcached, напишите нам в комментариях и поделитесь своими советами и рекомендациями.

Memcached Стратегии использования Memcached и MySQL лучше вместе Учебник по Memcached и MySQL (PDF)

Поделиться

Оставить комментарий