Az Azure Event Grid-névtér fogalmai
Ez a cikk bemutatja a névtér témaköreihez kapcsolódó fő fogalmakat és funkciókat.
esemény
Az esemény a legkisebb mennyiségű információ, amely teljes mértékben leírja a rendszerben történteket. Gyakran különálló eseménynek nevezünk egy eseményt, mert az egy különálló, önazonos tényt jelent egy olyan rendszerről, amely egy végrehajtható megállapítást nyújt. Minden esemény közös információkkal rendelkezik, például source
az eseményről, time
az eseményről és egy egyedi azonosítóról. Minden esemény rendelkezik egy type
egyedi azonosítóval is, amely leírja, hogy milyen típusú bejelentéshez használják az eseményt.
Például az Azure Storage-ban létrehozott új fájlról szóló esemény a fájlról tartalmaz információkat, például a lastTimeModified
értéket. Egy Event Hubs-esemény a rögzített fájl URL-címével rendelkezik. Előfordulhat, hogy a Rendelések mikroszolgáltatásban egy új megrendeléssel kapcsolatos esemény rendelkezik egy orderId
attribútummal és egy URL-attribútummal a rendelés állapotának ábrázolásához. Néhány további példa az eseménytípusokra: com.yourcompany.Orders.OrderCreated
, org.yourorg.GeneralLedger.AccountChanged
, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached
.
Íme egy mintaesemény:
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
Egy másik típusú esemény
A felhasználói közösség "eseményeknek" is nevezik azokat az üzeneteket, amelyek adatpontot hordoznak, például egyetlen eszköz olvasását vagy egy weblapra való kattintást. Az ilyen típusú eseményeket általában egy időablakban elemzik, hogy megállapításokat nyerjenek és műveletet hajtanak végre. Az Event Grid dokumentációjában ezt az eseményt adatpontként, streamelési adatként vagy egyszerűen telemetriaként hivatkozunk. Más típusú üzenetek mellett ez az eseménytípus az Event Grid Message Queuing Telemetry Transport (MQTT) közvetítő funkciójával is használható.
CloudEvents
Az Event Grid névtértémakörök olyan eseményeket fogadnak el, amelyek megfelelnek a Cloud Native Computing Foundation (CNCF) nyílt standard CloudEvents 1.0 specifikációjának jSON formátumú HTTP protokollkötéssel. A CloudEvent egyfajta üzenet, amely tartalmazza a kommunikációt, más néven eseményadatokat és metaadatokat. Az eseményvezérelt architektúrák eseményadatai általában a rendszerállapot változását bejelentő információkat hordoznak. A CloudEvents metaadatai olyan attribútumokból állnak, amelyek környezeti információkat nyújtanak az üzenetről, például a forrásrendszerről, annak típusáról stb. A CloudEvents specifikációinak megfelelő összes érvényes üzenetnek tartalmaznia kell a következő szükséges környezeti attribútumokat:
A CloudEvents specifikációja opcionális és bővítménykörnyezeti attribútumokat is meghatároz, amelyeket az Event Grid használatakor is felvehet.
Az Event Grid használatakor a CloudEvents az előnyben részesített eseményformátum a jól dokumentált használati esetek (események átvitelének módjai , eseményformátumok stb.), a bővíthetőség és a jobb együttműködés miatt. A CloudEvents az események közzétételének és felhasználásának általános eseményformátumával javítja az együttműködést. Lehetővé teszi az események egységes eszközkezelését és szabványos útválasztási módjait.
CloudEvents-kolostorok sátormód
A CloudEvents specifikációja három con sátormód határoz meg: bináris, strukturált és kötegelt.
Fontos
Bármilyen con sátormód szöveget (JSON, text/*stb.) vagy binárisan kódolt eseményadatokat cserélhet. A bináris con sátormód nem kizárólag bináris adatok küldéséhez használható.
A con sátormód nem a használt kódolásról, bináris vagy szövegről szólnak, hanem az eseményadatok és a metaadatok leírásáról és cseréjéről. A strukturált con sátormód egyetlen struktúrát használ, például egy JSON-objektumot, ahol a környezeti attribútumok és az eseményadatok együtt szerepelnek a HTTP hasznos adataiban. A bináris con sátormód elválasztja a HTTP-fejlécekhez leképezett környezeti attribútumokat és az eseményadatokat, amelyek a HTTP hasznos adatai a megadott médiatípusnak megfelelően vannak kódolvaContent-Type
.
CloudEvents-támogatás
Ez a táblázat a CloudEvents specifikációjának aktuális támogatását mutatja be:
CloudEvents con sátormód | Támogatott? |
---|---|
Strukturált JSON | Igen |
Strukturált JSON kötegelve | Igen, események közzétételéhez |
Bináris | Igen, események közzétételéhez |
Egy esemény maximális mérete 1 MB. A 64 KB-nál nagyobb eseményeket 64 KB-os növekményekben számítjuk fel.
Strukturált con sátormód
A CloudEvents strukturált con sátormód üzenetei a környezeti attribútumokat és az eseményadatokat együtt tartalmazzák egy HTTP hasznos adatban.
Fontos
Az Event Grid jelenleg a CloudEvents JSON formátumot támogatja HTTP-vel.
Íme egy példa a CloudEventsre strukturált módban, JSON formátumban. Mindkét metaadatot (az összes attribútumot, amely nem "adat") és az üzenet-/eseményadatokat (az "adat" objektumot) jSON használatával írják le. Példánk az összes szükséges környezeti attribútumot, valamint néhány választható attribútumot (subject
, time
és ) és datacontenttype
bővítményattribútumot (comexampleextension1
, comexampleothervalue
).
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
A JSON formátum strukturált tartalommal használható olyan eseményadatok küldésére, amelyek nem JSON-értékek. Ehhez hajtsa végre a következő lépéseket:
- Adjon meg egy
datacontenttype
attribútumot azzal a médiatípussal, amelyben az adatok kódolása történik. - Ha a médiatípus olyan szöveges formátumban van kódolva, mint a
text/plain
,text/csv
vagyapplication/xml
, akkor egy JSON-sztringet tartalmazó attribútumot kell használniadata
, amely értékként adja meg a kommunikációt. - Ha a médiatípus bináris kódolást jelöl, olyan attribútumot kell használnia
data_base64
, amelynek értéke egy BA Standard kiadás 64 kódolású bináris értéket tartalmazó JSON-sztring.
Ez a CloudEvent például protobuf-üzenetek cseréjéhez kódolt application/protobuf
eseményadatokat hordoz.
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "/orders/account/123",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"datacontenttype" : "application/protobuf",
"data_base64" : "VGhpcyBpcyBub3QgZW5jb2RlZCBpbiBwcm90b2J1ZmYgYnV0IGZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMsIGltYWdpbmUgdGhhdCBpdCBpcyA6KQ=="
}
Az attribútumok vagy attribútumok használatáról további információt az data
data_base64
Adatok kezelése című témakörben talál.
A con sátormód-ról további információt a CloudEvents HTTP strukturált con sátormód specifikációiban talál.
Kötegelt con sátormód
Az Event Grid jelenleg támogatja a JSON kötegelt con sátormód a CloudEvents Event Gridben való közzétételekor. Ez a con sátormód egy CloudEventstel kitöltött JSON-tömböt használ strukturált kúpban sátormód. Az alkalmazás például két eseményt tehet közzé az alábbihoz hasonló tömb használatával. Hasonlóképpen, ha az Event Grid adatsíkjának SDK-ját használja, a rendszer ezt a hasznos adatot is elküldi:
[
{
"specversion": "1.0",
"id": "E921-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": "some data"
},
{
"specversion": "1.0",
"id": "F555-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
]
További információ: CloudEvents Batched Content Mode specs.
Kötegelés
Az alkalmazásnak több eseményt kell egy tömbbe egyesítenie, hogy nagyobb hatékonyságot és nagyobb átviteli sebességet érjen el egyetlen közzétételi kéréssel. A kötegek legfeljebb 1 MB méretűek lehetnek, és az események maximális mérete 1 MB.
Bináris con sátormód
A CloudEvent bináris con sátormód környezetattribútumait HTTP-fejlécekként írják le. A HTTP-fejlécek neve az előtaggal ce-
ellátott környezeti attribútum neve. Az Content-Type
élőfej azt a médiatípust tükrözi, amelyben az eseményadatok kódolva lesznek.
Fontos
A bináris con sátormód használatakor a ce-datacontenttype
HTTP-fejléc NEM lehet jelen.
Fontos
Ha a bináris con sátormód használatakor saját attribútumokat (pl. bővítményattribútumokat) szeretne használni, győződjön meg arról, hogy a nevük kisbetűkből ('a'-tól 'z'-ig) vagy számjegyekből ('0'-tól '9'-ig) áll az ASCII karakterből, és hogy nem hosszabbak 20 karakternél. Ez azt jelzi, hogy a CloudEvents környezeti attribútumainak elnevezésére vonatkozó elnevezési konvenció szigorúbb, mint az érvényes HTTP-fejlécneveké. Nem minden érvényes HTTP-fejlécnév érvényes bővítményattribútumnév.
A HTTP hasznos adat az esemény adatai, amely a médiatípusnak megfelelően van kódolva a következőben Content-Type
: .
A CloudEvent tartalom bináris módban való közzétételére használt HTTP-kérések az alábbi példához hasonlóan nézhetnek ki:
POST / HTTP/1.1
HOST mynamespace.eastus-1.eventgrid.azure.net/topics/mytopic
ce-specversion: 1.0
ce-type: com.example.someevent
ce-source: /mycontext
ce-id: A234-1234-1234
ce-time: 2018-04-05T17:31:00Z
ce-comexampleextension1: value
ce-comexampleothervalue: 5
content-type: application/protobuf
Binary data according to protobuf encoding format. No context attributes are included.
Mikor érdemes használni a CloudEvents bináris vagy strukturált con sátormód
A strukturált con sátormód akkor is használható, ha egyszerű megközelítést szeretne használni a CloudEvents ugrások és protokollok közötti továbbításához. Mivel a CloudEvent strukturált con sátormód tartalmazza az üzenetet a metaadataival együtt, az ügyfelek egyszerűen felhasználhatják egészként, és továbbíthatja azt más rendszereknek.
Használhat bináris con sátormód ha tudja, hogy az alsóbb rétegbeli alkalmazások csak az üzenetet igénylik további információk nélkül (azaz a környezeti attribútumok). Míg a strukturált con sátormód továbbra is lekérheti az eseményadatokat (üzenetet) a CloudEventből, egyszerűbb, ha egy fogyasztói alkalmazás csak a HTTP hasznos adatban tartalmazza. Más alkalmazások például használhatnak más protokollokat, és előfordulhat, hogy csak az alapvető üzenet érdekli őket, nem pedig a metaadatait. Valójában a metaadatok csak az első ugráskor lehetnek relevánsak. Ebben az esetben a metaadatokon kívül kicserélni kívánt adatok megkönnyítik a kezelést és a továbbítást.
Kiadók
A közzétevő az az alkalmazás, amely eseményeket küld az Event Gridnek. Ez lehet ugyanaz az alkalmazás, ahol az események származnak, az esemény forrása. Névtértémakörök használata esetén saját alkalmazásból is közzétehet eseményeket.
Eseményforrások
Az esemény forrása az esemény. Minden eseményforrás egy vagy több eseménytípust támogat. Az alkalmazás például a rendszer által definiált egyéni események eseményforrása. Névtértémakörök használata esetén a támogatott eseményforrások saját alkalmazások.
Névterek
Az Event Grid-névtér a következő erőforrások felügyeleti tárolója:
Erőforrás | Protokoll támogatott |
---|---|
Névtértémakörök | HTTP |
Témakör szóközei | MQTT |
Ügyfelek | MQTT |
Ügyfélcsoportok | MQTT |
Hitelesítésszolgáltatói tanúsítványok | MQTT |
Engedélykötések | MQTT |
Az Azure Event Grid-névtérrel csoportosíthatja a kapcsolódó erőforrásokat, és egyetlen egységként kezelheti őket az Azure-előfizetésben. Egyedi, teljes tartománynevet (FQDN) biztosít.
A névtér két végpontot tesz elérhetővé:
- EGY HTTP-végpont, amely névtértémák használatával támogatja az általános üzenetkezelési követelményeket.
- MQTT-végpont IoT-üzenetküldéshez vagy MQTT-t használó megoldásokhoz.
A névtér DNS-integrált hálózati végpontokat is biztosít. Emellett számos hozzáférés-vezérlési és hálózati integrációkezelési funkciót is kínál, például a nyilvános IP-címek bejövő forgalmának szűrését és a privát kapcsolatokat. Ez a névtérben tárolt erőforrásokhoz használt felügyelt identitások tárolója is.
Íme néhány további pont a névterekről:
- A névtér egy nyomon követett erőforrás
tags
location
és tulajdonságok, és a létrehozás után a következő webhelyenresources.azure.com
található: . - A névtér neve 3–50 karakter hosszú lehet. Tartalmazhat alfanumerikus és kötőjelet(-), szóközök nélkül.
- A névnek régiónként egyedinek kell lennie.
Átviteli egységek
Az átviteli egységek (TU-k) határozzák meg a bejövő és kimenő eseménysebesség kapacitását a névterekben. További információ: Azure Event Grid-kvóták és korlátok.
Témakörök
A témakör az Event Gridben közzétett eseményeket tartalmazza. Általában egy témakörerőforrást használ a kapcsolódó események gyűjteményéhez. A névtéren belüli témaköröket gyakran névtértémaköröknek nevezzük.
Névtértémakörök
A névtértémakörök olyan témakörök, amelyek egy Event Grid-névtérben jönnek létre. Az alkalmazás egy HTTP-névtérvégponton teszi közzé az eseményeket, megadva egy névtértémakört, amelyben a közzétett események logikailag vannak tárolva. Az alkalmazás tervezésekor el kell döntenie, hogy hány témakört kell létrehoznia. Viszonylag nagy méretű megoldásokhoz hozzon létre egy névtér témakört a kapcsolódó események kategóriáihoz. Vegyük például azt az alkalmazást, amely a felhasználói fiókokat és egy másik alkalmazást kezel az ügyfélrendelésekkel kapcsolatban. Nem valószínű, hogy minden esemény-előfizető mindkét alkalmazásból szeretne eseményeket. A problémák elkülönítéséhez hozzon létre két névtértémát: egyet minden alkalmazáshoz. Az eseményfogyasztók a saját igényeiknek megfelelően iratkozzanak fel a témára. Kis megoldások esetén érdemes lehet az összes eseményt egyetlen témakörbe elküldeni.
A névtér témakörei támogatják a lekéréses kézbesítést és a leküldéses kézbesítést. Megtudhatja , mikor érdemes lekéréses vagy leküldéses kézbesítést használni annak eldöntéséhez, hogy a lekéréses kézbesítés a megfelelő megközelítés-e a követelményeknek megfelelően.
Esemény-előfizetések
Az esemény-előfizetés egy egyetlen témakörhöz társított konfigurációs erőforrás. Többek között egy esemény-előfizetés használatával állíthatja be az eseményválasztási feltételeket az előfizető számára elérhető eseménygyűjtemény meghatározásához a témakörben elérhető teljes eseménykészletből. Az eseményeket az előfizető igényei szerint szűrheti. Szűrheti például az eseményeket az eseménytípusuk alapján. Ha JSON-objektumot használ az adattulajdonság értékeként, az eseményadatok tulajdonságaira vonatkozó szűrési feltételeket is meghatározhat. Az erőforrástulajdonságokról további információt az Event Grid REST API vezérlősík-műveleteiben talál.
Ha például névtértémakörökhöz szeretne előfizetéseket létrehozni, tekintse meg az üzenetek közzétételével és felhasználásával kapcsolatos témaköröket a parancssori felület használatával.
Feljegyzés
A névtér témakörében szereplő esemény-előfizetések egyszerűsített erőforrásmodellt használnak az egyéni, tartomány-, partner- és rendszertémákhoz (Event Grid Basic) használthoz képest. További információ: Esemény-előfizetések létrehozása, megtekintése és kezelése.
Lekéréses kézbesítés
A lekéréses kézbesítéssel az alkalmazás az Event Gridhez csatlakozva üzenetsorszerű szemantikával olvassa az üzeneteket. Amikor az alkalmazások az Event Gridhez csatlakoznak az események felhasználásához, ők irányítják az eseményhasználati arányt és annak időzítését. A fogyasztói alkalmazások privát végpontokat is használhatnak az Event Gridhez való csatlakozáskor, hogy privát IP-címtér használatával olvassák az eseményeket.
A lekéréses kézbesítés az alábbi műveleteket támogatja az üzenetek olvasásához és az üzenetállapot szabályozásához: fogadás, nyugtázás, kiadás, elutasítás és megújítási zárolás. További információkért tekintse meg a lekéréses kézbesítés áttekintését.
Adatalakzat események fogadása lekéréses kézbesítéssel
Amikor lekéréses kézbesítéssel kézbesít eseményeket, az Event Grid egy objektumtömböt tartalmaz, amely magában foglalja az eseményt és a brokerProperties objektumokat. Az eseménytulajdonság értéke a strukturált con sátormód-ben kézbesített CloudEvent. A brokerProperties objektum tartalmazza a kézbesített CloudEventhez társított zárolási jogkivonatot. A következő json-objektum egy fogadási művelet mintaválasza, amely két eseményt ad vissza:
{
"value": [
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
"deliveryCount": 2
},
"event": {
"specversion": "1.0",
"id": "A234-1234-1235",
"source": "/mycontext",
"time": "2018-04-05T17:31:00Z",
"type": "com.example.someeventtype",
"data": "some data"
}
},
{
"brokerProperties": {
"lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
"deliveryCount": 1
},
"event": {
"specversion": "1.0",
"id": "B688-1234-1235",
"source": "/mycontext",
"type": "com.example.someeventtype",
"time": "2018-04-05T17:31:00Z",
"data": {
"somekey" : "value",
"someOtherKey" : 9
}
}
}
]
}
Leküldéses kézbesítés
A leküldéses kézbesítéssel az Event Grid eseményeket küld egy leküldéses (kézbesítési) esemény-előfizetésben konfigurált célhelyre. Robusztus újrapróbálkozást biztosít arra az esetre, ha a cél nem tud eseményeket fogadni.
Fontos
Az Event Grid-névterek leküldéses kézbesítése jelenleg az Azure Event Hubsot támogatja célként. A jövőben az Event Grid-névterek több célhelyet is támogatnak, beleértve az Event Grid Basic által támogatott összes célhelyet is.
Event Hubs eseménykézbesítés
Az Event Grid az Event Hubs SDK használatával küld eseményeket az Event Hubsnak az AMQP használatával. Az események bájttömbként lesznek elküldve a CloudEventet tartalmazó tömb minden elemével.
Leküldéses és lekéréses kézbesítés
Az Event Grid http használatával támogatja a leküldéses és lekéréses eseménykézbesítést. A leküldéses kézbesítéssel meghatározhat egy célhelyet egy esemény-előfizetésben, egy webhookban vagy egy Azure-szolgáltatásban, amelyre az Event Grid eseményeket küld. A lekéréses kézbesítéssel az előfizető alkalmazások az Event Gridhez csatlakoznak az események felhasználásához. A lekéréses kézbesítés az Event Grid-névtér témaköreiben támogatott.
Fontos
Az Event Hubs a névtértémakörökre vonatkozó előfizetések célhelyeként támogatott. A következő kiadásokban az Event Grid-névterek támogatják az Event Grid Basicben jelenleg elérhető összes célhelyet, valamint további célhelyeket is.
Mikor érdemes leküldéses kézbesítést és lekéréses kézbesítést használni?
Az alábbi általános irányelvek segítenek eldönteni, hogy mikor érdemes lekéréses vagy leküldéses kézbesítést használni.
Lekéréses kézbesítés
- Az események fogadásának időpontjával kapcsolatos teljes körű ellenőrzésre van szüksége. Előfordulhat például, hogy az alkalmazás nem áll naprakészen, nem elég stabil, vagy bizonyos időpontokban dolgoz fel adatokat.
- Teljes körűen szabályoznia kell az eseményhasználatot. A fogyasztói alkalmazásban például egy downstream szolgáltatás vagy réteg olyan problémával rendelkezik, amely megakadályozza az események feldolgozását. Ebben az esetben a lekéréses kézbesítési API lehetővé teszi a fogyasztói alkalmazás számára, hogy kiadjon egy már olvasható eseményt a közvetítőnek, hogy később kézbesíthető legyen.
- Privát hivatkozásokat szeretne használni az események fogadásakor, ami csak a lekéréses kézbesítéssel lehetséges, nem pedig a leküldéses kézbesítéssel.
- Nem tehet közzé végpontot, és nem használhat leküldéses kézbesítést, de az események felhasználásához csatlakozhat az Event Gridhez.
Leküldéses kézbesítés
- El szeretné kerülni az állandó lekérdezést annak megállapításához, hogy rendszerállapot-változás történt-e. Az Event Grid használatával inkább eseményeket küldhet Önnek az állapotváltozások idején.
- Van egy olyan alkalmazása, amely nem tud kimenő hívásokat kezdeményezni. Előfordulhat például, hogy a szervezet aggódik az adatok kiszivárgása miatt. Az alkalmazás azonban nyilvános végponton keresztül fogadhatja az eseményeket.
Következő lépések
- Az Event Grid ismertetése: Az Event Grid bemutatása.
- A névtértémakörök használatának megkezdéséhez tekintse meg az események névtértémakörökkel való közzétételét.