Sdílet prostřednictvím


Škálování pomocí služby Event Hubs

Škálování pomocí služby Event Hubs ovlivňují dva faktory.

  • Jednotky propustnosti (úroveň Standard) nebo jednotky zpracování (úroveň Premium)
  • Oddíly

Jednotky propustnosti

Kapacita propustnosti center událostí se řídí jednotkami propustnosti. Jednotky propustnosti jsou předem připravené jednotky kapacity. Jedna jednotka propustnosti umožňuje:

  • Příchozí přenos dat: Až 1 MB za sekundu nebo 1 000 událostí za sekundu (podle toho, co nastane dříve).
  • Výchozí přenos dat: Až 2 MB za sekundu nebo 4 096 událostí za sekundu.

Nad rámec kapacity zakoupených jednotek propustnosti dochází k omezení rychlosti vstupu a Event Hubs vyvolá výjimku EventHubsException (s hodnotou důvodu ServiceBusy). Odchozí přenos nevytváří výjimky z omezení výkonu, ale i tak je omezen kapacitou zakoupených jednotek propustnosti. Pokud se vám objevují výjimky související s frekvencí publikování nebo v budoucnu očekáváte větší objem odchozích dat, zkontrolujte, kolik jednotek propustnosti jste pro konkrétní obor názvů zakoupili. Jednotky propustnosti můžete spravovat na stránce škálování prostředí názvů v Azure portálu. Jednotky propustnosti můžete také spravovat programově pomocí rozhraní API služby Event Hubs.

Jednotky propustnosti jsou předem zakoupené a účtují se za hodinu. Zakoupené jednotky propustnosti se účtují minimálně za jednu hodinu. Pro jmenný prostor služby Event Hubs můžete zakoupit až 40 jednotek propustnosti, které se sdílejí napříč všemi událostními centry v tomto jmenném prostoru. Celková příchozí a výchozí kapacita těchto jednotek propustnosti se také sdílí mezi všemi oddíly a příjemci v rámci každého centra událostí, což znamená, že dostupnou šířku pásma musí sdílet více příjemců, kteří čtou ze stejného oddílu.

Funkce automatického škálování služby Event Hubs automaticky škáluje kapacitu zvýšením počtu průtokových jednotek, aby splnila potřeby využití. Zvýšením počtu jednotek propustnosti se zabrání vzniku scénářů omezování, kdy:

  • Míra příchozího přenosu dat překračuje nastavené jednotky propustnosti.
  • Četnost požadavků výchozího přenosu dat překračuje nastavené jednotky propustnosti.

Služba Event Hubs zvyšuje kapacitu propustnosti, když se zatížení zvýší nad minimální prahovou hodnotu, aniž by došlo k selhávání požadavků s chybami typu ServerBusy.

Další informace o funkci automatického rozšíření propustnosti najdete v tématu Automatické škálování jednotek propustnosti.

Jednotky zpracování

Event Hubs Premium poskytuje vynikající výkon a lepší izolaci v rámci spravovaného víceklientských prostředí PaaS. Prostředky na úrovni Premium jsou izolované na úrovni procesoru a paměti, aby každá úloha tenanta běžela izolovaně. Tento kontejner prostředků se nazývá jednotka zpracování (PU). Pro každý obor názvů Event Hubs Premium si můžete koupit 1, 2, 4, 6, 8, 10, 12 nebo 16 jednotek zpracování.

Kolik můžete ingestovat a streamovat pomocí jednotky zpracování, závisí na různých faktorech, jako jsou producenti, spotřebitelé, rychlost ingestování a zpracování a mnoho dalšího.

Například obor názvů Event Hubs Premium s jednou PU a jedním uzlem událostí (100 oddílů) může nabídnout základní kapacitu přibližně 5–10 MB/s pro příchozí přenos a 10–20 MB/s pro odchozí přenos dat pro úlohy AMQP nebo Kafka.

Další informace o konfiguraci jednotek zpracování pro obor názvů úrovně Premium najdete v tématu Konfigurace jednotek zpracování.

Poznámka:

Další informace o kvótách a limitech najdete v tématu Azure Event Hubs – kvóty a limity.

Oddíly

Event Hubs organizuje sekvence událostí odesílaných do Event Hubu do jednoho nebo více oddílů. Když dorazí novější události, přidají se na konec této sekvence.

Obrázek znázorňující centrum událostí s několika oddíly

Oddíl lze považovat za protokol potvrzení. Oddíly uchovávají data událostí, která obsahují následující informace:

  • Text události
  • Balík vlastností definovaný uživatelem popisující událost
  • Metadata, jako je jeho posun v oddílu, jeho číslo v posloupnosti datových proudů
  • Časové razítko na straně služby, kdy bylo přijato

Diagram zobrazující starší a novější posloupnost událostí

Výhody používání oddílů

Služba Event Hubs je navržená tak, aby pomohla se zpracováním velkých objemů událostí a dělení pomáhá s tím dvěma způsoby:

  • I když je Služba Event Hubs službou PaaS, je pod ní fyzická realita. Udržování protokolu, který zachovává pořadí událostí, vyžaduje, aby se tyto události uchovávaly společně v podkladovém úložišti a jeho replikách a výsledkem je strop propustnosti pro takový protokol. Rozdělení na části umožňuje použít více paralelních záznamů pro stejné událostní centrum a tím násobení dostupné propustnosti nezpracovaného vstupně-výstupního výkonu.
  • Vaše vlastní aplikace musí být schopné udržovat krok se zpracováním objemu událostí, které se odesílají do centra událostí. Může to být složité a vyžadovat značnou, rozšířenou kapacitu pro paralelní zpracování. Kapacita jednoho procesu pro zpracování událostí je omezená, takže potřebujete několik procesů. Oddíly představují způsob, jakým vaše řešení zpracovává tyto procesy a přesto zajišťuje, že každá událost má jasného vlastníka zpracování.

Počet oddílů

Počet oddílů se zadává při vytváření centra událostí. Musí být mezi jedním a maximálním povoleným počtem oddílů pro každou cenovou úroveň. Limit počtu oddílů pro každou úroveň najdete v tomto článku.

Doporučujeme zvolit alespoň tolik oddílů, kolik očekáváte, že bude vyžadováno při zatížení vaší aplikace ve špičce pro konkrétní centrum událostí. U úrovní jiných než Premium a vyhrazených nemůžete po vytvoření centra událostí změnit počet oddílů. U centra událostí v úrovni Premium nebo dedicated můžete po vytvoření zvýšit počet oddílů, ale nemůžete je snížit. Distribuce datových proudů mezi oddíly se změní, jakmile se změní mapování klíčů oddílů na oddíly, takže byste se měli co nejvíce snažit takovým změnám vyhnout, pokud je ve vaší aplikaci důležité relativní pořadí událostí.

Nastavení počtu oddílů na maximální povolenou hodnotu může být lákavé, ale vždy mějte na paměti, že vaše datové toky musí být strukturovány tak, abyste skutečně mohli využít výhody rozdělení na více oddílů. Pokud potřebujete absolutní zachování pořadí napříč všemi událostmi nebo pouze několika podproudy, nebudete moci využívat mnoho particích. Taktéž mnoho oddílů zkomplikovává zpracování.

Nezáleží na tom, kolik oddílů je v centru událostí, pokud jde o ceny. Závisí na počtu cenových jednotek (jednotek propustnosti (TU) pro úroveň Standard, jednotek zpracování (PU) pro úroveň Premium a jednotek kapacity (CU) pro vyhrazenou úroveň) pro obor názvů nebo vyhrazený cluster. Například hub událostí standardní úrovně se 32 oddíly nebo s jedním oddílem stojí stejně, je-li obor názvů nastaven na kapacitu jednoho TU. Můžete také škálovat jednotky TU nebo PU ve vašem oboru názvů nebo jednotky CU ve vyhrazeném clusteru, a to nezávisle na počtu oddílů.

Oddíl je mechanismus organizace dat, který umožňuje paralelní publikování a konzumaci. I když podporuje paralelní zpracování a škálování, celková kapacita zůstává omezená přidělením kapacity pro škálování v rámci oboru názvů. Doporučujeme vyvážit jednotky škálování (jednotky propustnosti pro úroveň Standard, jednotky zpracování pro úroveň Premium nebo jednotky kapacity pro vyhrazenou úroveň) a oddíly, abyste dosáhli optimálního škálování. Obecně doporučujeme maximální propustnost 1 MB/s na oddíl. Pravidlo pro výpočet počtu oddílů by proto mělo dělit maximální očekávanou propustnost o 1 MB/s. Pokud například váš případ použití vyžaduje 20 MB/s, doporučujeme zvolit alespoň 20 oddílů, abyste dosáhli optimální propustnosti.

Pokud máte model, ve kterém má aplikace vazbu k určitému oddílu, zvýšení počtu oddílů není výhodné. Další informace najdete v tématu Dostupnost a konzistence.

Mapování událostí na oddíly

Klíč oddílu můžete použít k přiřazování příchozích dat událostí do specifických oddílů pro účely organizace dat. Klíč oddílu je hodnota, která je vložena odesílatelem do událostního centra. Zpracovává se prostřednictvím statické funkce hash, která vytvoří přiřazení oddílu. Pokud při publikování události nezadáte klíč oddílu, použije se střídavé přidělování.

Vydavatel událostí zná jen svůj klíč partice, nikoli partici, do které se události publikují. Díky tomuto oddělení klíče a oddílu odesílatel nepotřebuje znát příliš mnoho o následném zpracování. Vhodným klíčem oddílu je jedinečná identita uživatele nebo zařízení, ale k seskupení souvisejících událostí do jednoho oddílu je možné použít i další atributy, například geografickou polohu.

Specifikace klíče oddělení umožňuje udržovat související události ve stejném oddělení a v přesném pořadí, ve kterém dorazily. Klíč oddílu je nějaký řetězec odvozený z kontextu vaší aplikace a určuje vzájemný vztah událostí. Posloupnost událostí identifikovaných klíčem oddílu je datový proud. Oddíl je multiplexované úložiště protokolů pro mnoho takových datových proudů.

Poznámka:

I když můžete odesílat události přímo do oddílů, nedoporučujeme to, zejména pokud je pro vás důležitá vysoká dostupnost. Snižuje dostupnost centra událostí na úroveň oddílů. Další informace najdete v tématu Dostupnost a konzistence.

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