Vai al contenuto

Il secchio che perde acqua sa ancora limitare le richieste

Il leaky bucket misura quanto lavoro accettare e recupera capacità con il passare del tempo. Per farlo non serve un processo che svuoti davvero il contatore.

Che succede

Un secchio con un buco è un buon limitatore di richieste. Ogni operazione aggiunge acqua; il foro la lascia uscire a velocità costante. Finché c’è spazio si accetta lavoro, quando finisce lo si rifiuta. È il leaky bucket, un algoritmo che PlanetScale racconta partendo dagli antichi orologi ad acqua.

Il dettaglio elegante è che il software non deve stare a svuotarlo. Conserva soltanto il livello all’ultimo controllo e l’ora di quel controllo. Alla richiesta successiva sottrae quanto sarebbe uscito nel tempo trascorso, senza scendere sotto zero, e verifica se il nuovo lavoro ci stia.

Capacità e velocità di scarico hanno compiti diversi: la prima assorbe un picco, la seconda regola il ritmo sostenibile. E una richiesta complessa può costare più di una semplice, come nell’API GraphQL di Shopify. In questa versione il secchio decide subito se ammettere il lavoro; la variante usata come coda lo lascia invece in attesa di partire.

Perché conta

Assegnare un costo alle richieste permette di gestire insieme picchi brevi e operazioni di peso diverso.

Leggi la fonte

planetscale.com

Vuoi sapere di più su pillole come questa?