Disponibilità e coerenza nell'Hub eventi
Questo articolo fornisce informazioni sulla disponibilità e la coerenza supportate da Hub eventi di Azure.
Disponibilità
Hub eventi di Azure distribuisce il rischio di errori irreversibili di singoli computer o persino di rack completi tra cluster che si estendono su più domini di errore all'interno di un data center. Implementa meccanismi di rilevamento e failover trasparenti degli errori in modo che il servizio continui a funzionare entro i livelli di servizio garantiti e in genere senza interruzioni evidenti quando si verificano tali errori.
Se uno spazio dei nomi di Hub eventi viene creato in un'area con zone di disponibilità, il rischio di interruzione viene ulteriormente distribuito in tre strutture separate fisicamente e il servizio ha riserve di capacità sufficienti per far fronte immediatamente alla perdita completa e irreversibile dell'intera struttura. Per maggiori informazioni, consultare la sezione Hub eventi di Azure - Ripristino di emergenza geografico.
Quando un'applicazione client invia eventi a un hub eventi senza specificare una partizione, gli eventi vengono distribuiti automaticamente tra le partizioni nell'hub eventi. Se una partizione non è disponibile per qualche motivo, gli eventi vengono distribuiti tra le partizioni rimanenti. Questo comportamento consente la maggiore quantità di tempo di attività. Per i casi d'uso che richiedono il tempo massimo di attività, questo modello è preferibile anziché inviare eventi a una partizione specifica.
Coerenza
In alcuni scenari, l'ordinamento degli eventi può essere importante. È ad esempio, potrebbe essere necessario che il sistema back-end elabori un comando di aggiornamento prima di un comando di eliminazione. In questo scenario, un'applicazione client invia eventi a una partizione specifica in modo che l'ordinamento venga mantenuto. Quando un'applicazione consumer utilizza questi eventi dalla partizione, vengono letti in ordine.
Con questa configurazione, tenere presente che se la partizione specifica alla quale si esegue l'invio non è disponibile, si riceverà una risposta di errore. Come punto di confronto, se non si ha un'affinità con una singola partizione, il servizio Hub eventi invia l'evento alla partizione disponibile successiva.
Pertanto, se la disponibilità elevata è più importante, non specificare una partizione specifica (usando ID/chiave di partizione). L'uso di ID partizione/chiave effettua il downgrade della disponibilità di un hub eventi a livello di partizione. In questo scenario si sta effettuando una scelta esplicita tra disponibilità (senza ID di partizione/chiave) e coerenza (aggiunta di eventi a una partizione specifica). Per informazioni dettagliate sulle partizioni in Hub eventi, vedere Partizioni.
Appendice
Inviare eventi senza specificare una partizione
È consigliabile inviare eventi a un hub eventi senza impostare le informazioni sulla partizione per consentire al servizio Hub eventi di bilanciare il carico tra le partizioni. Vedere le guide introduttive seguenti per informazioni su come eseguire questa operazione in linguaggi di programmazione diversi.
- Inviare eventi con .NET
- Inviare eventi con Java
- Inviare eventi con JavaScript
- Inviare eventi con Python
Inviare eventi a una partizione specifica
In questa sezione viene illustrato come inviare eventi a una partizione specifica usando linguaggi di programmazione diversi.
Per inviare eventi a una partizione specifica, creare il batch usando il metodo EventHubProducerClient.CreateBatchAsync specificando o PartitionId
PartitionKey
in CreateBatchOptions. Il codice seguente invia un batch di eventi a una partizione specifica specificando una chiave di partizione. Hub eventi garantisce che tutti gli eventi che condividono un valore di chiave di partizione vengano archiviati insieme e recapitati in ordine di arrivo.
var batchOptions = new CreateBatchOptions { PartitionKey = "cities" };
using var eventBatch = await producer.CreateBatchAsync(batchOptions);
È anche possibile usare il metodo EventHubProducerClient.SendAsync specificando PartitionId o PartitionKey in SendEventOptions.
var sendEventOptions = new SendEventOptions { PartitionKey = "cities" };
// create the events array
producer.SendAsync(events, sendEventOptions)
Passaggi successivi
Per ulteriori informazioni su Hub eventi visitare i collegamenti seguenti: