Questa pagina introduce lo strumento di scalabilità automatica per Spanner (Autoscaler), uno strumento open source che puoi utilizzare come strumento complementare a Spanner. Questo strumento ti consente di aumentare o ridurre automaticamente la capacità di calcolo in una o più istanze Spanner in base alla capacità in uso.
Per ulteriori informazioni sulla scalabilità in Spanner, consulta Scalabilità automatica di Spanner. Per informazioni sul deployment dello strumento di scalabilità automatica, consulta quanto segue:
- Esegui il deployment dello strumento di scalabilità automatica per Spanner in Cloud Run Functions.
- Esegui il deployment dello strumento di scalabilità automatica per Spanner su Google Kubernetes Engine (GKE).
Questa pagina presenta le funzionalità, l'architettura e la configurazione di alto livello del gestore della scalabilità automatica. Questi argomenti ti guidano nel deployment dello scaler automatico in uno dei runtime supportati in ciascuna delle diverse topologie.
Gestore della scalabilità automatica
Lo strumento di scalabilità automatica è utile per gestire l'utilizzo e le prestazioni dei deployment di Spanner. Per aiutarti a bilanciare il controllo dei costi con le esigenze di rendimento, lo strumento di scalabilità automatica monitora le tue istanze e aggiunge o rimuove automaticamente nodi o unità di elaborazione per garantire che rimangano entro i seguenti parametri:
- I valori massimi consigliati per l'utilizzo della CPU.
- Il limite consigliato per lo spazio di archiviazione per nodo.
Più o meno un margine configurabile.
La scalabilità automatica delle implementazioni Spanner consente alla tua infrastruttura di adattarsi e scalare automaticamente per soddisfare i requisiti di carico con un intervento minimo o nullo. La scalabilità automatica dimensiona correttamente l'infrastruttura di cui è stato eseguito il provisioning, il che può aiutarti a ridurre al minimo gli addebiti sostenuti.
Architettura
Lo strumento di scalabilità automatica ha due componenti principali: il poller e lo scaler. Sebbene tu possa eseguire il deployment dello strumento di scalabilità automatica con configurazioni diverse in più runtime in più topologie con configurazioni diverse, la funzionalità di questi componenti principali è la stessa.
Questa sezione descrive in modo più dettagliato questi due componenti e i loro scopi.
Poller
Il poller raccoglie ed elabora le metriche delle serie temporali per una o più istanze Spanner. Il poller preelabora i dati delle metriche per ogni istanza Spanner in modo che vengano valutati e inviati allo Scaler solo i punti dati più pertinenti. Il pre-elaborazione eseguita dal poller semplifica anche il processo di valutazione delle soglie per le istanze Spanner regionali, dual-region e multiregionali.
Scaler
Lo Scaler valuta i punti dati ricevuti dal componente Poller e determina se è necessario regolare il numero di nodi o unità di elaborazione e, in caso affermativo, di quanto. confronta i valori delle metriche con la soglia, più o meno un margine consentito e regola il numero di nodi o unità di elaborazione in base al metodo di scalabilità configurato. Per maggiori dettagli, consulta la sezione Metodi di scalabilità.
Durante il flusso, lo strumento di scalabilità automatica scrive un riepilogo dei suoi consigli e delle sue azioni in Cloud Logging per il monitoraggio e il controllo.
Funzionalità del gestore della scalabilità automatica
Questa sezione descrive le funzionalità principali dello strumento di scalabilità automatica.
Gestire più istanze
Lo strumento di scalabilità automatica è in grado di gestire più istanze Spanner in più progetti. Le istanze multiregionali, a doppia regione e regionali hanno soglie di utilizzo diverse che vengono utilizzate durante lo scaling. Ad esempio, i deployment multiregionali e a doppia regione vengono scalati con un utilizzo della CPU ad alta priorità del 45%, mentre i deployment regionali vengono scalati con un utilizzo della CPU ad alta priorità del 65%, entrambi più o meno un margine consentito. Per ulteriori informazioni sulle diverse soglie di scalabilità, consulta Avvisi per l'utilizzo elevato della CPU.
Parametri di configurazione indipendenti
Ogni istanza Spanner con scalabilità automatica può avere uno o più pianificazioni di polling. Ogni pianificazione del polling ha il proprio insieme di parametri di configurazione.
Questi parametri determinano i seguenti fattori:
- Il numero minimo e massimo di nodi o unità di elaborazione che controllano le dimensioni dell'istanza, aiutandoti a controllare gli addebiti sostenuti.
- Il metodo di scalabilità utilizzato per modificare l'istanza Spanner in base al tuo workload.
- I periodi di raffreddamento per consentire a Spanner di gestire le suddivisioni dei dati.
Metodi di scalabilità
Lo strumento di scalabilità automatica fornisce tre diversi metodi di scalabilità per aumentare e diminuire le istanze Spanner: graduale, lineare e diretta. Ogni metodo è progettato per supportare diversi tipi di carichi di lavoro. Puoi applicare uno o più metodi a ogni istanza Spanner di cui viene eseguita la scalabilità automatica quando crei pianificazioni di polling indipendenti.
Le sezioni seguenti contengono ulteriori informazioni su questi metodi di scalabilità.
Stepwise
La scalabilità graduale è utile per i workload con picchi piccoli o multipli. Esegue il provisioning della capacità per uniformarli tutti con un singolo evento di scalabilità automatica.
Il seguente grafico mostra un pattern di carico con più plateau o passaggi di carico, in cui ogni passaggio presenta più piccoli picchi. Questo pattern è adatto al metodo graduale.
Quando viene superata la soglia di carico, questo metodo esegue il provisioning e la rimozione di nodi o unità di elaborazione utilizzando un numero fisso ma configurabile. Ad esempio, vengono aggiunti o rimossi tre nodi per ogni azione di scalabilità. Modificando la configurazione, puoi consentire l'aggiunta o la rimozione di incrementi maggiori di capacità in qualsiasi momento.
Lineare
Il ridimensionamento lineare è ideale per i pattern di carico che cambiano in modo più graduale o che presentano alcuni picchi elevati. Il metodo calcola il numero minimo di nodi o unità di elaborazione necessari per mantenere l'utilizzo al di sotto della soglia di scalabilità. Il numero di nodi o unità di elaborazione aggiunti o rimossi in ogni evento di scalabilità non è limitato a un importo di incremento fisso.
Il pattern di carico campione nel grafico seguente mostra aumenti e diminuzioni improvvisi e consistenti del carico. Queste fluttuazioni non sono raggruppate in passaggi distinguibili come nel grafico precedente. Questo pattern potrebbe essere gestito meglio utilizzando lo scaling lineare.
Lo strumento di scalabilità automatica utilizza il rapporto tra l'utilizzo osservato e la soglia di utilizzo per calcolare se aggiungere o sottrarre nodi o unità di elaborazione dal numero totale attuale.
La formula per calcolare il nuovo numero di nodi o unità di elaborazione è la seguente:
newSize = currentSize * currentUtilization / utilizationThreshold
Diretto
Lo scaling diretto fornisce un aumento immediato della capacità. Questo metodo è progettato per supportare i workload batch in cui è periodicamente richiesto un numero di nodi superiore predeterminato in base a una pianificazione con un orario di inizio noto. Questo metodo scala l'istanza fino al numero massimo di nodi o unità di elaborazione specificato nella pianificazione ed è destinato a essere utilizzato in aggiunta a un metodo lineare o graduale.
Il seguente grafico mostra il grande aumento pianificato del carico, per il quale il gestore della scalabilità automatica ha eseguito il provisioning preliminare della capacità utilizzando il metodo diretto.
Una volta completato il carico di lavoro batch e l'utilizzo torna ai livelli normali, a seconda della configurazione, viene applicata la scalabilità lineare o graduale per ridimensionare automaticamente l'istanza.
Configurazione
Lo strumento di scalabilità automatica offre diverse opzioni di configurazione che puoi utilizzare per gestire la scalabilità delle tue implementazioni Spanner. Sebbene i parametri di Cloud Run Functions e GKE siano simili, vengono forniti in modo diverso. Per ulteriori informazioni sulla configurazione dello strumento Autoscaler, consulta Configurazione di un deployment di Cloud Run Functions e Configurazione di un deployment GKE.
Configurazione avanzata
Lo strumento Gestore della scalabilità automatica dispone di opzioni di configurazione avanzate che ti consentono di controllare con maggiore precisione quando e come vengono gestite le istanze Spanner. Le seguenti sezioni presentano una selezione di questi controlli.
Soglie personalizzate
Lo strumento di scalabilità automatica determina il numero di nodi o unità di elaborazione da aggiungere o sottrarre a un'istanza utilizzando le soglie Spanner consigliate per le seguenti metriche di carico:
- CPU ad alta priorità
- CPU media mobile su 24 ore
- Utilizzo archiviazione
Ti consigliamo di utilizzare le soglie predefinite come descritto in Creare avvisi per le metriche Spanner. Tuttavia, in alcuni casi potresti voler modificare le soglie utilizzate dallo strumento di scalabilità automatica. Ad esempio, potresti utilizzare soglie più basse per far reagire lo strumento Autoscaler più rapidamente rispetto a soglie più alte. Questa modifica contribuisce a evitare che gli avvisi vengano attivati a soglie più elevate.
Metriche personalizzate
Sebbene le metriche predefinite nello strumento Gestore della scalabilità automatica coprano la maggior parte degli scenari di rendimento e
scalabilità, in alcuni casi potrebbe essere necessario specificare le proprie
metriche utilizzate per determinare quando eseguirfare lo scale inin e lo scale out. Per questi scenari, definisci metriche personalizzate nella configurazione utilizzando la proprietà metrics
.
Margini
Un margine definisce un limite superiore e uno inferiore intorno alla soglia. Lo strumento di scalabilità automatica attiva un evento di scalabilità automatica solo se il valore della metrica è superiore al limite superiore o inferiore al limite inferiore.
L'obiettivo di questo parametro è evitare che vengano attivati eventi di scalabilità automatica per piccole fluttuazioni del workload intorno alla soglia, riducendo la quantità di fluttuazioni nelle azioni di scalabilità automatica. La soglia e il margine definiscono insieme il seguente intervallo, a seconda del valore che vuoi che la metrica assuma:
[threshold - margin, threshold + margin]
Minore è il margine, più ristretto è l'intervallo, il che aumenta la probabilità che venga attivato un evento di scalabilità automatica.
La specifica di un parametro di margine per una metrica è facoltativa e il valore predefinito è di cinque punti percentuali sia prima che sotto il parametro.
Suddivisioni dei dati
Spanner assegna intervalli di dati chiamati suddivisioni a nodi o suddivisioni di un nodo chiamate unità di elaborazione. Il nodo o le unità di elaborazione gestiscono e pubblicano i dati in modo indipendente nelle suddivisioni assegnate. Le suddivisioni dei dati vengono create in base a diversi fattori, tra cui il volume dei dati e i pattern di accesso. Per maggiori dettagli, consulta Spanner - schema e modello dei dati.
I dati sono organizzati in suddivisioni e Spanner le gestisce automaticamente. Pertanto, quando lo strumento di scalabilità automatica aggiunge o rimuove nodi o unità di elaborazione, deve consentire al backend Spanner un tempo sufficiente per riassegnare e riorganizzare le suddivisioni man mano che la nuova capacità viene aggiunta o rimossa dalle istanze.
Lo strumento di scalabilità automatica utilizza periodi di attesa sia per gli eventi di scale up che per quelli di scale down per controllare la velocità con cui può aggiungere o rimuovere nodi o unità di elaborazione da un'istanza. Questo metodo consente all'istanza di avere il tempo necessario per riorganizzare le relazioni tra i nodi di calcolo o le unità di elaborazione e le suddivisioni dei dati. Per impostazione predefinita, i periodi di raffreddamento per lo scale up e lo scale down sono impostati sui seguenti valori minimi:
- Valore di aumento: 5 minuti
- Valore di riduzione: 30 minuti
Per ulteriori informazioni sui suggerimenti per la scalabilità e sui periodi di raffreddamento, consulta Scalabilità delle istanze Spanner.
Prezzi
Il consumo di risorse dello strumento di scalabilità automatica è minimo in termini di calcolo, memoria e spazio di archiviazione. A seconda della configurazione dello scalatore automatico, quando viene eseguito il deployment nelle funzioni Cloud Run, l'utilizzo delle risorse dello scalatore automatico di solito rientra nel livello gratuito dei servizi dipendenti (funzioni Cloud Run, Cloud Scheduler, Pub/Sub e Firestore).
Utilizza il Calcolatore prezzi per generare una stima dei costi dei tuoi ambienti in base all'utilizzo previsto.
Passaggi successivi
- Scopri come eseguire il deployment dello strumento Autoscaler su Cloud Run Functions.
- Scopri come eseguire il deployment dello strumento di scalabilità automatica in GKE.
- Scopri di più sulle soglie consigliate di Spanner.
- Scopri di più sulle metriche di utilizzo della CPU e sulle metriche di latenza di Spanner.
- Scopri le best practice per la progettazione dello schema Spanner per evitare hotspot e per caricare i dati in Spanner.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.