Lanzamiento de Dragonfly 1.0, un sistema para almacenamiento en caché de datos en memoria RAM

Se ha lanzado el sistema de almacenamiento y caché de datos en memoria Dragonfly, que manipula datos en formato clave/valor y se puede utilizar como una solución ligera para acelerar el rendimiento de sitios web de alta carga, caché de consultas lentas a bases de datos y datos intermedios en memoria. Dragonfly es compatible con los protocolos Memcached y Redis, lo que permite utilizar bibliotecas de clientes existentes y trasladar proyectos que utilizan Memcached y Redis a Dragonfly sin necesidad de reescribir el código.

En comparación con Redis, Dragonfly logró un aumento del rendimiento de 25 veces en condiciones de carga típicas en un entorno Amazon EC2 c6gn.16xlarge (3.8 millones de solicitudes por segundo). Comparado con Memcached en el entorno AWS c6gn.16xlarge, Dragonfly pudo ejecutar 4.7 veces más solicitudes por segundo en escritura (3.8 millones contra 806 mil) y 1.77 veces más solicitudes por segundo en lectura (3.7 millones contra 2.1 millones).

Lanzamiento de Dragonfly 1.0, un sistema para almacenamiento en caché de datos en memoria RAM

En pruebas de almacenamiento de 5 GB de datos, Dragonfly requirió un 30% menos de memoria que Redis. Durante la creación de instantáneas con el comando 'bgsave', el consumo de memoria aumenta, pero en momentos pico se mantiene casi tres veces menor que en Redis, y la operación de escritura de la instantánea se completa significativamente más rápido (en la prueba, la instantánea en Dragonfly se escribió en 30 segundos, mientras que en Redis en 42 segundos).

Lanzamiento de Dragonfly 1.0, un sistema para almacenamiento en caché de datos en memoria RAM

El alto rendimiento se logra gracias a una arquitectura multi-thread sin división de recursos (shared-nothing), que implica que a cada hilo se le asigna un manejador separado con su propia porción de datos, funcionando sin mutexes ni bloqueos de tipo spin. Para garantizar la atomicidad en la operación con múltiples claves, se utilizan bloqueos livianos VLL. Para un almacenamiento efectivo de la información en memoria, se aplica una estructura dashtable, que implementa una variante de tablas hash seccionadas.

Algunas características de Dragonfly:

  • Modo de caché que garantiza automáticamente la expulsión de datos antiguos por nuevos una vez que se agota la memoria disponible.
  • Soporte para la vinculación a tiempo de vida de los datos, durante el cual los datos se consideran válidos.
  • Soporte para el volcado de estado del almacenamiento en disco en segundo plano para su posterior recuperación después de un reinicio.
  • Presencia de una consola HTTP (vinculada al puerto TCP 6379) para gestionar el sistema y una API para proporcionar métricas, compatible con Prometheus.
  • Soporta 185 comandos de Redis, lo que equivale aproximadamente a la funcionalidad de la versión 5 de Redis.
  • Soporta todos los comandos de Memcached, excepto CAS (check-and-set).
  • Soporte para operaciones asíncronas para la creación de instantáneas.
  • Consumo de memoria predecible.
  • Intérprete integrado de Lua 5.4.
  • Soporta tipos de datos complejos, como hashes, conjuntos, listas (ZSET, HSET, LIST, SETS y STRING) y datos en formato JSON.
  • Soporte para la replicación del almacenamiento para garantizar la resistencia a fallos y el balanceo de carga.

El código de Dragonfly está escrito en los lenguajes C/C++ y se distribuye bajo la licencia BSL (Business Source License). La licencia BSL fue propuesta por los cofundadores de MySQL como una alternativa al modelo Open Core. La esencia de la BSL es que el código de funcionalidad avanzada está disponible para su modificación, pero durante un tiempo determinado solo puede utilizarse gratuitamente si se cumplen condiciones adicionales, que requieren la compra de una licencia comercial para eludirlas. Las condiciones de licencia adicionales del proyecto Dragonfly prescriben la transición del código a la licencia Apache 2.0 el 15 de marzo de 2028. Hasta esa fecha, la licencia permite el uso del código únicamente para operar sus servicios y productos, pero prohíbe su uso para crear servicios en la nube de pago que funcionen como una capa adicional sobre Dragonfly.

La versión 1.0 de Dragonfly es notable por la implementación del soporte para la replicación de datos desde el primario servidores al secundario. En este sentido, Dragonfly se puede configurar para ser utilizado como un almacenamiento secundario que recibe datos de un servidor primario, tanto basado en Dragonfly como en Redis. La API para gestionar la replicación es compatible con Redis y se basa en el uso de los comandos ROLE y REPLICAOF (SLAVEOF).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster