O proxecto Dragonfly desenvolve un substituto máis rápido para Redis e Memcached

Está dispoñible a primeira versión do sistema de caché en memoria Dragonfly, que ofrece soporte para os protocolos Memcached e Redis, pero permite que se executen consultas cun rendemento moito maior e menos consumo de memoria. O sistema manipula os datos en formato clave/valor e pódese usar como unha solución lixeira para acelerar o traballo dos sitios de alta carga, almacenando en caché consultas lentas ao DBMS e datos intermedios na memoria RAM. O código Dragonfly está escrito en C/C++ e distribúese baixo a BSL (Business Source License).

A licenza BSL foi proposta polos cofundadores de MySQL como unha alternativa ao modelo Open Core. A esencia de BSL é que o código de funcionalidade avanzada está inicialmente dispoñible para a súa modificación, pero durante algún tempo pódese usar de xeito gratuíto só se se cumpren condicións adicionais, que requiren a compra dunha licenza comercial para evitar. Os termos de licenza adicionais do proxecto Dragonfly requiren que o código se transfira á licenza Apache 2.0 só o 1 de xuño de 2027. Ata este momento, a licenza permite o uso do código só para garantir o funcionamento dos seus servizos e produtos, pero prohibe o uso para a creación de servizos en nube de pago que actúen como complemento para Dragonfly.

Segundo os desenvolvedores e probas demostradas, Dragonfly afirma ser o sistema de almacenamento de memoria máis rápido. En comparación con Redis, Dragonfly logrou un aumento de 25 veces no rendemento e unha redución de tres veces no consumo de memoria para as cargas de traballo típicas. Un servidor Dragonfly pode procesar millóns de solicitudes por segundo, por exemplo, no entorno Amazon EC2 c6gn.16xlarge foi posible acadar un rendemento de 3.8 millóns de solicitudes por segundo.

O proxecto Dragonfly desenvolve un substituto máis rápido para Redis e Memcached

Nas probas para almacenar 5 GB de datos, Dragonfly requiriu un 30 % menos de memoria que Redis. Ao crear instantáneas co comando "bgsave", o consumo de memoria aumenta, pero nos momentos pico segue sendo case tres veces menos que en Redis, e a operación de gravación de instantáneas en si é moito máis rápida (na proba, unha instantánea en Dragonfly escribiuse en 30). segundos, mentres que Redis - en 42 segundos).

O proxecto Dragonfly desenvolve un substituto máis rápido para Redis e Memcached

O alto rendemento conséguese grazas a unha arquitectura multi-fíos sen compartir recursos (shared-nothing), o que significa que a cada fío se lle asigna un procesador separado coa súa propia porción de datos, que funciona sen mutexes e bloqueos de rotación. Para garantir a atomicidade cando se traballa con varias chaves, utilízanse peches VLL lixeiros. Para almacenar información de forma eficiente na memoria, utilízase a estrutura dashtable, que implementa un tipo de táboa hash particionada.

Entre as funcións dispoñibles na primeira versión, nótase o soporte para o protocolo RESP2 e 130 comandos Redis, que corresponde aproximadamente á funcionalidade da versión Redis 2.8. Ademais, Dragonfly admite todos os comandos memcached excepto CAS (check-and-set), ofrece soporte para operacións asíncronas para crear instantáneas, proporciona un consumo de memoria previsible, ofrece un intérprete Lua 5.4 integrado e admite tipos de datos complexos como hash, conxuntos e listas (ZSET, HSET, LIST, SETS e STRING).

Está dispoñible por separado un modo de caché, que substitúe automaticamente os datos antigos por novos despois de esgotar a memoria libre. É posible anexar unha vida útil aos datos durante a cal os datos se consideran relevantes. O estado de almacenamento pódese lavar ao disco en segundo plano para a súa recuperación posterior despois do reinicio. Para xestionar o sistema, ofrécese unha consola HTTP (enlaza ao porto TCP 6379) e unha API para devolver métricas, compatible con Prometheus. Nas versións futuras, pensamos ampliar a compatibilidade con comandos Redis e implementar a capacidade de replicar o almacenamento para proporcionar tolerancia a fallos e equilibrio de carga.

Fonte: opennet.ru

Engadir un comentario