Cos'è l'API throttling?

L'API throttling è il processo di limitazione del numero di richieste API che un utente può fare in un certo periodo. Un'interfaccia di programmazione delle applicazioni (API) funziona come un gateway tra un utente e un'applicazione software. Per esempio, quando un utente fa clic sul pulsante post sui social media, il clic sul pulsante attiva una chiamata API. Questa API interagisce con il server web dell'applicazione di social media ed esegue l'azione di postare. L'utente potrebbe essere una persona o un'altra applicazione software.

Diagramma dell'API throttling

Le organizzazioni usano l'API throttling con vari obiettivi, come la sicurezza, la scalabilità, le prestazioni, la monetizzazione, l'autenticazione e la disponibilità.

Un esempio reale di API throttling a livello aziendale

Supponiamo che una persona stia cercando un volo attraverso un sito OTA (online travel agency, agenzia di viaggio online). Il sito OTA raccoglie informazioni dall'utente, tra cui origine, destinazione e data del viaggio. Poi utilizza le API per recuperare le informazioni sul volo dal GDS (Global Distribution system, sistema di distribuzione globale) come Sabre o Amadeus.

Perché le aziende hanno bisogno dell'API throttling?

Le API sono una delle più grandi risorse delle organizzazioni. Le API aiutano gli utenti di un sito web o di applicazioni mobili a svolgere i loro compiti. Man mano che il numero di utenti aumenta, i siti web o le applicazioni mobili iniziano a mostrare i segni del degrado delle prestazioni. Di conseguenza, gli utenti con connessioni migliori o interfacce più veloci potrebbero avere un'esperienza migliore di altri. L'API throttling è una soluzione elegante che aiuta le organizzazioni a garantire un uso equo delle loro API.

L'API throttling aiuta anche a combattere gli attacchi denial of service (DoS), in cui un utente malintenzionato invia enormi volumi di richieste per far cadere un sito web o un'applicazione mobile. Con l'aumento del numero di utenti online, le aziende hanno bisogno di implementare meccanismi di API throttling per garantire un uso equo, la sicurezza dei dati e prevenire attacchi malevoli.

Come funziona l'API Throttling?

Esistono vari algoritmi per l'API throttling; di seguito i punti fondamentali di qualsiasi algoritmo di API throttling:

  1. Un cliente/utente chiama un'API che si interfaccia con un servizio web o un'applicazione.
  2. La logica di API throttling controlla se la richiesta corrente supera il numero consentito di chiamate API.
  3. Se la richiesta rientra nei limiti, l'API si comporta come al solito ed esegue il compito dell'utente.
  4. Se la richiesta supera il limite, l'API restituisce una risposta di errore all'utente.
  5. L'utente dovrà aspettare un periodo di tempo prestabilito o pagare per effettuare altre chiamate API.
Guida al successo per l'API throttling
La Guida al successo per l'API Product Manager
Sfrutta il potere delle API con la guida di successo in 7 parti su come le aziende possono creare programmi API per far crescere il business digitale!

Quali sono i principali algoritmi di API throttling?

Algoritmo di API throttling leaky bucket

Questo algoritmo usa una coda FIFO (first-in, first-out) per contenere le richieste in arrivo. La coda avrà una dimensione specifica. Quando una nuova chiamata/richiesta API viene ricevuta, viene aggiunta alla fine della coda. A intervalli regolari, questo algoritmo rimuove una richiesta dalla parte anteriore della coda e la elabora. Se arriva una nuova richiesta quando la coda è già piena, la richiesta viene scartata. Questo algoritmo è strettamente legato all'algoritmo del token bucket.

Vantaggi del leaky bucket

  • Facile da implementare
  • Elabora le richieste a un ritmo costante. Anche se c'è un'esplosione di richieste, il sistema non è sovraccarico. In un certo senso, l'algoritmo leaky bucket appiana il flusso in uscita quando c'è un flusso in entrata irregolare.

Svantaggi del leaky bucket

  • Poiché l'algoritmo leaky bucket usa una coda FIFO, vi è una possibilità di inedia. Ciò significa che quando una coda è piena e quando una richiesta richiede più tempo per essere elaborata, le richieste più recenti possono essere scartate. Questo problema sorge a causa dell'ordine in cui le richieste vengono elaborate.

Algoritmo di API throttling a finestra fissa

La finestra fissa consente un numero N di chiamate API da un utente in un determinato periodo. Per esempio, un algoritmo a finestra fissa consente due richieste al minuto. Il lasso di tempo è diviso in intervalli fissi, ognuno della durata di un minuto. All'inizio di un minuto, un contatore è impostato a zero. Con ogni richiesta dell'utente, il contatore aumenta. Se il contatore raggiunge il limite superiore prima della fine della finestra temporale, le nuove richieste vengono rifiutate. All'inizio di ogni minuto, il contatore si azzera.

In una tipica implementazione di un algoritmo a finestra fissa, ogni utente avrà una chiave unica e un contatore associato alla chiave. All'inizio della finestra temporale fissa, il contatore viene azzerato.

Vantaggio della finestra fissa

  • A differenza dell'algoritmo leaky bucket, un algoritmo a finestra fissa non porterà all'inedia di nuove richieste, poiché il contatore si azzera all'inizio di ogni finestra temporale.

Svantaggio della finestra fissa

  • All'inizio della finestra temporale, potrebbe verificarsi un'esplosione di richieste degli utenti. Ad esempio, se vi è un limite di 1000 richieste all'ora, tutte le 1000 richieste potrebbero essere effettuate nel primo minuto della finestra. Ciò potrebbe sovraccaricare il sistema.

Algoritmo di API throttling a finestra scorrevole

Questo algoritmo risolve i problemi di esplosione delle richieste presenti con l'algoritmo a finestra fissa avviando la finestra temporale quando viene fatta una richiesta. Ad esempio, presume che il sistema consenta solo due richieste al minuto per l'utente. A differenza della finestra fissa, la finestra temporale inizia solo quando un utente fa effettivamente la prima richiesta. L'indicatore temporale della prima richiesta viene salvato con un contatore e l'utente è autorizzato a effettuare un'altra richiesta entro quel minuto.

Vantaggi dell'algoritmo a finestra scorrevole

L'algoritmo a finestra scorrevole unisce i vantaggi dell'algoritmo leaky bucket e a finestra fissa. Elimina i problemi con entrambi gli altri algoritmi. Nella finestra scorrevole, le richieste più recenti non muoiono di inedia. A differenza della finestra fissa, la raffica di richieste non sovraccarica il sistema.

Quali sono i vantaggi dell'API throttling?

L'API throttling è una tecnica essenziale per tutte le organizzazioni che espongono i loro servizi attraverso le API.

Prestazioni

L'API throttling previene il degrado delle prestazioni del sistema limitando l'uso eccessivo di un'API. Se un'applicazione ha milioni di utenti, un sistema potrebbe ricevere un numero enorme di richieste API al secondo. Servire tutte queste richieste API rallenterà il sistema e influenzerà le sue prestazioni. L'API throttling assicura che ogni utente riceva le prestazioni garantite dal service level agreement (SLA) (accordo sul livello del servizio).

Sicurezza

Un sistema di API throttling agisce come un gateway per un'API. Aiuta a prevenire gli attacchi DoS (denial of service, diniego di servizio). Nel DoS, un attaccante emette un numero massiccio di richieste di servizio in modo che il servizio diventi indisponibile per gli utenti legittimi. Limitando il numero totale di richieste di servizio, l'API throttling aiuta a prevenire gli attacchi DoS.

Ridurre l'uso involontario o malevolo

Nel caso in cui un'API dia informazioni sensibili a causa di un problema tecnico, l'API throttling limita gli utenti che hanno accesso non autorizzato ai dati attraverso l'API compromessa.

Misurazione e monetizzazione

Le API sono una delle più grandi risorse delle organizzazioni. Monetizzare l'uso delle API contribuisce significativamente al loro profitto. L'API throttling aiuta le organizzazioni a misurare l'utilizzo delle loro API. Per esempio, un servizio web può offrire 1000 chiamate API gratuite all'ora, ma se gli utenti hanno bisogno di più richieste all'ora, devono pagare.

Autenticazione

L'API throttling non limita necessariamente solo il numero di chiamate. A seconda del privilegio di accesso di un utente, la logica di API throttling permetterà loro di accedere alle parti selezionate dell'API. Per esempio, in base all'autorità del richiedente, alcuni utenti possono essere in grado di cercare altri utenti e altri potrebbero essere in grado di modificare i dettagli degli utenti attraverso l'API.

Prova gratuita dell'API throttling
Prova TIBCO Cloud Integration - Prova gratuita
TIBCO Cloud Integration potenzia il tuo business con un'integrazione basata su API più semplice e veloce. È l'integrazione semplificata.

Quali sono le sfide dell'API throttling?

Implementare l'API throttling in un sistema distribuito è un compito impegnativo. Quando l'app o il servizio ha più server in tutto il mondo, il throttling dovrebbe essere applicato al sistema distribuito. Le richieste consecutive dello stesso utente potrebbero essere inoltrate a server diversi. La logica di API throttling risiede su ogni nodo e deve sincronizzarsi con l'altro in tempo reale. Ciò potrebbe determinare situazioni di incoerenza e di concorrenza.

Nell'esempio seguente, l'utente ha già utilizzato quattro del limite di cinque richieste al secondo. Supponiamo che l'utente emetta altre due richieste nello stesso secondo. Esse vanno a due server diversi. Il limitatore di velocità recupera il contatore corrente dal database e vede count=4; autorizza la chiamata. Allo stesso tempo, anche il secondo limitatore di velocità estrae i dati dal database e vede il conteggio=4. Questo accade perché il secondo limitatore di velocità estrae i dati da un database comune prima che il primo limitatore di velocità aggiorni il conteggio. Dunque entrambe le richieste sono servite e l'utente ottiene 6 richieste al secondo.

Soluzioni: i sistemi di API throttling impiegano diverse soluzioni per le situazioni di incoerenza e concorrenza. Un modo per implementare l'API throttling nei sistemi distribuiti è quello di utilizzare sticky sessions (affinità di sessione). Con questo metodo, tutte le richieste di un utente sono sempre servite da un particolare server. Tuttavia, questa soluzione non è ben bilanciata o tollerante agli errori.

La seconda soluzione all'API throttling nei sistemi distribuiti sono i blocchi. Nell'esempio precedente, quando il primo limitatore di velocità accede al database, blocca il conteggio. Finché non sblocca il conteggio, il secondo limitatore di velocità non è in grado di accedere al conteggio. Il primo limitatore di velocità sblocca il conteggio quando il contatore è aggiornato a cinque. Un'altra soluzione diffusa è allentare il limite. Questa soluzione consente una certa percentuale di richieste aggiuntive al secondo.