Sin categoría

Cómo aprendí a dejar de preocuparme y a amar los motores modulares de carga dinámica

Memcached te deja con ganas de más

Memcached es un sistema bastante simple con una semántica bastante simple. Muchos usuarios han deseado un poco más de funcionalidad que la proporcionada por defecto, lo que ha dado lugar a varias bifurcaciones y proyectos relacionados.

Para dar cabida a lo que en realidad son diferencias mínimas, han surgido muchos proyectos como bifurcaciones de memcached o proyectos completamente nuevos:

  • dbcached
  • depcached
  • memagent
  • memcached-pro
  • memcachedb
  • moxi
  • redis
  • repcached
  • spcached
  • tirano de tokio
  • tugela cache

...la lista es mucho más larga, sin incluir las bifurcaciones internas que sabemos que existen en muchas organizaciones.

La mayoría de ellos hacen lo mismo desde la perspectiva del cliente (conjuntos básicos y obtención de datos con clave), pero quieren hacer algo un poco diferente con los datos que entran. Algunos ofrecen persistencia, otros replicación, otros proxy y otros nuevas operaciones con los datos.

 

Motores de almacenamiento Memcached

Habiendo visto el mismo patrón una y otra vez, introdujimos un marco de motor de almacenamiento a memcached que permite cambiar la forma en que se manejan los datos sin romper la compatibilidad con los clientes o descuidar nuevas características importantes o correcciones de errores en el controlador de protocolo front-end.

Puedes pensar en esto como una versión limitada de lo que te ofrecen los módulos del servidor web Apache. No es necesario cambiar todo el servidor para obtener algo diferente.

¿Qué tipo de cosas puedes hacer con el framework del motor de almacenamiento memcached? Mira la lista de arriba - ese es el conjunto de problemas que estábamos tratando de resolver.

Nuevos formatos de almacenamiento en memoria

Puedes escribir un motor para utilizar un asignador de memoria alternativo, o cambiar la estructura en memoria del elemento si crees que puedes hacerlo mejor. La implementación de Facebook de memcached, por ejemplo, reduce la precisión del LRU para ahorrar una cantidad considerable de espacio a su escala. Nos hemos asegurado de que esto se pueda implementar fácilmente como motor.

Si eres un fan de C++, puedes crear rápidamente un motor que almacene objetos en un mapa STL Trond Norbye lo utilizó como ejemplo en una entrada de blog el año pasado.

Almacenamiento persistente

Una de las primeras pruebas de un motor propiamente dicho fue un mecanismo de almacenamiento híbrido RAM/flash. Trond también hizo una pequeña demostración de un motor de almacenamiento SQLite.

Zynga está ejecutando un motor de almacenamiento persistente en producción detrás de sus aplicaciones FarmVille y Cafe World utilizando NorthScale Membase Server, que ahora está en beta privada.

Multi-Tenancy

Combinado con SASL, pudimos crear un motor multi-tenant bastante sencillo que permite crear cachés lógicas completamente aisladas dentro de una única instancia de memcached.

Este motor es especialmente interesante porque también maneja extensiones de protocolo para gestionar de forma segura los contenedores lógicos de forma independiente en sus instancias de servidor.

Motores sin garantía de rendimiento

Algunos de los proyectos memcached mencionados anteriormente actúan como proxies donde se comunicarán con otras instancias memcached, inyectando inteligencia entre el cliente y el servidor.

Un autor que escribe un proxy como motor lo tiene fácil. Un motor puede decirle al servidor que no puede atender una petición al instante y salir a trabajar en su propio hilo hasta que esté listo. El cliente será suspendido sin afectar a ningún otro cliente. Cuando la petición esté lista, puede notificar al IO que se ha completado y preparar la respuesta.

Esto es útil para muchas cosas además de los proxies, por supuesto. Yo esperaría que cualquier motor de almacenamiento persistente implementara el mismo tipo de cosas.

Nuevos conceptos de almacenamiento

También debería ser bastante fácil crear un motor que almacene los datos de forma considerablemente diferente a la clave/valor a la que estás acostumbrado.

Si quieres construir un servidor de tipos de datos abstractos, ya tenemos el framework para ti y mantenemos el núcleo probado, así que sólo tienes que construir tu parte y listo.

 

¿Hacia dónde vamos?

El único tema que no hemos cubierto aquí en el marco del motor es cómo un motor podría soportar la replicación (es decir, manejar el caso repcached). Tenemos ideas y prototipos que permiten a los creadores de motores hacer todo lo que necesitan sin añadir una sobrecarga innecesaria al resto del mundo.

Y ese es el objetivo de la rama de motores: solo pagas por las funciones que necesitas.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Dustin Sallings

Dustin Sallings es Arquitecto Jefe en Couchbase. Dustin es autor de spymemcached y colaborador principal de Couchbase y <a href="https://developer.couchbase.com/documentation/server/3.x/developer/dev-guide-3.0/memcached.html#projects">Proyectos Memcached.</a>

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.