Lanzamiento de Dragonfly 1.0, un sistema para almacenar datos en caché en la RAM

Se lanzó el sistema de almacenamiento y caché en memoria Dragonfly, que manipula datos en formato clave/valor y puede usarse como una solución liviana para acelerar el trabajo de sitios altamente cargados, almacenar en caché consultas lentas al DBMS y datos intermedios en RAM. Dragonfly admite los protocolos Memcached y Redis, lo que le permite utilizar bibliotecas cliente existentes y transferir proyectos utilizando Memcached y Redis a Dragonfly sin tener que volver a trabajar el código.

En comparación con Redis, Dragonfly logró un aumento de rendimiento 2 veces (6 millones de solicitudes por segundo) para cargas de trabajo típicas en el entorno Amazon EC16 c25gn.3.8xlarge. En comparación con Memcached en el entorno AWS c6gn.16xlarge, Dragonfly pudo realizar 4.7 veces más solicitudes de escritura por segundo (3.8 millones frente a 806 mil) y 1.77 veces más solicitudes de lectura por segundo (3.7 millones frente a 2.1 millones).

Lanzamiento de Dragonfly 1.0, un sistema para almacenar datos en caché en la RAM

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 permaneció casi tres veces menos 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).

Lanzamiento de Dragonfly 1.0, un sistema para almacenar datos en caché en la RAM

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.

Algunas características de Dragonfly:

  • Modo de almacenamiento en caché, que reemplaza automáticamente los datos antiguos con datos nuevos una vez que se agota la memoria libre.
  • Soporte para vincular datos durante toda su vida durante la cual los datos se consideran relevantes.
  • Soporte para vaciar el estado del almacenamiento al disco en segundo plano para una recuperación posterior después del reinicio.
  • La presencia de una consola HTTP (se vincula al puerto TCP 6379) para la gestión del sistema y una API para devolver métricas, compatible con Prometheus.
  • Soporte para 185 comandos de Redis, lo que equivale aproximadamente a la funcionalidad de la versión Redis 5.
  • Admite todos los comandos de Memcached excepto CAS (verificar y configurar).
  • Soporte para operaciones asincrónicas para la creación de instantáneas.
  • Consumo de memoria predecible.
  • Intérprete Lua 5.4 incorporado.
  • Admite tipos de datos complejos como hashes, conjuntos, listas (ZSET, HSET, LIST, SETS y STRING) y datos JSON.
  • Admite replicación de almacenamiento para tolerancia a fallas y equilibrio de carga.

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 poder eludirlo. Los términos de licencia adicionales para el proyecto Dragonfly requieren que el código se transfiera a la licencia Apache 2.0 el 15 de marzo de 2028. 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 la creación de servicios pagos en la nube que actúan como complemento de Dragonfly.

La versión Dragonfly 1.0 destaca por la implementación de soporte para la replicación de datos desde el servidor primario al secundario. Sin embargo, Dragonfly se puede configurar para usarse como almacenamiento secundario que recibe datos de un servidor primario, ya sea basado en Dragonfly o en Redis. La API de gestión de replicación es compatible con Redis y se basa en el uso de los comandos ROLE y REPLICAOF (SLAVEOF).

Fuente: opennet.ru

Añadir un comentario