Dragonfly, un projet qui prétend être le remplacement le plus rapide de Redis et Memcached

La nouvelle a été publiée que la première version est déjà disponible système de mise en cache des données en mémoire Dragonfly, qui prend en charge les protocoles Memcached et Redis, mais cela permet aux requêtes de s'exécuter avec des performances beaucoup plus élevées et une consommation de mémoire moindre.

Le système gère les données au format clé/valeur et peut être utilisé comme une solution légère pour accélérer les sites fortement chargés, mettre en cache les requêtes lentes dans le SGBD et mettre en cache les données intermédiaires dans la RAM.

La BSL a été proposé par les co-fondateurs de MySQL comme alternative au modèle Open Core. L'essence de BSL est que le code de fonctionnalité étendue est initialement disponible pour modification, mais pendant un certain temps, il ne peut être utilisé gratuitement que sous réserve de conditions supplémentaires, qui nécessitent l'achat d'une licence commerciale pour le contourner.

Les conditions de licence supplémentaires du projet Dragonfly exigent que le code soit converti en licence Apache 2.0 uniquement le 1er juin 2027. Jusque-là, la licence autorise l'utilisation du code uniquement pour assurer le fonctionnement de ses services et produits, mais interdit l'utilisation pour créer des services cloud payants qui agissent comme un complément à Dragonfly.

Libellule prétend être le système de stockage de mémoire le plus rapide au monde, selon les développeurs et les benchmarks. Par rapport à Redis, Dragonfly a multiplié par 25 ses performances et une réduction de 3 fois la consommation de mémoire sous des charges de travail typiques. Un seul serveur Dragonfly peut traiter des millions de requêtes par seconde, par exemple, dans un environnement Amazon EC2 c6gn.16xlarge, un débit de 3,8 millions de requêtes par seconde a été atteint.

Dans les tests de stockage de 5 Go, Dragonfly a nécessité 30 % de mémoire en moins que Redis. Lors de la création d'instantanés à l'aide de la commande "bgsave", la consommation de mémoire augmente, mais aux heures de pointe, elle est maintenue presque trois fois moins que dans Redis, et l'opération d'écriture d'instantané elle-même est beaucoup plus rapide (dans le test, a écrit un instantané dans Dragonfly en 30 secondes et Redis - en 42 secondes).

Des performances élevées sont obtenues grâce à une architecture multithread pas de ressources partagées (shared-nothing), ce qui implique qu'un contrôleur séparé et indépendant avec sa propre donnée est attaché à chaque thread, fonctionnant sans mutex ni spin-locks. Des verrous VLL légers sont utilisés pour assurer l'atomicité lorsqu'il s'agit de plusieurs clés. Pour stocker efficacement les informations en mémoire, la structure dashtable est utilisée, qui implémente une sorte de tables de hachage partitionnées.

Parmi les fonctions disponibles dans la première version met en avant la prise en charge du protocole RESP2 et de 130 commandes Redis, ce qui correspond à peu près aux fonctionnalités de la version Redis 2.8.

En outre, Dragonfly prend en charge toutes les commandes Memcached sauf CAS (vérifier et définir), prend en charge les opérations asynchrones pour créer des instantanés, fournit une consommation de mémoire prévisible, fournit un interpréteur Lua 5.4 intégré et prend en charge les types de données complexes tels que les hachages, les ensembles et les listes (ZSET, HSET, LIST, SETS , et CHAÎNE).

Séparément, un mode de mise en cache est disponible, dans lequel les anciennes données sont automatiquement remplacées par de nouvelles données une fois la mémoire disponible épuisée. Il est possible de lier les données à vie pendant laquelle les données sont considérées comme pertinentes.

L'état de stockage peut être vidé sur le disque en arrière-plan pour une récupération ultérieure après un redémarrage. Pour gérer le système, une console HTTP (liée au port TCP 6379) et une API pour renvoyer des métriques conformes à Prometheus sont fournies. Dans les prochaines versions, nous prévoyons d'étendre la prise en charge des commandes Redis et de mettre en œuvre la possibilité de répliquer le stockage pour le basculement et l'équilibrage de charge.

Enfin, si vous souhaitez en savoir plus, sachez que le code Dragonfly est écrit en C/C++ et est distribué sous licence BSL (Business Source License).

Vous pouvez consulter sur le projet dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.