Memcached 1.6.0 llega con estabilización de extstore y procesamiento de código para redes
Se dio a conocer el lanzamiento de la nueva versión de Memcached 1.6.0, el cual es un sistema distribuido de propósito general para caché basado en memoria y que es empleado para el almacenamiento en caché de datos u objetos en la memoria RAM, reduciendo así las necesidades de acceso a un origen de datos externo (como una base de datos o una API).
Su funcionamiento se basa en una tabla hash distribuida a lo largo de varios equipos. Conforme esta se va llenando, los datos que más tiempo llevan sin ser utilizados se borran para dar espacio a los nuevos.
¿Qué hay de nuevo en Memcached 1.6.0?
La nueva versión de Memcached 1.6.0 estabiliza la implementación del repositorio “extstore”, que ahora está construido de forma predeterminada, pero requiere una activación explícita al inicio (las instalaciones antiguas continuarán funcionando sin actualizar después de la actualización).
A pesar de que, en general, el almacenamiento de la tienda externa se considera estable, se recomienda tener cuidado al implementarlo en sistemas muy grandes.
Extstore permite usar unidades SSD/Flash para expandir el tamaño de la memoria caché. Al igual que con la RAM, el almacenamiento Flash no es persistente y se restablece al reiniciar.
Cuando se usa “extstore”, las claves y los metadatos, como antes, se almacenan solo en la RAM, pero los datos grandes asociados con las claves, cuyo tamaño supera el umbral establecido, se almacenan en un almacenamiento externo, y solo el puntero permanece en la RAM.
Si se asocian datos pequeños con la clave, Memcached funciona como de costumbre, guarda los datos en la memoria y no accede al almacenamiento externo.
Para preservar el estado de la memoria caché entre reinicios, se puede utilizar la posibilidad de volcar el volcado con la memoria caché en el archivo.
El segundo cambio importante en Memcached 1.6.0 fue el procesamiento de código para redes, que se adapta para procesar automáticamente las llamadas por lotes dentro de una sola llamada al sistema.
Anteriormente, al transmitir múltiples comandos GET en un solo paquete TCP, Memcached enviaba resultados con llamadas separadas al sistema.
En Memcached 1.6.0, las respuestas se agregan y devuelven enviando una llamada al sistema. Como resultado, ahora se produce un promedio de 1.5 teclas por llamada al sistema, que en las pruebas muestra una reducción en la carga de la CPU de hasta un 25% y una reducción en los retrasos de varios por ciento.
Reciclar el subsistema de red también permitió cambiar a la asignación dinámica de buffers según sea necesario, en lugar de la asignación estática de buffers.
Esta optimización redujo el consumo de memoria en el modo de espera de los nuevos comandos a través de una conexión establecida por el cliente de 4.5 Kb a 400-500 bytes, y también permitió deshacerse de muchas llamadas malloc, realloc y gratuitas, lo que condujo a una fragmentación innecesaria de la memoria en sistemas con una gran cantidad de conexiones.
Cada subproceso de trabajo ahora procesa su propia agrupación de almacenamiento intermedio de lectura/escritura para conexiones de cliente activas. Las opciones “-o resp_obj_mem_limit=N” y “-o read_buf_mem_limt=N” se proporcionan para establecer el tamaño de estos búferes.
Branch 1.6 también anunció la transferencia a la categoría de protocolo binario obsoleto para interactuar con el servidor. El mantenimiento del protocolo binario y la corrección de errores continuarán, pero no se transferirán nuevas características y actualizaciones a las funciones existentes. El protocolo de texto continuará desarrollándose sin cambios.
El protocolo binario fue reemplazado por el nuevo meta protocolo (una versión de texto del protocolo con metacomandos compactos), lo que demuestra la combinación óptima de rendimiento y fiabilidad. El nuevo protocolo cubre todas las operaciones previamente disponibles a través de texto y protocolos binarios.
¿Cómo instalar Memcached 1.6.0 en Ubuntu y derivados?
Para quienes estén interesados en poder probar esta herramienta, basta con abrir una terminal y en ella teclear:
sudo apt-get update sudo apt-get install php-memcached memcached
En cuanto para quienes prefieren la compilación:
wget http://memcached.org/latest tar -zxvf memcached-1.xxtar.gz cd memcached-1.xx ./configure && make && make test && sudo make install