Comment le pré-calcul piloté par les événements et la distribution par instantanés ont réduit la latence RPC de 97,5 % (5 000 ms → 125 ms) et atteint une disponibilité de 99,99 % sur des milliards de requêtes de configuration réseau par jour.
par Manish Bansal, Yankai Zhang et Chen He
La plateforme de calcul serverless de Databricks alimente la quasi-totalité de nos produits de données et d'IA, tels que les SQL warehouses, les notebooks, les points de terminaison de service ML, et bien plus encore. La plateforme lance des dizaines de millions de VM chaque jour sur AWS, Azure et GCP.
Avant qu'une charge de travail serverless ne puisse s'exécuter, la VM doit connaître sa configuration réseau : à quelles destinations de stockage peut-elle accéder ? Existe-t-il des points de terminaison de liaison privée (private link) par lesquels elle doit acheminer le trafic ? Y a-t-il des modifications récentes dans Unity Catalog qui accordent l'accès à de nouvelles destinations de stockage ? Devons-nous commencer à consommer de nouvelles destinations partagées via Delta Sharing ?
Le défi réside dans le fait que la configuration réseau n'est pas stockée dans un emplacement unique. Elle doit être assemblée à partir de plusieurs services en amont, chacun apportant une pièce du puzzle.
Dans la conception d'origine, à chaque démarrage d'un cluster serverless, notre service de configuration réseau appelait de manière synchrone tous les services en amont, agrégeait leurs réponses, calculait la configuration réseau par espace de travail et la renvoyait au dataplane serverless. Cela se produisait sur le chemin critique de la création du cluster.

Bien que l'ancienne architecture ait été simple et fonctionnait bien à petite échelle, elle souffrait de problèmes fondamentaux, reflétés par les indicateurs suivants que nous suivons sur notre tableau de bord opérationnel :
Alors que l'utilisation du serverless continuait de croître rapidement, le modèle synchrone est devenu de moins en moins viable. Chaque appel synchrone déclenchait des opérations coûteuses sur l'ensemble des espaces de travail, effectuant souvent des calculs en double. Cette charge supplémentaire augmentait proportionnellement au nombre de clients (tenants) et de leurs ressources configurées.
Nous avons entièrement repensé l'architecture de la distribution des configurations réseau par Databricks. Elle repose sur les principes fondamentaux suivants :

L'architecture sépare clairement deux chemins. Le chemin de gestion s'exécute de manière asynchrone en arrière-plan : les services en amont émettent des événements de changement vers une file d'attente de messages, qu'un processeur d'événements consomme pour déterminer quels espaces de travail sont affectés et diffuser des notifications de mise à jour par espace de travail. Un gestionnaire d'événements local récupère ensuite les détails pertinents en amont, recalcule la configuration réseau de l'espace de travail et stocke le résultat dans un magasin de snapshots précalculés. Un outil de réconciliation périodique synchronise également à nouveau tous les espaces de travail en arrière-plan, garantissant une cohérence finale même si des événements sont manqués. Le chemin de distribution, en revanche, est critique et rapide : lorsqu'un cluster serverless démarre et a besoin d'une configuration réseau, le service de configuration réseau la fournit directement à partir du magasin de snapshots à l'aide d'une seule lecture de stockage, ce qui ne nécessite aucun appel de service en amont et réduit considérablement la charge sur ces derniers.
Lorsqu'un client crée une nouvelle connexion Unity Catalog, Unity Catalog émet un événement de changement vers la file d'attente de messages. Le processeur d'événements reçoit alors l'événement, détermine quels espaces de travail sont rattachés au metastore concerné et diffuse une notification de mise à jour par espace de travail. Dans la partition de chaque espace de travail, le gestionnaire d'événements reçoit cette notification, récupère les détails de la connexion mise à jour, recalcule la configuration réseau de l'espace de travail et la stocke avec une nouvelle marque de version. À partir de ce moment, lorsqu'un cluster serverless demande la configuration réseau, celle-ci est fournie directement depuis le magasin de snapshots, sans qu'aucun appel en amont ne soit nécessaire.
Après le déploiement de la nouvelle architecture, les résultats ont été transformateurs sur l'ensemble des indicateurs opérationnels :
| Indicateur | Avant (Ancienne) | Après (Nouvelle) | Amélioration |
|---|---|---|---|
| Latence (RPC p99) | ~5 000 ms | 125 ms | Réduction de 97,5 % |
| Taux de réussite du serveur | 99,8 % | 99,99 % | Temps d'arrêt réduit |

Au-delà des indicateurs principaux :
Ce projet nous a enseigné plusieurs leçons sur l'exploitation d'une infrastructure réseau à l'échelle du cloud :
Le précalcul découple les chemins critiques. En déplaçant l'agrégation coûteuse en arrière-plan, le chemin de distribution devient extrêmement simple et rapide. C'est la décision architecturale qui a eu le plus d'impact. Elle a transformé une cha îne de dépendances multi-services en une simple lecture de stockage.
L'architecture basée sur les événements troque la cohérence contre l'évolutivité, et la réconciliation sert de filet de sécurité. Le push basé sur les événements gère efficacement les cas courants, tandis qu'un outil de réconciliation périodique rattrape tout ce qui passe entre les mailles du filet.
Concevez pour l'extensibilité dès le premier jour. L'architecture modulaire par étapes signifie que l'ajout de la prise en charge d'une nouvelle source de données en amont nécessite uniquement l'implémentation d'une nouvelle étape, sans aucune modification du pipeline central. À mesure que la gamme de produits de Databricks s'élargit, le système de configuration réseau évolue avec elle.
Aujourd'hui, ce système traite des milliards de requêtes de configuration réseau par jour sur l'ensemble de la flotte serverless mondiale de Databricks, avec une latence d'environ 125 ms et une disponibilité de 99,99 %. Alors que le calcul serverless poursuit sa croissance rapide, l'architecture basée sur les événements garantit que la distribution des configurations réseau évolue au même rythme.
Nous recherchons constamment des ingénieurs qui aiment relever les défis des systèmes distribués à l'échelle mondiale. Si ce genre de problèmes vous passionne, nous serions ravis de faire votre connaissance. N'hésitez pas à consulter nos postes ouverts sur databricks.com/careers !
(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original
Abonnez-vous à notre blog et recevez les derniers articles directement dans votre boîte mail.