Ottimizzare la concorrenza elevata con Azure Esplora dati
Le applicazioni altamente simultanee sono necessarie in scenari con una base di utenti di grandi dimensioni, in cui l'applicazione gestisce simultaneamente molte richieste con bassa latenza e velocità effettiva elevata.
I casi d'uso includono dashboard di monitoraggio e avvisi su larga scala. Gli esempi includono prodotti e servizi Microsoft, ad esempio Monitoraggio di Azure, Azure Time Series Insights e Playfab. Tutti questi servizi usano Azure Esplora dati per gestire carichi di lavoro a concorrenza elevata. Azure Esplora dati è un servizio di analisi dei Big Data veloce e completamente gestito per l'analisi in tempo reale su grandi volumi di dati in streaming da applicazioni, siti Web, dispositivi IoT e altro ancora.
Nota
Il numero effettivo di query che possono essere eseguite simultaneamente in un cluster dipende da fattori quali SKU del cluster, volumi di dati, complessità delle query e modelli di utilizzo.
Per configurare le applicazioni a concorrenza elevata, progettare l'architettura back-end come indicato di seguito:
- Ottimizzare i dati
- Impostare un modello di architettura leader-follower
- Ottimizzare le query
- Impostare i criteri del cluster
- Monitorare i cluster di Azure Esplora dati
Questo articolo presenta raccomandazioni per ognuno dei soggetti precedenti che è possibile implementare per ottenere una concorrenza elevata in modo ottimale e conveniente. Queste funzionalità possono essere usate da sole o in combinazione.
Ottimizzare i dati
Per una concorrenza elevata, le query devono usare la quantità minima possibile di risorse della CPU. È possibile usare uno o tutti i metodi seguenti:
- Progettazione dello schema di tabella ottimizzata
- Partizionamento dei dati
- Pre-aggregazione
- Memorizzazione nella cache
Usare le procedure consigliate per la progettazione dello schema di tabella
Usare i suggerimenti di progettazione dello schema di tabella seguenti per ridurre al minimo le risorse della CPU usate:
- Le colonne ID devono essere definite come tipi di dati stringa indipendentemente dal fatto che i valori siano numerici. L'indicizzazione per le colonne stringa è più sofisticata rispetto alle colonne numeriche e offre prestazioni di filtro migliori.
- Trova la corrispondenza ottimale del tipo di dati della colonna con i dati effettivi archiviati in queste colonne. Ad esempio, non archiviare i valori datetime in una colonna stringa.
- Evitare una tabella di tipo sparse di grandi dimensioni con molte colonne e usare colonne dinamiche per archiviare le proprietà di tipo sparse.
- Archiviare le proprietà usate di frequente nella propria colonna con un tipo di dati non dinamico.
- Denormalizzare i dati per evitare join che richiedono risorse CPU relativamente grandi.
Dati di partizione
I dati vengono archiviati sotto forma di extent (partizioni di dati) e vengono partizionati in base al tempo di inserimento per impostazione predefinita. È possibile usare i criteri di partizionamento per ripartizionare gli extent in base a una singola colonna stringa o a una singola colonna datetime in un processo in background. Il partizionamento può offrire miglioramenti significativi delle prestazioni quando la maggior parte delle query usa chiavi di partizione per filtrare, aggregare o entrambi.
Nota
Il processo di partizionamento stesso usa le risorse della CPU. Tuttavia, la riduzione della CPU durante il tempo di query deve superare la CPU usata per il partizionamento.
Pre-aggregare i dati con viste materializzate
Pre-aggregare i dati per ridurre significativamente le risorse della CPU durante il tempo di query. Gli scenari di esempio includono il riepilogo dei punti dati su un numero ridotto di contenitori di tempo, la conservazione del record più recente di un determinato record o la deduplicazione del set di dati. Usare viste materializzate per una visualizzazione aggregata facile da configurare sulle tabelle di origine. Questa funzionalità semplifica la creazione e la gestione di queste viste aggregate.
Nota
Il processo di aggregazione in background usa le risorse della CPU. Tuttavia, la riduzione della CPU durante il tempo di query dovrebbe superare il consumo della CPU per l'aggregazione.
Configurare i criteri di memorizzazione nella cache
Configurare i criteri di memorizzazione nella cache in modo che le query vengano eseguite sui dati archiviati nell'archiviazione ad accesso frequente, noti anche come cache del disco. Eseguire solo scenari limitati e accuratamente progettati nell'archiviazione ad accesso sporadico o nelle tabelle esterne.
Impostare un modello di architettura leader-follower
Il database follower è una funzionalità che segue un database o un set di tabelle in un database di un altro cluster che si trova nella stessa area. Questa funzionalità viene esposta tramite Azure Condivisione dati, LE API di Azure Resource Manager e un set di comandi del cluster.
Usare il modello leader-follower per impostare le risorse di calcolo per carichi di lavoro diversi. Ad esempio, configurare un cluster per gli inserimenti, un cluster per l'esecuzione di query o la gestione di dashboard o applicazioni e un cluster che gestisce i carichi di lavoro di data science. Ogni carico di lavoro in questo caso avrà risorse di calcolo dedicate che possono essere ridimensionate in modo indipendente e configurazioni di memorizzazione nella cache e sicurezza diverse. Tutti i cluster usano gli stessi dati, con il leader che scrive i dati e i follower lo usano in modalità di sola lettura.
Nota
I database di follower hanno un ritardo dal leader, in genere di pochi secondi. Se la soluzione richiede i dati più recenti senza latenza, questa soluzione potrebbe essere utile. Usare una visualizzazione sul cluster di follower che unisce i dati del leader e del follower e interroga i dati più recenti dal leader e il resto dei dati del follower.
Per migliorare le prestazioni delle query nel cluster follower, è possibile abilitare la configurazione degli extent di prelettura. Usare attentamente questa configurazione, perché potrebbe influire sull'aggiornamento dei dati nel database follower.
Ottimizzare le query
Usare i metodi seguenti per ottimizzare le query per una concorrenza elevata.
Seguire le procedure consigliate per le query in modo che le query siano il più efficienti possibile.
Usare una cache dei risultati della query
Quando più utenti caricano lo stesso dashboard in un momento simile, il dashboard al secondo e gli utenti seguenti possono essere serviti dalla cache. Questa configurazione offre prestazioni elevate con quasi nessun utilizzo della CPU. Usare la funzionalità cache dei risultati della query e inviare la configurazione della cache dei risultati delle query con la query usando l'istruzione set
.
Grafana contiene un'impostazione di configurazione per la cache dei risultati della query a livello di origine dati, quindi tutti i dashboard usano questa impostazione per impostazione predefinita e non devono modificare la query.
Configurare la coerenza delle query
La modalità di coerenza delle query predefinita è complessa. In questa modalità, un nodo amministratore gestisce i metadati e l'inserimento per il cluster, nonché la pianificazione delle query e la delega dell'esecuzione ad altri nodi.
Nelle applicazioni a concorrenza elevata, la gestione delle query può causare un uso elevato della CPU del nodo amministratore , mentre altri nodi sono meno occupati. Ciò può causare un collo di bottiglia in cui il numero di query simultanee non può aumentare. Tuttavia, questo potrebbe non essere evidente nel report della CPU del cluster (portale di Azure > {your_cluster} > Metrica > cpu) che mostra l'uso medio della CPU per il cluster.
Per questo scenario, è consigliabile usare la modalità coerenza debole . In questa modalità, più nodi sono in grado di gestire le query, che consente di ridimensionare orizzontalmente il numero di query simultanee. I nodi in questa modalità aggiornano periodicamente la copia dei metadati e i dati appena inseriti, determinando in genere una latenza di meno di un minuto durante la sincronizzazione dei dati. Tuttavia, questa breve latenza è preferibile alla situazione del collo di bottiglia che può verificarsi quando si usa la modalità coerenza assoluta .
È possibile impostare la modalità coerenza in un criterio di coerenza delle query del gruppo di carico di lavoro, nelle proprietà della richiesta client o nella configurazione dell'origine dati Grafana.
Impostare i criteri del cluster
Il numero di richieste simultanee è limitato per impostazione predefinita e controllato dai criteri limite di frequenza delle richieste in modo che il cluster non venga sottoposto a overload. È possibile modificare questo criterio per situazioni di concorrenza elevata. Questi criteri devono essere modificati solo dopo test rigorosi, preferibilmente su modelli di utilizzo e set di dati simili alla produzione. Il test garantisce che il cluster possa sostenere il valore modificato. Questo limite può essere configurato in base alle esigenze dell'applicazione.
Monitorare i cluster di Azure Esplora dati
Il monitoraggio dell'integrità delle risorse del cluster consente di creare un piano di ottimizzazione usando le funzionalità suggerite nelle sezioni precedenti. Monitoraggio di Azure per Azure Esplora dati offre una panoramica completa delle prestazioni, delle operazioni, dell'utilizzo e degli errori del cluster. Ottenere informazioni dettagliate sulle prestazioni delle query, sulle query simultanee, sulle query limitate e sulle varie altre metriche selezionando la scheda Informazioni dettagliate (anteprima) nella sezione Monitoraggio del cluster di Azure Esplora dati nel portale di Azure.
Per informazioni sul monitoraggio dei cluster, vedere Monitoraggio di Azure per Azure Esplora dati. Per informazioni sulle singole metriche, vedere Metriche di Azure Esplora dati.