Dragonfly, un proyecto que pretender ser el reemplazo por ser más rápido para Redis y Memcached
Se dio a conocer la noticia de que ya está disponible la primera versión del sistema de almacenamiento en caché de datos en memoria Dragonfly, que brinda soporte para los protocolos Memcached y Redis, pero permite que las consultas se ejecuten con un rendimiento mucho mayor y con menos consumo de memoria.
El sistema manipula los datos en el formato clave/valor y se puede utilizar como una solución ligera para acelerar sitios muy cargados, almacenar en caché consultas lentas en el DBMS y datos intermedios en la RAM.
El BSL fue propuesto por los cofundadores de MySQL como una alternativa al modelo Open Core. La esencia de BSL es que el código de funcionalidad extendida inicialmente está disponible para modificación, pero durante algún tiempo se puede usar de forma gratuita solo sujeto a condiciones adicionales, que requieren la compra de una licencia comercial para eludir.
Los términos de licencia adicionales del proyecto Dragonfly requieren que el código se convierta a la licencia Apache 2.0 solo el 1 de junio de 2027. Hasta ese momento, la licencia permite el uso del código solo para garantizar el funcionamiento de sus servicios y productos, pero prohíbe el uso para crear servicios en la nube pagos que actúen como un complemento de Dragonfly.
Dragonfly afirma ser el sistema de almacenamiento en memoria más rápido del mundo, según desarrolladores y puntos de referencia. En comparación con Redis, Dragonfly logró un aumento de rendimiento de 25 veces y una reducción de 3 veces en el consumo de memoria bajo cargas de trabajo típicas. Un solo servidor Dragonfly puede procesar millones de solicitudes por segundo, por ejemplo, en un entorno Amazon EC2 c6gn.16xlarge, se logró un rendimiento de 3,8 millones de solicitudes por segundo.
En las pruebas de almacenamiento de 5 GB, Dragonfly requirió un 30 % menos de memoria que Redis. Durante la creación de instantáneas mediante el comando «bgsave», el consumo de memoria aumenta, pero en las horas punta se mantiene casi tres veces menos que en Redis, y la operación de escritura de la instantánea en sí es mucho más rápida (en la prueba, se escribió una instantánea en Dragonfly en 30 segundos, y Redis – en 42 segundos).
El alto rendimiento se logra gracias a una arquitectura de subprocesos múltiples sin recursos compartidos ( shared-nothing ), lo que implica que un controlador separado e independiente con su propia porción de datos se adjunta a cada subproceso, trabajando sin mutexes ni spin-locks. Los candados VLL ligeros se utilizan para garantizar la atomicidad cuando se trata de varias llaves. Para almacenar información de manera eficiente en la memoria, se utiliza la estructura dashtable, que implementa una especie de tablas hash particionadas.
De las funciones disponibles en la primera versión, se destaca la compatibilidad con el protocolo RESP2 y 130 comandos de Redis, lo que corresponde aproximadamente a la funcionalidad de la versión Redis 2.8.
Además, Dragonfly es compatible con todos los comandos de Memcached excepto CAS (verificar y configurar), brinda soporte para operaciones asincrónicas para crear instantáneas, proporciona un consumo de memoria predecible, proporciona un intérprete de Lua 5.4 incorporado y admite tipos de datos complejos como hashes, conjuntos y listas (ZSET, HSET, LIST, SETS y STRING).
Por separado, está disponible un modo de almacenamiento en caché, en el que los datos antiguos se reemplazan automáticamente por otros nuevos una vez que se agota la memoria libre. Es posible vincular a los datos de por vida durante los cuales los datos se consideran relevantes.
El estado de almacenamiento se puede vaciar en el disco en segundo plano para una recuperación posterior después de un reinicio. Para administrar el sistema, se proporciona una consola HTTP (se une al puerto TCP 6379) y una API para devolver métricas compatibles con Prometheus. En versiones futuras, planeamos ampliar la compatibilidad con los comandos de Redis e implementar la capacidad de replicar el almacenamiento para la conmutación por error y el equilibrio de carga.
Finalmente si estás interesado en poder conocer más al respecto, debes saber que el código de Dragonfly está escrito en C/C++ y se distribuye bajo la licencia BSL (Business Source License).
Puedes consultar sobre el proyecto en el siguiente enlace.