Meta présente ZGateway : une couche de proxy sans état qui unifie le trafic ZippyDB et traite plus d’un milliard d’opérations par seconde

Voici une annonce qui mérite l’attention des observateurs du secteur.

Meta présente ZGateway : une couche de proxy sans état qui unifie le trafic ZippyDB et traite plus d’un milliard d’opérations par seconde

L’équipe d’ingénierie de Meta a présenté ZGateway, un niveau proxy qui s’intercale désormais entre les applications clientes et ZippyDB, le magasin de données clé-valeur le plus utilisé chez Meta. ZippyDB gère les métadonnées des produits, les compteurs et la configuration à un rythme de divers milliards d’opérations par seconde. À l’origine, ZGateway a été conçu pour remédier à la prolifération des connexions sur plus d’un million d’hôtes clients ; il est depuis devenu une plateforme incontournable pour le traitement par lots, le contrôle d’accès, la mise en cache et la bascule de secours.

Dans le cadre de l’accès direct, chaque client ZippyDB se connectait à tous les hôtes de base de données dont il avait besoin. Un seul client pouvait accéder à des dizaines de milliers de shards répartis sur des centaines de milliers d’hôtes ; ainsi, tant un client type qu’un hôte de base de données type géraient des dizaines de milliers de connexions TLS. Chaque connexion inactive consommait de la mémoire, des ressources CPU et un descripteur de fichier aux deux extrémités, et le nombre de connexions entrantes augmentait à chaque cohorte de clients. Les tempêtes de reconnexions provoquaient des plantages dus à l’épuisement des descripteurs de fichier et à des erreurs « OOM » ; lors d’un incident, un bug de routage a poussé chaque client à ouvrir une connexion par shard, et le parc de clients est entré dans une boucle de redémarrage. Les correctifs côté client n’étaient pas envisageables, car des centaines d’équipes gèrent le parc de clients.

En parallèle, zGateway est une couche de proxy sans état située entre les clients ZippyDB et le parc de bases de données ZServer. Selon Meta, il traite plus d’un milliard d’opérations par seconde et achemine environ 40 % du trafic de ZippyDB, un chiffre qui devrait dépasser les 60 %, avec une surcharge de calcul d’environ 6 % pour un cas d’utilisation moyen.

Il fonctionne sous forme de niveaux régionaux détectés via ServiceRouter, le maillage de services de Meta, et se décline en deux versions : un proxy pur et un cache en lecture directe. Le moteur utilisé est le client C++ « épais » ZippyDB de Meta ; ZGateway est donc, en réalité, un client ZippyDB exécuté en tant que service géré.

Fait intéressant, un client envoie des requêtes via une connexion « sticky » à un hôte ZGateway régional, qui termine la connexion TLS, effectue une autorisation par rapport aux listes de contrôle d’accès (ACL) du cas d’utilisation, applique le contrôle d’admission et la régulation du débit par locataire, identifie le shard, vérifie le cache local sur les niveaux de mise en cache, regroupe la requête avec d’autres tâches en cours pour ce shard, puis la transmet aux répliques appropriées. Les réponses sont démultiplexées, et les métriques propres à chaque cas d’utilisation, les traces et l’utilisation des quotas sont enregistrées. Le protocole TLS reste dans la pile Thrift/ServiceRouter, tandis que la sélection des répliques s’effectue au niveau du client intégré.

Parallèlement, meta modélise la flotte comme des balles lancées dans des bacs : avec B fragments et H hôtes, un hôte est touché avec une probabilité E(H,B) = H(1 − e^(−B/h))E(H,B) = H\left(1 – e^{-B/h}\right). Avec des chiffres fictifs pour 20 régions, 500 000 hôtes de base de informations, 30 000 hôtes proxy, 1 000 000 de clients et 50 000 shards par client, le nombre de connexions par hôte s’effondre d’environ 97 à 98 % et le nombre total de connexions persistantes diminue d’environ 19 fois. Le principal avantage réside dans la scalabilité : le nombre de connexions en accès direct croît linéairement avec le nombre de clients, tandis que celui de ZGateway se réduit à environ le nombre de régions multiplié par la densité de shards par serveur, indépendamment des deux flottes.

Vous souhaitez collaborer avec nous pour promouvoir votre dépôt GitHub, votre page Hugging Face, le lancement d’un produit, un webinaire, etc. ? Contactez-nous.

Michal Sutter est un spécialiste en science des données, titulaire d’un master en science des informations de l’université de Padoue. Fort d’une solide formation en analyse statistique, en apprentissage automatique et en ingénierie des données, Michal excelle dans la transformation d’ensembles de données complexes en informations exploitables.

Les aspects saillants :

  • Vous souhaitez collaborer avec nous pour promouvoir votre dépôt GitHub, votre page Hugging Face, le lancement d’un produit, un webinaire, etc. ?
  • Michal Sutter est un spécialiste en science des données, titulaire d’un master en science des informations de l’université de Padoue.

Les analystes auront matière à débattre dans les prochaines semaines.

Dans le même ordre d’idées :


Article original publié par MarkTechPost : MarkTechPost