Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Event Hubs skálázását két tényező befolyásolja.
- Átviteli egységek (standard szint) vagy feldolgozási egységek (prémium szintű)
- Partíciók
Átviteli egységek
Az átviteli egységek vezérli az eseményközpontok átviteli kapacitását. Az átviteli egységek előre meghatározott kapacitásegységek. Egyetlen átviteli egység a következő képességeket biztosítja:
- Bejövő forgalom: Másodpercenként legfeljebb 1 MB vagy másodpercenként 1000 esemény (attól függően, hogy melyik az első).
- Kimenő forgalom: Másodpercenként legfeljebb 2 MB vagy másodpercenként 4096 esemény.
Ha túllépi a megvásárolt átviteli egységek kapacitását, a rendszer szabályozza a bejövő forgalmat, és az Event Hubs egy EventHubsExceptionet a ServiceBusy okértékével dob. A kimenő forgalom nem eredményez szabályozási kivételeket, de továbbra sem lépheti túl a megvásárolt átviteli egységek kapacitását. Ha közzétételi arány kivételt tapasztal, vagy magasabb kimenő forgalomra számít, ellenőrizze, hogy hány átviteli egységet vásárolt a névtérhez. Az átviteli egységeket az Azure Portal névtereinek Méretezés lapján kezelheti. Az event hubs API-k használatával programozott módon is kezelheti az átviteli egységeket.
Előre meg kell vásárolnia az átviteli egységeket, és óránként fizetnie kell érte. Miután megvásárolta az átviteli egységeket, legalább egy órát kell fizetnie. Egy Event Hubs-névtérhez legfeljebb 40 átviteliegységet vásárolhat, és a névtérben lévő összes eseményközpont osztozik ezen átviteli egységeken. Az egyes eseményközpontok összes partíciója és felhasználója osztozik ezen átviteli egységek teljes bejövő és kimenő kapacitásán, így az ugyanabból a partícióból olvasó több felhasználó is osztozik a rendelkezésre álló sávszélességen.
Az Event Hubs automatikus feltöltési funkciója automatikusan felskálázódik a használati igényeknek megfelelő átviteli egységek számának növelésével. Az átviteli egységek számának növelése megakadályozza a korlátozási helyzeteket, amelyekben:
- Az adatforgalom sebessége meghaladja a beállított átviteli egységeket.
- Az adatforgalmi kérelmek aránya meghaladja a beállított átviteli kapacitást.
Az Event Hubs szolgáltatás növeli az átviteli sebességet, ha a terhelés meghaladja a minimális küszöbértéket, anélkül, hogy a kérések a ServerBusy-hibákkal meghiúsulnak.
További információkért az automatikus skálázás funkcióról lásd Átviteli egységek automatikus skálázása.
Feldolgozási egységek
Az Event Hubs Premium kiváló teljesítményt és jobb elkülönítést biztosít egy felügyelt több-bérlős PaaS-környezetben. A prémium szintű erőforrások a PROCESSZOR és a memória szintjén vannak elkülönítve, így minden bérlői számítási feladat külön fut. Ezt az erőforrástárolót feldolgozási egységnek (PU) nevezzük. Minden Event Hubs Premium-névtérhez vásárolhat 1, 2, 4, 6, 8, 10, 12 vagy 16 feldolgozási egységet.
Az, hogy mennyit lehet feldolgozni és streamelni egy feldolgozóegységtel, különböző tényezőktől függ, például az előállítóktól, a fogyasztóktól, a betöltési és feldolgozási sebességtől és még sok mástól.
Az Event Hubs Premium-névtér például egy PU-val és egy eseményközponttal (100 partícióval) körülbelül ~5-10 MB/s bejövő és 10-20 MB/s kimenő magkapacitást kínálhat az AMQP- vagy Kafka-számítási feladatokhoz.
A PU-k prémium szintű névtérhez való konfigurálásáról további információt a feldolgozási egységek konfigurálása című témakörben talál.
Feljegyzés
A kvótákkal és korlátozásokkal kapcsolatos további információkért lásd: Azure Event Hubs – kvóták és korlátok.
Partíciók
Az Event Hubs egy vagy több partícióba rendezi az eseményközpontnak küldött eseménysorozatokat. Az újabb események érkezésekor a rendszer hozzáadja őket a sorozat végéhez.
A partíciók véglegesítési naplóként is felfoghatók. A partíciók az alábbi információkat tartalmazó eseményadatokat tartalmazzák:
- Az esemény törzse
- Az eseményt leíró felhasználó által definiált tulajdonságcsomag
- Metaadatok, például annak eltolása a partíción belül, és annak száma a sorozatfolyamban
- Szolgáltatás oldali időbélyeg, amelyen történt az elfogadás
A partíciók használatának előnyei
Az Event Hubs úgy lett kialakítva, hogy segítsen a nagy mennyiségű esemény feldolgozásában, és a particionálás kétféleképpen segít:
- Annak ellenére, hogy az Event Hubs egy PaaS-szolgáltatás, egy fizikai valóság van alatta. Az események sorrendjét megőrző naplók fenntartásához az alapul szolgáló tárolóban és a replikákban kell tartani ezeket az eseményeket, és ez egy ilyen napló átviteli sebességének felső határát eredményezi. A particionálás lehetővé teszi, hogy több párhuzamos naplót használjon ugyanarra az eseményközpontra, és így megszorozza a rendelkezésre álló nyers bemeneti-kimeneti (IO-) átviteli kapacitást.
- A saját alkalmazásainak lépést kell tartaniuk az eseményközpontba küldött események mennyiségének feldolgozásával. Összetett lehet, és jelentős, vertikálisan felskálázott, párhuzamos feldolgozási kapacitást igényel. Az események kezelésére egyetlen folyamat kapacitása korlátozott, ezért több folyamatra van szükség. A partíciók a megoldás által táplálják ezeket a folyamatokat, és mégis biztosítják, hogy minden esemény egyértelmű feldolgozási tulajdonossal rendelkezik.
Partíciók száma
A partíciók száma az eseményközpont létrehozásakor van megadva. Az egyes tarifacsomagokhoz engedélyezett partíciók számának egy és a maximális partíciószám közöttinek kell lennie. Az egyes szintek partíciószámkorlátját ebben a cikkben találja.
Javasoljuk, hogy legalább annyi partíciót válasszon, amennyit az adott eseményközpont alkalmazásának maximális terhelése során szükséges.
A prémium és dedikált szinteken kívüli szintek esetében nem módosíthatja az eseményközpontok partíciószámát a létrehozás után. Egy prémium vagy dedikált szinten lévő eseményközpont esetében növelheti a partíciók számát a létrehozása után, de nem csökkentheti őket. A streamek partíciók közötti eloszlása akkor változik, amikor a partíciókulcsok partíciókra való leképezése módosul, ezért érdemes megpróbálni elkerülni az ilyen módosításokat, ha az események relatív sorrendje számít az alkalmazásban.
A partíciók maximális megengedett értékre állítása csábító, de mindig vegye figyelembe, hogy az eseménystreameket úgy kell strukturálni, hogy valóban kihasználhassa a több partíció előnyeit. Ha az összes esemény abszolút sorrendjének megőrzésére vagy csak néhány alstreamre van szüksége, előfordulhat, hogy nem tudja kihasználni a számos partíció előnyeit. Emellett számos partíció teszi összetettebbé a feldolgozási oldalt.
A díjszabás szempontjából nem számít, hogy hány partíció található egy eseményközpontban. Ez a névtér vagy a dedikált fürt tarifacsomag-egységeinek számától függ: ezek a standard szinten az átvitelei egységek (TU-k), a prémium szinten a feldolgozási egységek (PU-k), és a dedikált szinten a kapacitásegységek (CU-k). A standard szint eseményközpontja például 32 partícióval vagy egy partícióval pontosan ugyanazzal a költséggel jár, ha a névtér egy TU-kapacitásra van beállítva. Emellett a névterén vagy a dedikált klaszter számítási egységein függetlenül a partíciószámtól skálázhatja a TU-kat vagy a PU-kat.
A partíció egy adatszervezési mechanizmus, amely lehetővé teszi a párhuzamos közzétételt és felhasználást. Bár támogatja a párhuzamos feldolgozást és skálázást, a teljes kapacitást a névtér skálázási lefoglalása korlátozza. A méretezési egységek (a standard szint átviteli sebességegységei, a prémium szintű feldolgozási egységek vagy a dedikált szint kapacitásegységei) és a partíciók egyensúlya az optimális skálázás érdekében.
Kezdje a számítási feladatprofillal: átlagos hasznos adatméret, másodpercenkénti események és az átviteli sebesség csökkenése vagy a késési csúcsok érzékenysége. Használja az alábbi partíciónkénti átviteli sebességet kiindulási pontként, majd ellenőrizze a terhelési tesztekkel:
- Standard szint: ~1 MB/s bejövő forgalom és partíciónként ~2 MB/s kimenő forgalom.
- Prémium és dedikált szintek: ~1-2 MB/s bejövő forgalom és ~2-5 MB/s kimenő forgalom partíciónként.
Becsülje meg a partíciókat úgy, hogy elosztja a várt bejövő és kimenő forgalmat a megfelelő partíciónkénti sebességekkel, és figyelembe veszi a nagyobb eredményt. Ha a megfigyelt átviteli sebesség vagy késés nem felel meg az elvárásoknak, növelje a partíciókat (csak prémium és dedikált szintek esetén), és tesztelje újra.
A partíciók a fogyasztói párhuzamosság felső határát is beállítják. A plafon működése a fogyasztó típusától függ:
-
Korszak (kizárólagos) fogyasztók – A .NET és Java, valamint a Python és JavaScript által használt minta, amely az éles AMQP munkaterhelésekhez ajánlott. Egyszerre csak egy korszakbeli fogyasztó rendelkezhet egy adott partícióval egy fogyasztói csoportban. Ha több processzorpéldányt helyez üzembe, mint partíciókat, a további példányok nem lesznek hozzárendelve partíciókhoz, és tétlenül ülnek, amíg egy meglévő tulajdonos fel nem ad egyet. Ha egy új korszakbeli fogyasztó magasabb tulajdonosi szinttel csatlakozik, a szolgáltatás hiba miatt leválasztja az aktuális tulajdonost
ConsumerDisconnected, és az új fogyasztó átveszi a kapcsolatot. - Nem korszakos felhasználók – Legfeljebb 5 nem korszakos fogadó tudja egyszerre beolvasni ugyanazt a partíciót egy fogyasztói csoportban. Minden fogadó ugyanazokat az eseményeket látja (szétosztás), így ez a mód nem növeli a partíciónkénti feldolgozási sebességet. Ha egy korszakfelhasználót csatlakoztat egy partícióhoz, az leválasztja a partíción lévő összes nem korszakos felhasználót.
-
Kafka-felhasználók – A Kafka-felhasználók az AMQP-korszakok helyett a csoportkoordinációs protokollt (
group.id) használják, de a partíciótulajdonlási modell egyenértékű: az egyes partíciók egy fogyasztói csoporton belül pontosan egy fogyasztói taghoz vannak rendelve. Amikor egy új tag csatlakozik vagy egy meglévő tag távozik, a csoport újraegyensúlyozza és újraosztja a partíció-hozzárendeléseket. Ha a partícióknál több fogyasztói tag van, a felesleges tagok nem kapnak hozzárendeléseket, és tétlenek maradnak, amíg egy jövőbeli újraegyensúlyozás fel nem szabadít egy partíciót. Az átmeneti leválasztások okozta szükségtelen újraegyensúlyozás csökkentése érdekében állítson be fogyasztói példányonként egy egyedigroup.instance.id-t (statikus tagság).
A gyakorlatban a partíciók száma egyenlő a fogyasztói csoportonkénti párhuzamos fogyasztók maximális számával , függetlenül attól, hogy AMQP-felhasználókat vagy Kafka-fogyasztókat használ. Ezt vegye figyelembe a partíciók számában, amikor horizontális felskálázást tervez.
Ha az alkalmazás affinitást mutat egy adott partícióhoz, a partíciók számának növelése nem előnyös. További információ: rendelkezésre állás és konzisztencia.
Események leképezése partíciókra
A partíciókulccsal a beérkező eseményadatok képezhetők le adott partíciókra az adatok elrendezése céljából. A partíciókulcs az eseményközpontnak átadott, a küldő által megadott érték. A folyamat egy statikus kivonatoló függvényen keresztül történik, amely létrehozza a partíció-hozzárendelést. Ha nem ad meg partíciókulcsot egy esemény közzétételekor, a rendszer körkörös hozzárendelést használ.
Az esemény-közzétevő csak a partíciókulcsot ismeri, azt a partíciót nem, amelyre az esemény közzé lesz téve. A kulcs és a partíció szétválasztása révén a küldőnek nem szükséges behatóan ismernie az alárendelt feldolgozási folyamatokat. Az eszközszintű vagy egyedi felhasználói identitás remek partíciókulcs lehet, de más tulajdonságok, például a földrajzi hely alapján szintén lehetséges az események csoportosítása egyetlen partícióra.
A partíciókulcs megadása lehetővé teszi, hogy a kapcsolódó események ugyanabban a partícióban és a pontos sorrendben legyenek tárolva, amelyben megérkeztek. A partíciókulcs egy olyan sztring, amely az alkalmazáskörnyezetből származik, és azonosítja az események közötti összefüggéseket. A partíciókulcs által azonosított események sorozata egy adatfolyam. Egy partíció multiplexált naplótár egy számos streamhez.
Feljegyzés
Bár közvetlenül a partíciókra küldhet eseményeket, nem javasoljuk, különösen akkor, ha a magas rendelkezésre állás fontos Önnek. Az eseményközpontok rendelkezésre állását partíciószintre szűkíti. További információ: Rendelkezésre állás és konzisztencia.
Kapcsolódó tartalom
Az Event Hubsról az alábbi cikkekben olvashat bővebben: