El proyecto Dragonfly desarrolla un reemplazo más rápido para Redis y Memcached

Ya está disponible la primera versión del sistema de almacenamiento en caché en memoria Dragonfly, que brinda soporte para los protocolos Memcached y Redis, pero permite ejecutar consultas con un rendimiento mucho mayor y menos consumo de memoria. El sistema manipula datos en formato clave/valor y puede usarse como una solución liviana para acelerar el trabajo de sitios con alta carga, almacenando en caché consultas lentas al DBMS y datos intermedios en la RAM. El código Dragonfly está escrito en C/C++ y se distribuye bajo BSL (Business Source License).

La licencia BSL fue propuesta por los cofundadores de MySQL como alternativa al modelo Open Core. La esencia de BSL es que el código de funcionalidad avanzada está inicialmente disponible para modificación, pero durante algún tiempo puede usarse de forma gratuita solo si se cumplen condiciones adicionales, que requieren la compra de una licencia comercial para eludirlo. Los términos de licencia adicionales del proyecto Dragonfly requieren que el código se transfiera a la licencia Apache 2.0 solo el 1 de junio de 2027. Hasta ese momento, la licencia permite el uso del código sólo para garantizar el funcionamiento de sus servicios y productos, pero prohíbe el uso para la creación de servicios pagos en la nube que actúan como complemento de Dragonfly.

Según los desarrolladores y las pruebas demostradas, Dragonfly afirma ser el sistema de almacenamiento de memoria más rápido. En comparación con Redis, Dragonfly logró un aumento de 25 veces en el rendimiento y una reducción de tres veces en el consumo de memoria para cargas de trabajo típicas. Un servidor Dragonfly puede procesar millones de solicitudes por segundo; por ejemplo, en el entorno Amazon EC2 c6gn.16xlarge se logró un rendimiento de 3.8 millones de solicitudes por segundo.

El proyecto Dragonfly desarrolla un reemplazo más rápido para Redis y Memcached

En las pruebas para almacenar 5 GB de datos, Dragonfly requirió un 30% menos de memoria que Redis. Al crear instantáneas con el comando "bgsave", el consumo de memoria aumenta, pero en los momentos pico sigue siendo casi tres veces menor que en Redis, y la operación de grabación de instantáneas en sí es mucho más rápida (en la prueba, una instantánea en Dragonfly se escribió en 30 segundos, mientras que Redis, en 42 segundos).

El proyecto Dragonfly desarrolla un reemplazo más rápido para Redis y Memcached

El alto rendimiento se logra gracias a una arquitectura de subprocesos múltiples sin compartir recursos (nada compartido), lo que significa que a cada subproceso se le asigna un procesador separado con su propia porción de datos, trabajando sin mutexes ni bloqueos de giro. Para garantizar la atomicidad cuando se trabaja con varias claves, se utilizan cerraduras VLL livianas. Para almacenar información de manera eficiente en la memoria, se utiliza la estructura de tabla de guiones, que implementa un tipo de tabla hash particionada.

Entre las funciones disponibles en la primera versión, se destaca la compatibilidad con el protocolo RESP2 y 130 comandos de Redis, que corresponde aproximadamente a la funcionalidad de la versión Redis 2.8. Además, Dragonfly admite 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 Lua 5.4 incorporado y admite tipos de datos complejos como hashes, conjuntos y listas (ZSET, HSET, LIST, SETS y STRING).

Está disponible por separado un modo de almacenamiento en caché que reemplaza automáticamente los datos antiguos con datos nuevos una vez que se agota la memoria libre. Es posible asignar a los datos una vida útil durante la cual los datos se consideran relevantes. El estado de almacenamiento se puede vaciar en el disco en segundo plano para su posterior recuperación después del reinicio. Para administrar el sistema, se proporciona una consola HTTP (se vincula al puerto TCP 6379) y una API para devolver métricas, compatible con Prometheus. En versiones futuras, planeamos ampliar la compatibilidad con los comandos de Redis e implementar capacidades de replicación de almacenamiento para tolerancia a fallas y equilibrio de carga.

Fuente: opennet.ru

Añadir un comentario