Ridimensionamento con Hub eventi
Esistono due fattori che influiscono sulla scalabilità di Hub eventi.
- Unità elaborate (livello Standard) o unità di elaborazione (livello Premium)
- Partizioni
Unità elaborate
La capacità di elaborazione di Hub eventi è controllata dalle unità elaborate. Le unità elaborate sono unità di capacità pre-acquistate. Una singola unità di capacità consente:
- In ingresso: fino a 1 MB al secondo o 1.000 eventi al secondo, qualunque valore venga raggiunto per primo.
- In uscita: fino a 2 MB al secondo o 4.096 eventi al secondo.
Oltre la capacità delle unità elaborate acquistate, i dati in ingresso vengono limitati e l'Hub eventi genera un'eccezione ServerBusyException. I dati in uscita non producono eccezioni di limitazione, ma sono ancora limitati alla capacità delle unità elaborate acquistate. Se si ricevono eccezioni di velocità di pubblicazione o sono previste uscite maggiori, controllare il numero di unità elaborate acquistate per lo spazio dei nomi. È possibile gestire le unità elaborate nella pagina Scalabilità dello spazio dei nomi nel portale di Azure. È anche possibile gestire le unità elaborate a livello di programmazione usando le API degli hub eventi.
Le unità elaborate vengono pre-acquistate e sono fatturate su base oraria. Una volta acquistate, le unità elaborate vengono fatturate per un minimo di un'ora. È possibile acquistare fino a 40 unità elaborate per uno spazio dei nomi di Hub eventi, che vengono condivise in tutti gli hub eventi nello spazio dei nomi.
La funzionalità Aumento automatico di Hub eventi aumenta automaticamente le prestazioni aumentando il numero di unità elaborate per soddisfare le esigenze di utilizzo. L'aumento delle unità elaborate previene scenari di limitazione in cui:
- Le velocità di ingresso dei dati superano le unità elaborate impostate.
- Le velocità di richiesta dei dati in uscita superano le unità elaborate impostate.
Il servizio Hub eventi aumenta la velocità effettiva quando il carico supera la soglia minima, senza che le richieste abbiano esito negativo con errori ServerBusy.
Per altre informazioni sulla funzionalità di aumento automatico, vedere Scalare automaticamente le unità elaborate.
Unità di elaborazione
Hub eventi Premium offre prestazioni superiori e un migliore isolamento all'interno di un ambiente PaaS multi-tenant gestito. Le risorse in un livello Premium sono isolate a livello di CPU e di memoria in modo che ogni carico di lavoro del tenant venga eseguito in isolamento. Questo contenitore di risorse è chiamato Unità di messaggistica (PU). È possibile acquistare 1, 2, 4, 6, 8, 10, 12 o 16 unità di elaborazione per ogni spazio dei nomi Premium di Hub eventi.
Quanto è possibile inserire e trasmettere con un'unità di elaborazione dipende da vari fattori, ad esempio da produttori, consumer, velocità di inserimento ed elaborazione e molto altro ancora.
Ad esempio, lo spazio dei nomi Premium di Hub eventi con un'unità di elaborazione e un Hub eventi (100 partizioni) può offrire approssimativamente la capacità core di circa 5-10 MB/s in ingresso e 10-20 MB/s per carichi di lavoro AMQP o Kafka.
Per informazioni sulla configurazione delle unità di elaborazione richieste per uno spazio dei nomi di livello Premium, vedere Configurare le unità di elaborazione.
Nota
Per altre informazioni sulle quote e sui limiti, vedere Hub eventi di Azure - quote e limiti.
Partizioni
L'Hub eventi organizza le sequenze di eventi in una o più partizioni. Man mano che arrivano, i nuovi eventi vengono aggiunti alla fine di questa sequenza.
Una partizione può essere considerata come registro commit. Le partizioni contengono i dati dell'evento con le informazioni seguenti:
- Corpo dell'evento
- Contenitore di proprietà definito dall'utente che descrive l'evento
- Metadati, ad esempio l'offset nella partizione e il relativo numero nella sequenza di flusso
- Timestamp sul lato servizio in corrispondenza del quale è stato accettato
Vantaggi dell'utilizzo delle partizioni
Hub eventi è progettato per semplificare l'elaborazione di volumi elevati di eventi e il partizionamento contribuisce a questo scopo in due modi:
- Anche se Hub eventi è un servizio PaaS, esiste una realtà fisica sottostante. Per mantenere un log che preservi l'ordine degli eventi è necessario che tali eventi vengano tenuti insieme nell'archiviazione sottostante e nelle relative repliche e che il risultato sia un limite di velocità effettiva per tale log. Il partizionamento consente l'uso di più log paralleli per lo stesso hub eventi e quindi la moltiplicazione della capacità di output di input non elaborato (I/O) disponibile.
- Le applicazioni devono essere in grado di tenere il passo con l'elaborazione del volume di eventi inviati a un hub eventi. Questa operazione può essere complessa e richiede una capacità di elaborazione parallela sostanziale e scale-out. La capacità di gestione degli eventi di un singolo processo è limitata, quindi sono necessari diversi processi. Le partizioni sono il modo in cui la soluzione inserisce tali processi e garantisce tuttavia che ogni evento abbia un proprietario di elaborazione chiaro.
Numero di partizioni
Il numero di partizioni viene specificato al momento della creazione di un hub eventi. Deve essere compreso tra uno e il numero massimo di partizioni consentito per ogni piano tariffario. Per conoscere il limite del numero di partizioni per ogni livello, vedere questo articolo.
È consigliabile scegliere almeno il numero di partizioni previste durante il carico massimo dell'applicazione per tale hub eventi specifico. Per i livelli diversi dai livelli dedicati e Premium, non è possibile modificare il numero di partizioni per un hub eventi dopo la creazione. Per un hub eventi in un livello Premium o dedicato, è possibile aumentare il numero di partizioni dopo la creazione, ma non è possibile ridurlo. La distribuzione dei flussi tra le partizioni cambierà perché il mapping delle chiavi di partizione alle partizioni cambia, pertanto è consigliabile provare a evitare tali modifiche se l'ordine relativo degli eventi è importante nell'applicazione.
Si potrebbe essere tentati di impostare il numero di partizioni sul valore massimo consentito, ma tenere sempre presente che i flussi di eventi devono essere strutturati in modo da consentire di usufruire di più partizioni. Se è necessario preservare l'ordine assoluto in tutti gli eventi o solo in pochi sottoflussi, è possibile che non si riesca a sfruttare molte partizioni. Inoltre, molte partizioni rendono l'elaborazione più complessa.
Non importa quante partizioni si trovano in un hub eventi quando si tratta di prezzi. Dipende dal numero di unità tariffarie (unità elaborate (TU) per il livello Standard, unità di elaborazione (PU) per il livello Premium e unità di capacità (CU) per il livello dedicato) per lo spazio dei nomi o il cluster dedicato. Ad esempio, un hub eventi del livello standard con 32 partizioni o con una partizione comporta lo stesso costo esatto quando lo spazio dei nomi è impostato su una capacità TU. È anche possibile ridimensionare le TU o PU nello spazio dei nomi o le CU del cluster dedicato indipendentemente dal numero di partizioni.
La partizione è un meccanismo di organizzazione dei dati che consente di pubblicare e utilizzare i dati in modo parallelo. È consigliabile bilanciare le unità di ridimensionamento (unità elaborate per il livello Standard, le unità di elaborazione per il livello Premium o le unità di capacità per il livello dedicato) e le partizioni per ottenere una scalabilità ottimale. In generale, è consigliabile una velocità effettiva massima di 1 MB/s per partizione. Pertanto, una regola generale per calcolare il numero di partizioni consiste nel dividere la velocità effettiva massima prevista per 1 MB/s. Ad esempio, se il caso d'uso richiede 20 MB/s, è consigliabile scegliere almeno 20 partizioni per ottenere la velocità effettiva ottimale.
Tuttavia, se si dispone di un modello in cui l'applicazione ha un'affinità con una determinata partizione, l'aumento del numero di partizioni non è vantaggioso. Per altre informazioni, vedere Disponibilità e coerenza.
Mapping di eventi a partizioni
È possibile usare una chiave di partizione per mappare i dati dell'evento in ingresso in partizioni specifiche ai fini dell'organizzazione dei dati. La chiave di partizione è un valore fornito dal mittente che viene passato a un hub eventi. Viene elaborato tramite una funzione hash statica, che crea l'assegnazione di partizione. Se non si specifica una chiave di partizione quando si pubblica un evento, viene usata un'assegnazione round robin.
L'autore di eventi è a conoscenza solo della chiave di partizione, non la partizione in cui gli eventi vengono pubblicati. Questa separazione tra chiave e partizione evita che il mittente debba conoscere troppe informazioni sull'elaborazione downstream. Un’identità univoca per dispositivo o utente crea una chiave di partizione efficace, ma è possibile utilizzare anche altri attributi, ad esempio l’area geografica, per raggruppare gli eventi correlati in un'unica partizione.
La specifica di una chiave di partizione consente di mantenere insieme gli eventi correlati nella stessa partizione e nell'ordine esatto in cui sono arrivati. La chiave di partizione è una stringa derivata dal contesto dell'applicazione che identifica l'interrelazione degli eventi. Una sequenza di eventi identificata da una chiave di partizione è un flusso. Una partizione è un archivio di log multiplex per molti flussi di questo tipo.
Nota
Anche se è possibile inviare eventi direttamente alle partizioni, non è consigliabile, soprattutto quando la disponibilità elevata è importante. Ciò effettua il downgrade della disponibilità di un hub eventi a livello di partizione. Per altre informazioni, vedere Disponibilità e coerenza.
Passaggi successivi
Per ulteriori informazioni su Hub eventi visitare i collegamenti seguenti: