4 points par GN⁺ 2024-03-20 | 1 commentaires | Partager sur WhatsApp
  • Présentation de Garnet

    • Garnet, un nouveau magasin de cache distant développé par Microsoft Research, offre plusieurs avantages uniques.
    • Basé sur le protocole réseau RESP populaire, il permet d’utiliser sans modification les clients Redis disponibles dans la plupart des langages de programmation.
    • Il offre un meilleur débit et une meilleure scalabilité avec de nombreuses connexions client et de petits traitements par lots, contribuant ainsi à réduire les coûts des applications et services à grande échelle.
    • Il atteint une latence client très faible (moins de 300 microsecondes au 99,9e percentile) en utilisant des VM Azure cloud avec TCP accéléré activé.
    • Reposant sur les technologies .NET les plus récentes, Garnet est multiplateforme, extensible et adopte une conception moderne.
    • Il exploite le riche écosystème de bibliothèques de .NET pour élargir la portée de l’API et offrir des possibilités ouvertes d’optimisation.
  • Résumé des fonctionnalités

    • Garnet implémente diverses API, notamment pour les chaînes brutes, les opérations analytiques et les objets.
    • Il peut gérer des transactions multi-clés via les transactions RESP côté client et des procédures stockées côté serveur écrites en C#.
    • Les utilisateurs peuvent définir des opérations personnalisées pour les chaînes brutes et de nouveaux types d’objets en tirant parti de la commodité et de la sûreté de C#.
  • Aperçu des performances

    • Le site web présente quelques résultats clés comparant Garnet aux principaux magasins de cache open source.
  • Points forts de la conception

    • La conception de Garnet repense l’ensemble de la pile du magasin de cache, depuis la réception des paquets sur le réseau jusqu’à l’analyse et au traitement des opérations de base de données, ainsi qu’aux interactions avec le stockage.
    • La couche réseau de Garnet hérite d’une conception en mémoire partagée inspirée d’un travail de recherche antérieur, ShadowFax.
    • La conception du stockage de Garnet se compose de deux magasins clé-valeur Tsavorite déterminés par un journal d’opérations unifié.
  • Mode cluster

    • En plus de l’exécution sur un seul nœud, Garnet prend en charge un mode cluster capable de créer et de gérer des déploiements avec sharding et réplication.
    • Le cluster est encore en cours de développement.
  • Étapes suivantes

    • Vous pouvez vous rendre sur le site de documentation, ou aller directement à la section de démarrage ou à la section des releases.
  • Licence

    • Ce projet est distribué sous licence MIT ; vous pouvez consulter le fichier LICENSE.
  • Confidentialité

    • Des informations sur la confidentialité sont disponibles sur le site web de confidentialité de Microsoft.
  • Contribuer

    • Ce projet accueille les contributions et les suggestions, et la plupart des contributions nécessitent l’acceptation d’un CLA.
    • Le projet a adopté le code de conduite open source de Microsoft ; vous pouvez consulter la FAQ du code de conduite ou contacter opencode@microsoft.com pour toute question ou remarque supplémentaire.
  • Marques

    • Ce projet peut inclure des marques ou logos de projets, produits ou services ; l’utilisation des marques ou logos de Microsoft doit respecter les directives de Microsoft sur les marques et l’identité de marque.

L’avis de GN⁺

  • Garnet est un nouveau magasin de cache qui reste compatible avec les clients Redis existants tout en offrant de meilleures performances et une meilleure scalabilité, ce qui peut le rendre attractif pour les entreprises exploitant de grands services cloud.
  • Des données de long terme sont nécessaires pour évaluer la stabilité réelle de cette technologie en environnement de production et les avantages concrets qu’elle apporte par rapport aux solutions de cache existantes.
  • Le fait que le mode cluster de Garnet soit encore en développement peut constituer un point important à considérer pour les utilisateurs envisageant un déploiement à grande échelle.
  • Comme Garnet est proposé en open source, les contributions de la communauté pourraient apporter davantage de fonctionnalités et d’améliorations, ce qui contribuerait à faire mûrir la technologie.
  • Avant d’adopter Garnet, il convient de prendre en compte la compatibilité avec les systèmes existants, le rapport entre gain de performance et coût, ainsi que les coûts potentiels de migration.

1 commentaires

 
GN⁺ 2024-03-20
Avis Hacker News
  • D’après le graphique de performances des benchmarks, le débit de traitement de la commande GET de Garnet est plus de 10 fois supérieur à celui de Dragonfly. La latence au 50e percentile est légèrement plus élevée que celle de Dragonfly, mais la latence au 99e percentile est légèrement plus basse. Le débit et la latence de Garnet et Dragonfly sont bien meilleurs que ceux de Redis, ce qui laisse penser que Redis a besoin d’une optimisation importante de ses performances.

    Tsavorite, la couche de stockage de Garnet, est dérivée de l’OSS FASTER et inclut de solides fonctionnalités de base de données, comme la scalabilité des threads, la prise en charge du stockage hiérarchisé (mémoire, SSD, stockage cloud), le checkpointing rapide non bloquant, la récupération, la journalisation des opérations pour la durabilité, la prise en charge des transactions multi-clés, ainsi qu’une meilleure gestion et réutilisation de la mémoire.

  • C’est une excellente nouvelle pour ceux qui doivent exécuter Redis directement sur Microsoft Windows Server (ou un système compatible), sans dépendre de WSL2. Auparavant, il existait un portage de Redis désormais non pris en charge, avec des problèmes d’utilisation mémoire (probablement surtout à cause des fichiers mappés en mémoire).

    C’est très intéressant de voir que c’est écrit en C#, et j’ai envie de prendre le temps d’explorer le code.

  • C’est un remplaçant de Redis impressionnant en matière de performances lorsqu’il tourne sur une pile réellement non-Azure. Je me demande ce que ça donne dans le monde réel.

  • Il est intéressant de voir Microsoft et l’équipe .NET construire des projets d’infrastructure très impressionnants. Yarp gère le reverse proxy / l’API gateway, etc., et maintenant il y a Garnet pour le cache mémoire.

    Ils semblent avoir beaucoup de besoins en interne et être prêts à les partager.

  • Comme Garnet est multithread, MSET n’est pas atomique. Si l’on veut une version atomique de MSET, il faut l’exprimer via une transaction (procédure stockée).

    J’ai du mal à comprendre pourquoi ils n’enveloppent pas simplement la commande dans une transaction en interne pour la rendre atomique. Je me demande quels autres "pièges" d’atomicité il y a.

  • En lisant les commentaires ici, on dirait que plus personne n’utilise memcached ?

  • Microsoft Research sort parfois des projets impressionnants. Être payé pour faire de la R&D doit être amusant. J’aimerais que les grandes entreprises fassent davantage de projets de R&D utiles à l’industrie. Si Hashicorp arrive sur le marché, j’espère qu’une bonne entreprise l’acquerra.

  • Ce projet a vraiment l’air excellent. J’espère qu’il finira par remplacer la ressource "Azure Cache for Redis". Aujourd’hui, c’est lent, c’est un fork de Redis conçu pour fonctionner sur Windows, et il faut presque une heure pour créer une instance.

  • Je me demande dans quels cas ce système est moins performant. J’aimerais aussi voir des benchmarks sur des types d’instances plus petits. 72 vCPU, c’est une instance assez énorme.