Разработчики выпустили несколько новых версий Memcached 1.5.18 и 1.5.19 – программный комплекс позволяет кэшировать информацию в оперативной памяти. ПО актуально для сайтов с высокой нагрузкой.
Главная «фишка» версии 1.5.18 – сохранение содержимого кэша при перезагрузке системы. В 1.5.19 расширили текстовый протокол по умолчанию.
Что такое Memcached
Memcached – высокопроизводительная система хранения данных в оперативной памяти сервера. Систему разработали создатели LiveJournal для собственных нужд. Решение повышает скорость загрузки сайтов и оптимизирует их производительность. Memcached можно использовать в случае повышенной нагрузки на основную СУБД и дисковую подсистему.
Основа программы – хеш-таблица с парами «ключ-значение». Данные из хеш-таблиц позволяют моментально определять сервер, на котором хранится информация. А значит, быстрее находить данные в кэше и извлекать их.
Сервис написан на С и является кроссплатформенным. Клиентские библиотеки ПО есть для C/C++, Python, Java, Perl, Ruby, PHP, .Net. Код Memcached распространяется под лицензией BSD.
Сохранение кэша после перезапуска
В Memcached 1.5.18 разработчики добавили так называемый «теплый кэш». Теперь содержимое кэша сохраняется между перезапусками сервиса.
Memcached 1.5.18 избавляет от появления пиков нагрузки из-за пустого серверного кэша. Когда приложение стартует, оно извлекает содержимое кэша из сохраненной копии и использует его в работе. Сайт не тратит время на сбор коллекции данных, его производительность повышается, растет стабильность доступа.
Разработчики подчеркнули: пока «теплый кэш» – экспериментальная функция, и его стоит использовать осторожно. Они также призвали делиться отзывами о новой функции, чтобы улучшить продукт.
Поддержка устройств постоянной памяти
Начиная с Memcached 1.5.18, для кэширования данных можно использовать не только оперативную, но и постоянную память (persistent-memory, например NVDIMM) через их монтирование с использованием DAX (прямой доступ к ФС в обход страничного кэша без применения уровня блочных устройств).
Хеш-таблица с парами «ключ-значение», записи о соединениях и другая информация по-прежнему будут храниться в оперативной памяти. До перезагрузки эти данные копируются в файл .mmap.
После перезапуска Memcached данные извлекаются из .mmap-файла в оперативную память. Демон исправляет внутренние указатели и восстанавливает хэш-таблицу. Для небольших сайтов это занимает несколько секунд. Но если у вас в памяти около миллиарда элементов, то готовьтесь подождать 2-3 минуты.
«Теплый кеш» помогает, даже если приложение аварийно перезагрузится. Так как основной массив данных сохранится в .mmap-файле, потеряются только самые свежие данные, а значит, сайты будут загружаться быстрее.
Расширение текстового протокола
В Memcached 1.5.19 появился дополнительный набор метакоманд в текстовом протоколе, доступном по умолчанию. Добавили преимущественно функции, которые раньше работали только для бинарного протокола.
Метакоманды также стоит считать экспериментальными. По крайней мере, в нескольких следующих релизах.
Чем это может быть полезно в 1С
На Инфостарте можно найти решения, использующие Memcached для более быстрого получения данных из 1С через протокол XML-RPC (для 7.7 и 1С++) и через протокол OData (для 8.3).
В частности, решение «PHP-драйвер к OData-интерфейсу 8.3» активно развивается на GitHub, и позволяет кэшировать данные из 1С для интеграции с сайтами, использующими в качестве СУБД PostgreSQL, MSSQL и MySQL.