Š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í příchozího přenosu dat a Služba Event Hubs vyvolá výjimku ServerBusyException. Výchozí přenos dat nevytváří výjimky omezování, ale je stále omezený na kapacitu 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í oborů názvů na webu Azure Portal. Jednotky propustnosti můžete také spravovat programově pomocí rozhraní API služby Event Hubs.
Jednotky propustnosti se předem využívají a účtují se za hodinu. Zakoupené jednotky propustnosti se účtují minimálně za jednu hodinu. Pro obor názvů služby Event Hubs můžete zakoupit až 40 jednotek propustnosti, které se sdílejí napříč všemi centry událostí v tomto oboru názvů.
Funkce automatického nafouknutí služby Event Hubs automaticky vertikálně navýší kapacitu zvýšením počtu jednotek propustnosti, aby vyhovovala potřebám využití. Zvýšení počtu jednotek propustnosti brání scénářům omezování, ve kterých:
- 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 propustnost, když se zatížení zvýší nad minimální prahovou hodnotu, aniž by selhávající požadavky s chybami ServerBusy.
Další informace o funkci automatického rozšíření 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ů služby Event Hubs Premium s jednou pu a jedním centrem událostí (100 oddílů) může přibližně nabídnout základní kapacitu přibližně 5 až 10 MB/s příchozího přenosu dat a 10–20 MB/s pro úlohy AMQP nebo Kafka.
Další informace o konfiguraci jednotek PU 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 posloupnosti událostí odesílaných do centra událostí do jednoho nebo více oddílů. Při příchodu novějších událostí se na konec této sekvence přidají.
Oddíl si můžete představit jako protokol potvrzení. Oddíly uchovávají data událostí, která obsahují následující informace:
- Text události
- Kontejner vlastností definovaný uživatelem popisující událost
- Metadata, jako je jeho posun v oddílu, její číslo v posloupnosti datových proudů
- Časové razítko na straně služby, ve kterém bylo přijato
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. Dělení umožňuje použít více paralelních protokolů pro stejné centrum událostí a tím vynásobit dostupnou kapacitu propustnosti nezpracovaného vstupu a výstupu vstupně-výstupních operací.
- 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žaduje značnou kapacitu paralelního zpracování se škálováním na více instancí. 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 při zatížení vaší aplikace ve špičce pro konkrétní centrum událostí. U vrstev jiných než úrovně Premium a dedicated 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 po dokončení mapování klíčů oddílů na změny oddílů změní, takže je vhodné se těmto změnám vyhnout, pokud je v aplikaci důležité relativní pořadí událostí.
Nastavení počtuoddílůch Pokud potřebujete absolutní zachování pořadí napříč všemi událostmi nebo pouze několika podstreamy, možná nebudete moct využívat mnoho oddílů. Mnoho oddílů také zkompiluje zpracování na straně 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í (RU) pro úroveň Premium a jednotek kapacity (CU) pro vyhrazenou úroveň) pro obor názvů nebo vyhrazený cluster. Například centrum událostí úrovně Standard s 32 oddíly nebo s jedním oddílem se účtují stejné náklady, pokud je obor názvů nastavený na jednu kapacitu TU. Můžete také škálovat jednotky TU nebo PU ve vašem oboru názvů nebo jednotek CU vyhrazeného clusteru nezávisle na počtu oddílů.
Vzhledem k tomu , že oddíl je mechanismus organizace dat, který umožňuje paralelně publikovat a využívat data. 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 ale máte model, ve kterém má vaše aplikace spřažení 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 mapování příchozích dat událostí do konkrétních oddílů pro účely organizace dat. Klíč oddílu je hodnota zadaná odesílatelem, která byla předaná do centra událostí. 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 přiřazení metodou kruhového dotazování.
Zdroj události zná jenom svůj klíč oddílu, a ne oddíl, do kterého se události publikují. Díky tomuto oddělení klíče a oddílu odesílatel toho nepotřebuje vědět o zpracování příjmu dat příliš mnoho. 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.
Zadání klíče oddílu umožňuje udržovat související události ve stejném oddílu a v přesném pořadí, ve kterém dorazily. Klíč oddílu je řetězec odvozený z kontextu aplikace a identifikuje vzájemné vztahy 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 je, zejména pokud je pro vás důležitá vysoká dostupnost. Downgraduje dostupnost centra událostí na úrovni oddílů. Další informace najdete v tématu Dostupnost a konzistence.
Další kroky
Další informace o službě Event Hubs najdete na následujících odkazech: