Sdílet prostřednictvím


Dostupnost a konzistence ve službě Event Hubs

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

Dostupnost

Azure Event Hubs rozšiřuje riziko katastrofických selhání jednotlivých počítačů nebo dokonce dokončuje racky napříč clustery, které zahrnují 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žeb a obvykle bez znatelných přerušení, pokud k takovým selháním dojde.

Pokud se v oblasti s zónami dostupnosti vytvoří obor názvů služby Event Hubs, riziko výpadku se dále rozšíří mezi tři fyzicky oddělená zařízení a služba má dostatek rezerv kapacity, aby se okamžitě dokázala vyrovnat s kompletní katastrofickou 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 určení oddílu, události se automaticky distribuují mezi oddíly ve vašem 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 největší množství času. Pro případy použití, které vyžadují maximální dobu provozu, je tento model upřednostňovaný 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 zpracovával příkaz aktualizace před příkazem delete. V tomto scénáři klientská aplikace odesílá události do konkrétního oddílu, aby se pořadí zachovalo. Když aplikace příjemce tyto události spotřebuje z oddílu, budou čteny 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ěď. 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 vysoká dostupnost nejdůležitější, nezaměřujte se na konkrétní oddíl (pomocí ID nebo klíče oddílu). Použití ID oddílu nebo klíče downgraduje dostupnost centra událostí na úrovni oddílu. V tomto scénáři vytváříte explicitní volbu mezi dostupností (bez ID nebo klíče oddílu) a konzistencí (připnutí událostí ke konkrétnímu oddílu). Podrobné informace o oddílech ve službě Event Hubs najdete v tématu Oddíly.

Dodatek

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ílech, aby služba Event Hubs mohla vyrovnávat zatížení napříč oddíly. V následujícím rychlém startu 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 CreateBatchOptions nebo PartitionKey v části 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. Služba 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í doručení.

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

Metodu EventHubProducerClient.SendAsync můžete také použít 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: