Lanzamento de Dragonfly 1.0, un sistema para almacenar datos na memoria RAM

Lanzouse o sistema de almacenamento e almacenamento en memoria Dragonfly, que manipula datos en formato clave/valor e pode usarse como unha solución lixeira para acelerar o traballo de sitios moi cargados, almacenando en caché consultas lentas ao DBMS e datos intermedios na memoria RAM. Dragonfly admite os protocolos Memcached e Redis, o que lle permite utilizar bibliotecas cliente existentes e transferir proxectos mediante Memcached e Redis a Dragonfly sen reelaborar o código.

En comparación con Redis, Dragonfly logrou un aumento de 2 veces no rendemento (6 millóns de solicitudes por segundo) para as cargas de traballo típicas no ambiente Amazon EC16 c25gn.3.8xlarge. En comparación con Memcached no ambiente AWS c6gn.16xlarge, Dragonfly foi capaz de realizar 4.7 veces máis solicitudes de escritura por segundo (3.8 millóns fronte a 806 mil) e 1.77 veces máis solicitudes de lectura por segundo (3.7 millóns fronte a 2.1 millóns).

Lanzamento de Dragonfly 1.0, un sistema para almacenar datos na memoria RAM

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 permaneceu 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).

Lanzamento de Dragonfly 1.0, un sistema para almacenar datos na memoria RAM

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.

Algunhas características de Dragonfly:

  • Modo de caché, que substitúe automaticamente os datos antigos por novos despois de esgotar a memoria libre.
  • Soporte para vincular datos durante toda a vida durante a cal os datos se consideran relevantes.
  • Compatibilidade para eliminar o estado de almacenamento no disco en segundo plano para a súa posterior recuperación despois do reinicio.
  • A presenza dunha consola HTTP (enlaza ao porto TCP 6379) para a xestión do sistema e unha API para devolver métricas, compatible con Prometheus.
  • Compatibilidade con 185 comandos Redis, o que é aproximadamente equivalente á funcionalidade da versión Redis 5.
  • Admite todos os comandos de Memcached excepto CAS (comprobar e configurar).
  • Soporte para operacións asíncronas para crear instantáneas.
  • Consumo de memoria previsible.
  • Intérprete Lua 5.4 integrado.
  • Admite tipos de datos complexos, como hash, conxuntos, listas (ZSET, HSET, LIST, SETS e STRING) e datos JSON.
  • Admite a replicación de almacenamento para tolerancia a fallos e equilibrio de carga.

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 para o proxecto Dragonfly requiren que o código se transfira á licenza Apache 2.0 o 15 de marzo de 2028. 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.

A versión Dragonfly 1.0 destaca pola súa implementación de soporte para a replicación de datos desde o servidor principal ata o secundario. Non obstante, Dragonfly pódese configurar para ser usado como almacenamento secundario que recibe datos dun servidor primario baseado en Dragonfly ou baseado en Redis. A API de xestión de replicación é compatible con Redis e baséase no uso dos comandos ROLE e REPLICAOF (SLAVEOF).

Fonte: opennet.ru

Engadir un comentario