Memcached: хранилище in-memory в простых терминах

Memcached часто используется для повышения производительности динамических приложений с подключениями к базам данных. Благодаря этому хранилищу данных в памяти, например, при обращении к жесткому диску не нужно извлекать данные из памяти. Это не только снижает нагрузку на внутренние системы, но и значительно уменьшает задержку. Популярные веб-сайты, такие как YouTube, Facebook, Twitter и Wikipedia, уже давно пользуются преимуществами этого решения с открытым исходным кодом, позволяя пользователям Интернета наслаждаться улучшенными возможностями просмотра веб-страниц. Итак, как работает Memcached и как начать его использовать? Здесь вы узнаете все, что вам нужно знать об этой популярной системе кэширования.

Что такое Memcached?

Memcached — это высокопроизводительная система кэширования, разработанная компанией Danga Interactive почти двадцать лет назад для интернет-портала LiveJournal. Кэш-сервер был разработан с целью обойти трудоемкие обращения к базе данных при использовании требовательных веб-приложений. Решение заключалось в использовании хранилища данных в памяти, которое могло бы быстро предоставлять пользователям сайта кэшированные элементы. Memcached очень удобен в использовании и прост в установке, настройке и использовании. Он также находится под лицензией BSD, поэтому его можно свободно использовать, изменять и копировать.

Как выглядит архитектура Memcached?

Общая структура архитектуры Memcached относительно проста. Она похожа на распределенную систему баз данных и состоит из приложения, клиентской библиотеки и пула экземпляров Memcached. Любое количество таких экземпляров может быть установлено в оперативной памяти сервера. Мы рекомендуем активировать по одному экземпляру на каждом сервере, где есть свободная память. Эти экземпляры работают вместе, чтобы получить свободное пространство, доступное для кэша. Клиентская библиотека — это интерфейс между соответствующим приложением и Memcached. Она принимает данные для хранения и размещает их на существующем сервере. Благодаря своей многопоточной архитектуре Memcached может одновременно использовать несколько ядер процессов.

Примечание

Помимо Memcached, Redis также является популярным хранилищем данных in-memory. В то время как Memcached отличается своей простотой, Redis предлагает широкий спектр приложений и функций. Если вы хотите выяснить, какое программное обеспечение лучше всего соответствует вашим потребностям, вы можете прочитать нашу статью, в которой мы непосредственно сравниваем Memcached и Redis.

Как работает Memcached?

Обычные базы данных хранят данные на жестком диске или, предпочтительно, на твердотельном накопителе (SSD). В Memcached, с другой стороны, данные хранятся в памяти, чтобы их можно было извлечь за микросекунды, устраняя задержку, вызванную временем поиска при извлечении данных. Несмотря на возможность длительного хранения данных, большинство данных автоматически удаляются через определенное время. Это происходит потому, что Memcached — это всего лишь кэш, а не база данных в традиционном понимании. Таким образом, наименее востребованные данные удаляются, как только не остается места для новых данных. Итак, как именно происходит процесс хранения данных?

Memcached также описывается как хранилище ключевых значений в памяти. Используя протоколы TCP и IP, сначала устанавливается соединение с сервером. Если пользователь хочет получить определенные данные, Memcached проверяет, есть ли они в кэше. Если нет, то необходимые данные будут извлечены из основной памяти. Затем клиент предоставляет ключевое значение для нужных данных, которое генерируется программной библиотекой. Используя алгоритм хэширования, клиент определяет, на каком сервере Memcached должны храниться данные, представленные в виде символьных строк. Ниже приведены пять наиболее важных характеристик Memcached:

  • Данные отправляются только на один сервер.
  • Данные хранятся в виде пар ключ-значение.
  • Различные серверы не обмениваются данными друг с другом.
  • Сервер хранит данные только в памяти.
  • Если места недостаточно, сервер удаляет самые старые данные.

Каковы преимущества и недостатки Memcached?

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

Преимущества Недостатки
Чрезвычайно быстрое время отклика благодаря хранилищу ключевых значений в памяти Хранит данные только временно и теряет их в случае сбоя экземпляра Memcached
Многопоточная архитектура позволяет вертикально масштабировать вычислительные мощности Данные нельзя просмотреть, что затрудняет отладку
Сложное решение с открытым исходным кодом и общедоступным хранилищем данных Длина ключа для значений ограничена 250 символами (1 МБ)
Простота в использовании и гибкость в плане разработки приложений Отсутствие средств защиты требует установки дополнительных брандмауэров
Поддерживает открытые форматы данных и большинство распространенных клиентов и языков программирования Не резервируется (т.е. нет отказоустойчивости с помощью зеркалирования или резервного копирования данных).

Для чего используется Memcached?

Memcached используется для кэширования и хранения данных сеанса. Кэширование делает кэшированные данные, такие как файлы, метаданные и изображения, доступными с молниеносной скоростью. Это позволяет экономически эффективно масштабировать систему при увеличении нагрузки и повышает производительность приложения. Разработчики также используют хранилища в памяти для управления данными сеанса, такими как профили пользователей или состояния сеанса онлайн. Однако это требует, чтобы постоянство данных не было необходимым. В целом, Memcached является хорошим решением для приложений, которым требуется высокопроизводительный крупномасштабный кэш.

Начало работы с Memcached

Самыми сильными сторонами Memcached, несомненно, являются его скорость, масштабируемость и поддержка всех распространенных API и языков программирования, включая Ruby, Java, JavaScript, Python, Go, PHP, C, C++, C# и Node.js. Она также проста в установке на операционных системах Windows или Unix. Демон Memcached предоставляется компанией Danga Interactive для бесплатного скачивания. Помимо соответствующего пакета разработчика, вам также понадобится библиотека libevent, которая обеспечивает асинхронные уведомления о событиях. После установки будут доступны различные варианты конфигурации для клиента и сервера в зависимости от используемого языка программирования.

Поскольку Memcached является проектом с открытым исходным кодом, он используется и совместно разрабатывается большим сообществом в течение многих лет. Это преимущество в том, что подробная информация об использовании, управлении и устранении неполадок различных API и операционных систем доступна вам в Интернете.

Оцените статью
cdelat.ru
Добавить комментарий