Availability and consistency in Event Hubs (Dostępność i spójność w usłudze Event Hubs)

Ten artykuł zawiera informacje o dostępności i spójności obsługiwanej przez Azure Event Hubs.

Dostępność

Azure Event Hubs rozprzestrzenia ryzyko katastrofatycznych awarii poszczególnych maszyn, a nawet kompletnych stojaków w klastrach obejmujących wiele domen awarii w centrum danych. Implementuje ona przejrzyste mechanizmy wykrywania awarii i trybu failover, takie jak to, że usługa będzie nadal działać w ramach zapewnianych poziomów usług i zazwyczaj bez zauważalnych przerw w działaniu takich awarii.

Jeśli przestrzeń nazw usługi Event Hubs zostanie utworzona w regionie ze strefami dostępności, ryzyko awarii jest dodatkowo rozłożone na trzy fizycznie oddzielone obiekty, a usługa ma wystarczającą ilość rezerw pojemności, aby natychmiast poradzić sobie z całkowitą, katastrofalną utratą całego obiektu. Aby uzyskać więcej informacji, zobacz Azure Event Hubs — odzyskiwanie po awarii geograficznej.

Gdy aplikacja kliencka wysyła zdarzenia do centrum zdarzeń bez określania partycji, zdarzenia są automatycznie dystrybuowane między partycjami w centrum zdarzeń. Jeśli partycja nie jest dostępna z jakiegoś powodu, zdarzenia są dystrybuowane między pozostałe partycje. To zachowanie pozwala na największą ilość czasu. W przypadku przypadków użycia, które wymagają maksymalnego czasu pracy, ten model jest preferowany zamiast wysyłania zdarzeń do określonej partycji.

Spójność

W niektórych scenariuszach kolejność zdarzeń może być ważna. Na przykład możesz chcieć, aby system zaplecza przetwarzał polecenie aktualizacji przed poleceniem usuwania. W tym scenariuszu aplikacja kliencka wysyła zdarzenia do określonej partycji, aby kolejność została zachowana. Gdy aplikacja odbiorcy korzysta z tych zdarzeń z partycji, są one odczytywane w kolejności.

W przypadku tej konfiguracji należy pamiętać, że jeśli określona partycja, do której wysyłasz, jest niedostępna, otrzymasz odpowiedź o błędzie. Jeśli nie masz koligacji z jedną partycją, usługa Event Hubs wysyła zdarzenie do następnej dostępnej partycji.

W związku z tym, jeśli wysoka dostępność jest najważniejsza, nie należy kierować określonej partycji (przy użyciu identyfikatora/klucza partycji). Użycie identyfikatora partycji/klucza obniża dostępność centrum zdarzeń na poziomie partycji. W tym scenariuszu dokonujesz jawnego wyboru między dostępnością (bez identyfikatora partycji/klucza) a spójnością (przypinanie zdarzeń do określonej partycji). Aby uzyskać szczegółowe informacje o partycjach w usłudze Event Hubs, zobacz Partitions (Partycje).

Dodatek

Wysyłanie zdarzeń bez określania partycji

Zalecamy wysyłanie zdarzeń do centrum zdarzeń bez ustawiania informacji o partycji, aby umożliwić usłudze Event Hubs równoważenie obciążenia między partycjami. Zapoznaj się z poniższymi przewodnikami Szybki start, aby dowiedzieć się, jak to zrobić w różnych językach programowania.

Wysyłanie zdarzeń do określonej partycji

W tej sekcji dowiesz się, jak wysyłać zdarzenia do określonej partycji przy użyciu różnych języków programowania.

Aby wysyłać zdarzenia do określonej partycji, utwórz partię przy użyciu metody EventHubProducerClient.CreateBatchAsync , określając PartitionId metodę lub PartitionKey w obszarze CreateBatchOptions. Poniższy kod wysyła partię zdarzeń do określonej partycji, określając klucz partycji. Usługa Event Hubs zapewnia, że wszystkie zdarzenia współużytkujące wartość klucza partycji są przechowywane razem i dostarczane w kolejności przybycia.

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

Możesz również użyć metody EventHubProducerClient.SendAsync, określając wartość PartitionId lub PartitionKey w elemecie SendEventOptions.

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

Następne kroki

Następujące linki pozwalają dowiedzieć się więcej na temat usługi Event Hubs: