In che modo la pre-elaborazione guidata dagli eventi e la distribuzione da snapshot hanno ridotto la latenza RPC del 97,5% (5.000 ms → 125 ms) e raggiunto il 99,99% di disponibilità su miliardi di richieste giornaliere di configurazione di rete.
di Manish Bansal, Yankai Zhang e Chen He
La piattaforma di calcolo serverless di Databricks alimenta praticamente tutti i nostri prodotti di dati e AI, come SQL warehouse, notebook, endpoint di serving ML e altro ancora. La piattaforma avvia decine di milioni di VM ogni giorno su AWS, Azure e GCP.
Prima che qualsiasi carico di lavoro serverless possa essere eseguito, la VM deve conoscere la sua configurazione di rete: a quali destinazioni di archiviazione può accedere? Ci sono endpoint di collegamento privati (private link) attraverso i quali instradare il traffico? Ci sono modifiche recenti in Unity Catalog che consentono l'accesso a nuove destinazioni di archiviazione? Dobbiamo iniziare a utilizzare nuove destinazioni condivise tramite Delta Sharing?
La sfida è che la configurazione di rete non è memorizzata in un unico posto. Deve essere assemblata a partire da molteplici servizi a monte, ognuno dei quali contribuisce a comporre il quadro completo.
Nel design originale, ogni volta che si avviava un cluster serverless, il nostro servizio di configurazione di rete chiamava in modo sincrono tutti i servizi a monte, ne aggregava le risposte, calcolava la configurazione di rete per ciascun workspace e la restituiva al data plane serverless. Questo avveniva nel percorso critico della creazione del cluster.

Sebbene la vecchia architettura fosse semplice e funzionasse bene su scala ridotta, soffriva di problemi fondamentali, che si riflettevano nelle seguenti metriche monitorate sulla nostra dashboard operativa:
Con la rapida crescita dell'utilizzo del serverless, il modello sincrono è diventato sempre più insostenibile. Ogni chiamata sincrona attivava operazioni onerose in tutti i workspace, spesso eseguendo calcoli duplicati. Questo ha aggiunto un carico che cresceva proporzionalmente al numero di tenant e alle loro risorse configurate.
Abbiamo riprogettato da zero il modo in cui Databricks distribuisce la configurazione di rete. Il nuovo sistema si basa su questi principi fondamentali:

L'architettura separa nettamente due percorsi. Il percorso di gestione viene eseguito in modo asincrono in background: i servizi a monte emettono eventi di modifica in una coda di messaggi, che un elaboratore di eventi consuma per determinare quali workspace sono interessati e propagare le notifiche di aggiornamento per ciascun workspace. Un gestore di eventi locale recupera quindi i dettagli pertinenti a monte, ricalcola la configurazione di rete del workspace e memorizza il risultato in un archivio di snapshot pre-computati. Inoltre, un riconciliatore periodico sincronizza nuovamente tutti i workspace in background, garantendo la consistenza eventuale anche in caso di eventi mancati. Il percorso di erogazione, al contrario, è critico e veloce: quando un cluster serverless si avvia e necessita della configurazione di rete, il servizio di configurazione di rete la fornisce direttamente dall'archivio degli snapshot con una singola lettura, senza richiedere chiamate ai servizi a monte e riducendo significativamente il carico su di essi.
Quando un cliente crea una nuova connessione Unity Catalog, Unity Catalog emette un evento di modifica nella coda di messaggi. L'elaboratore di eventi riceve quindi l'evento, determina quali workspace sono collegati al metastore interessato e propaga una notifica di aggiornamento per ciascun workspace. Nella partizione di ciascun workspace, il gestore degli eventi riceve questa notifica, recupera i dettagli della connessione aggiornati, ricalcola la configurazione di rete del workspace e la memorizza con un nuovo contrassegno di versione. Da quel momento in poi, quando un cluster serverless richiede la configurazione di rete, questa viene fornita direttamente dall'archivio degli snapshot, senza necessità di chiamate a monte.
Dopo l'introduzione della nuova architettura, i risultati sono stati straordinari per tutte le metriche operative:
| Metrica | Prima (Vecchia) | Dopo (Nuova) | Miglioramento |
|---|---|---|---|
| Latenza (RPC p99) | ~5.000 ms | 125 ms | Riduzione del 97,5% |
| Tasso di successo del server | 99,8% | 99,99% | Tempo di inattività ridotto |

Oltre alle metriche principali:
Questo progetto ci ha insegnato diverse lezioni sulla gestione dell'infrastruttura di rete su scala cloud:
La pre-computazione disaccoppia i percorsi critici. Spostando l'onerosa aggregazione in background, il percorso di erogazione diventa estremamente semplice e veloce. Questa è stata la singola decisione architetturale di maggiore impatto. Ha trasformato una catena di dipendenze multi-servizio in una singola lettura dall'archivio.
L'architettura basata su eventi scambia la consistenza con la scalabilità, mentre la riconciliazione fornisce una rete di sicurezza. Il modello push basato su eventi gestisce i casi comuni in modo efficiente, mentre un riconciliatore periodico recupera eventuali anomalie sfuggite.
Progettare per l'estensibilità fin dal primo giorno. L'architettura modulare a fasi consente di aggiungere il supporto per una nuova origine dati a monte semplicemente implementando una nuova fase, senza alcuna modifica alla pipeline principale. Con l'espandersi dell'offerta di prodotti Databricks, il sistema di configurazione di rete scala di conseguenza.
Oggi, questo sistema gestisce miliardi di richieste di configurazione di rete al giorno in tutta la flotta serverless globale di Databricks, con una latenza di circa 125 ms e una disponibilità del 99,99%. Con la continua e rapida crescita del calcolo serverless, l'architettura basata su eventi garantisce che la distribuzione della configurazione di rete scali di pari passo.
Siamo sempre alla ricerca di ingegneri che amano affrontare le sfide dei sistemi distribuiti su scala globale. Se questo tipo di problemi ti appassiona, ci piacerebbe molto conoscerti: dai un'occhiata alle posizioni aperte su databricks.com/careers!
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
Iscriviti al nostro blog e ricevi gli ultimi articoli direttamente nella tua casella di posta.