Подготовлен (https://github.com/memcached/memcached/releases/tag/1.5.4) релиз системы кеширования данных в оперативной памяти Memcached 1.5.4 (http://memcached.org/), оперирующей данными в формате ключ/значение и отличающейся простотой использования. Memcached обычно применяется как легковесное решение для ускорения работы высоконагруженных сайтов путём кэширование доступа к СУБД и промежуточным данным. Код поставляется (https://github.com/memcached/memcached) под лицензией BSD.
Новая версия интересна добавлением прослойки (https://github.com/memcached/memcached/wiki/Extstore) для работы с внешними хранилищами, позволяющая использовать SSD/Flash-накопители для расширения размера кэша. Как и при использовании оперативной памяти, хранилище на Flash не является постоянным и сбрасывается при перезапуске. В качестве области применения нового режима называется обеспечения эффективного кэширования данных большого размера.
Суть нового метода заключается в том, что ключи и метаданные, как и раньше, хранится только в оперативной памяти. Если связанные с ключом данные небольшого размера, то Memcached работает как обычно, держит данные в памяти и не обращается к внешнему хранилищу. Но если данные больше определённого значения, они сохраняются во внешнее хранилище, а в ОЗУ остаётся только указатель. Если свободной памяти много, то наиболее востребованные данные дополнительно могут полностью находиться в кэше в оперативной памяти (например можно указать, чтобы на Flash сбрасывались только объекты больше 1024 байт, к которым не было обращений 3600 секунд").
Основной упор делается на обеспечении максимальной производительности и минимальной нагрузки на CPU, в ущерб эффективности хранения и потери данных после перезапуска. В лучшем случае из-за фрагментации эффективность использования выделенного постоянного хранилища составляет 80-90%. Для снижения фрагментации применяется технология уплотнения страниц памяти в хранилище. Для продления ресурса Flash-накопителей данные буферизируются и сбрасываются в хранилище последовательно. Для обработки ввода/вывода используется пул потоков, сбрасывающих данные в асинхронном режиме.
Возможность пока остаётся экспериментальной, но отмечается как достаточно стабильная и хорошо протестированная. Например, новый режим уже используется компанией Netflix в своей основной инфраструктуре. Для включения внешнего хранилища следует использовать опцию "-o ext_path=/mnt/somefile,ext_page_count=100" (где /mnt/somefile файл с БД, а 100 - число страниц хранения по 64 Мб каждая), предварительно собрав memcached с указанием "./configure --enable-extstore".
URL: https://github.com/memcached/memcached/releases/tag/1.5.4
Новость: https://www.opennet.ru/opennews/art.shtml?num=47783