Dostupnost a konzistence ve službě Event Hubs

Tento článek obsahuje informace o dostupnosti a konzistenci podporované Azure Event Hubs.

Dostupnost

Azure Event Hubs rozprostírá riziko katastrofických selhání jednotlivých počítačů nebo dokonce kompletních racků napříč clustery, které pokrývají více domén selhání v rámci datacentra. Implementuje transparentní mechanismy detekce selhání a převzetí služeb při selhání tak, aby služba nadále fungovala v rámci zaručených úrovní služby a obvykle bez znatelných přerušení, když k takovým selháním dojde.

Pokud se obor názvů služby Event Hubs vytvoří v oblasti se zónami dostupnosti, riziko výpadku se dále rozloží mezi tři fyzicky oddělená zařízení a služba má dostatek kapacitních rezerv, aby se okamžitě dokázala vyrovnat s úplnou katastrofální ztrátou celého zařízení. Další informace najdete v tématu Azure Event Hubs – Geografické zotavení po havárii.

Když klientská aplikace odesílá události do centra událostí bez zadání oddílu, události se automaticky distribuují mezi oddíly v centru událostí. Pokud oddíl není z nějakého důvodu dostupný, události se distribuují mezi zbývající oddíly. Toto chování umožňuje maximální dobu nečinnosti. V případech použití, které vyžadují maximální dobu provozu, se tento model upřednostňuje místo odesílání událostí do konkrétního oddílu.

Konzistence

V některých scénářích může být řazení událostí důležité. Můžete například chtít, aby back-endový systém před příkazem pro odstranění zpracovali příkaz aktualizace. V tomto scénáři klientská aplikace odesílá události do konkrétního oddílu, aby bylo pořadí zachováno. Když konzumentská aplikace tyto události z oddílu spotřebuje, načtou se v pořadí.

Při této konfiguraci mějte na paměti, že pokud konkrétní oddíl, do kterého odesíláte, není k dispozici, zobrazí se chybová odpověď. Pro srovnání, pokud nemáte spřažení s jedním oddílem, služba Event Hubs odešle vaši událost do dalšího dostupného oddílu.

Proto pokud je nejdůležitější vysoká dostupnost, necílujte na konkrétní oddíl (pomocí ID nebo klíče oddílu). Použití ID nebo klíče oddílu downgraduje dostupnost centra událostí na úrovni oddílu. V tomto scénáři provádíte explicitní volbu mezi dostupností (bez ID nebo klíče oddílu) a konzistencí (připnutí událostí na konkrétní oddíl). Podrobné informace o oddílech ve službě Event Hubs najdete v tématu Oddíly.

Přílohy

Odesílání událostí bez zadání oddílu

Doporučujeme odesílat události do centra událostí bez nastavení informací o oddílu, aby služba Event Hubs mohla vyrovnávat zatížení napříč oddíly. V následujících rychlých startech se dozvíte, jak to udělat v různých programovacích jazycích.

Odesílání událostí do konkrétního oddílu

V této části se dozvíte, jak odesílat události do konkrétního oddílu pomocí různých programovacích jazyků.

Pokud chcete odesílat události do konkrétního oddílu, vytvořte dávku pomocí metody EventHubProducerClient.CreateBatchAsync zadáním metody PartitionId nebo PartitionKey v CreateBatchOptions. Následující kód odešle dávku událostí do konkrétního oddílu zadáním klíče oddílu. Event Hubs zajišťuje, aby všechny události sdílející hodnotu klíče oddílu byly uloženy společně a doručovány v pořadí podle jejich doručení.

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

Můžete také použít metodu EventHubProducerClient.SendAsync zadáním PartitionId nebo PartitionKey v SendEventOptions.

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

Další kroky

Další informace o službě Event Hubs najdete na následujících odkazech: