Dela via


Tillgänglighet och konsekvens i Event Hubs

Den här artikeln innehåller information om tillgänglighet och konsekvens som stöds av Azure Event Hubs.

Tillgänglighet

Azure Event Hubs sprider risken för oåterkalleliga fel på enskilda datorer eller till och med fullständiga rack över kluster som sträcker sig över flera feldomäner i ett datacenter. Den implementerar transparenta mekanismer för felidentifiering och redundans så att tjänsten fortsätter att fungera inom de garanterade servicenivåerna och vanligtvis utan märkbara avbrott när sådana fel inträffar.

Om ett Event Hubs-namnområde skapas i en region med tillgänglighetszoner sprids avbrottsrisken ytterligare över tre fysiskt avgränsade anläggningar och tjänsten har tillräckligt med kapacitetsreserver för att omedelbart klara den fullständiga, katastrofala förlusten av hela anläggningen. Mer information finns i Azure Event Hubs – Geo-haveriberedskap.

När ett klientprogram skickar händelser till en händelsehubb utan att ange en partition, distribueras händelser automatiskt mellan partitioner i händelsehubben. Om en partition inte är tillgänglig av någon anledning distribueras händelser mellan de återstående partitionerna. Det här beteendet ger störst upptid. För användningsfall som kräver maximal drifttid föredras den här modellen i stället för att skicka händelser till en specifik partition.

Konsekvens

I vissa scenarier kan ordningen på händelser vara viktig. Du kanske till exempel vill att serverdelssystemet ska bearbeta ett uppdateringskommando före ett borttagningskommando. I det här scenariot skickar ett klientprogram händelser till en specifik partition så att ordningen bevaras. När ett konsumentprogram använder dessa händelser från partitionen läss de i ordning.

Med den här konfigurationen bör du tänka på att om den partition som du skickar till inte är tillgänglig får du ett felmeddelande. Om du inte har någon tillhörighet till en enda partition skickar Event Hubs-tjänsten händelsen till nästa tillgängliga partition.

Om hög tillgänglighet är viktigast ska du därför inte rikta in dig på en specifik partition (med partitions-ID/nyckel). Om du använder partitions-ID/nyckel nedgraderas tillgängligheten för en händelsehubb till partitionsnivå. I det här scenariot gör du ett explicit val mellan tillgänglighet (inget partitions-ID/nyckel) och konsekvens (fästa händelser på en specifik partition). Detaljerad information om partitioner i Event Hubs finns i Partitioner.

Bilaga

Skicka händelser utan att ange en partition

Vi rekommenderar att du skickar händelser till en händelsehubb utan att ange partitionsinformation så att Event Hubs-tjänsten kan balansera belastningen mellan partitioner. Se följande snabbstarter för att lära dig hur du gör det på olika programmeringsspråk.

Skicka händelser till en specifik partition

I det här avsnittet får du lära dig hur du skickar händelser till en specifik partition med olika programmeringsspråk.

Om du vill skicka händelser till en specifik partition skapar du batchen med metoden EventHubProducerClient.CreateBatchAsync genom att ange antingen PartitionId eller PartitionKey i CreateBatchOptions. Följande kod skickar en batch med händelser till en specifik partition genom att ange en partitionsnyckel. Event Hubs säkerställer att alla händelser som delar ett partitionsnyckelvärde lagras tillsammans och levereras i ankomstordning.

var batchOptions = new CreateBatchOptions { PartitionKey = "cities" };
using var eventBatch = await producer.CreateBatchAsync(batchOptions);

Du kan också använda metoden EventHubProducerClient.SendAsync genom att ange antingen PartitionId eller PartitionKey i SendEventOptions.

var sendEventOptions  = new SendEventOptions { PartitionKey = "cities" };
// create the events array
producer.SendAsync(events, sendOptions)

Nästa steg

Du kan lära dig mer om Event Hubs genom att gå till följande länkar: