Concepten van Azure Event Grid-naamruimten

In dit artikel worden de belangrijkste concepten en functionaliteit beschreven die zijn gekoppeld aan naamruimteonderwerpen.

gebeurtenis

Een gebeurtenis is de kleinste hoeveelheid informatie die volledig beschrijft wat er in een systeem is gebeurd. Een gebeurtenis wordt vaak een discrete gebeurtenis genoemd omdat deze een uniek, zelfstandig feit vertegenwoordigt over een systeem dat bruikbare inzichten biedt. Elke gebeurtenis heeft algemene informatie, zoals source de gebeurtenis, time de gebeurtenis vond plaats en een unieke id. Elke gebeurtenis heeft ook een type, meestal een unieke id die het soort aankondiging beschrijft waarvoor de gebeurtenis wordt gebruikt.

Een gebeurtenis over het maken van een nieuw bestand in Azure Storage bevat bijvoorbeeld informatie over het bestand, zoals de waarde lastTimeModified. Een Event Hubs-gebeurtenis heeft de URL van het vastgelegde bestand. Een gebeurtenis over een nieuwe order in de microservice Orders kan een orderId kenmerk en een URL-kenmerk hebben voor de statusweergave van de order. Enkele voorbeelden van gebeurtenistypen zijn: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Hier volgt een voorbeeldgebeurtenis:

{
    "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"
    }
}

Een ander soort gebeurtenis

De gebruikerscommunity verwijst ook naar berichten die een gegevenspunt bevatten, zoals één apparaat lezen of klikken op een webpagina van een webtoepassing, als 'gebeurtenissen'. Normaal gesproken analyseert u dit soort gebeurtenissen gedurende een tijdvenster om inzichten af te leiden en een actie uit te voeren. In de Documentatie van Event Grid wordt dit soort gebeurtenis een gegevenspunt, streaminggegevens of gewoon telemetrie genoemd. De brokerfunctie Message Queuing Telemetry Transport (MQTT) van Event Grid maakt gebruik van dit soort gebeurtenissen, onder andere berichttypen.

Ondersteuning voor CloudEvents

Event Grid-naamruimteonderwerpen accepteren gebeurtenissen die voldoen aan de open standaard CloudEvents 1.0-specificatie van de Cloud Native Computing Foundation (CNCF), met de HTTP-protocolbinding en de JSON-indeling. Een CloudEvent is een soort bericht dat bevat wat er wordt gecommuniceerd, aangeduid als gebeurtenisgegevens en metagegevens. De gebeurtenisgegevens in gebeurtenisgestuurde architecturen bevatten doorgaans de informatie die een wijziging van de systeemstatus aankondigt. De metagegevens van CloudEvents bestaan uit een set kenmerken die contextuele informatie over het bericht bieden, zoals waar het vandaan komt (het bronsysteem) en het bijbehorende type.

Zie Ondersteuning voor CloudEvents-schema voor meer informatie.

Uitgevers

Een uitgever is de toepassing die gebeurtenissen naar Event Grid verzendt. Het kan dezelfde toepassing zijn als waar de gebeurtenissen afkomstig zijn, de gebeurtenisbron. U kunt gebeurtenissen vanuit uw eigen toepassing publiceren wanneer u naamruimteonderwerpen gebruikt.

Gebeurtenisbronnen

Een gebeurtenisbron is waar de gebeurtenis plaatsvindt. Elke gebeurtenisbron ondersteunt een of meer gebeurtenistypen. Uw toepassing is bijvoorbeeld de gebeurtenisbron voor aangepaste gebeurtenissen die door uw systeem worden gedefinieerd. Wanneer u naamruimteonderwerpen gebruikt, zijn de ondersteunde gebeurtenisbronnen uw eigen toepassingen.

Naamruimten

Een Event Grid-naamruimte is een beheercontainer voor de volgende resources:

Bron Protocol ondersteund
Naamruimteonderwerpen HTTP
Onderwerpgebieden MQTT
Klanten MQTT
Clientgroepen MQTT
CA-certificaten MQTT
Machtigingsbindingen MQTT

Door gebruik te maken van een Azure Event Grid-namespace kun je gerelateerde resources groeperen en beheren als één eenheid in je Azure-abonnement. Hiermee krijgt u een unieke FQDN (Fully Qualified Domain Name).

In een naamruimte worden twee eindpunten weergegeven:

  • Een HTTP-endpoint om algemene berichtvereisten te ondersteunen door gebruik te maken van namespace-topics.
  • Een MQTT-eindpunt voor IoT-berichten of -oplossingen die gebruikmaken van MQTT.

Een naamruimte biedt ook DNS-geïntegreerde netwerkeindpunten. Het biedt ook een scala aan functies voor toegangsbeheer en netwerkintegratiebeheer, zoals het filteren van openbare IP-toegangsbeheer en privékoppelingen. Het is ook de container met beheerde identiteiten die worden gebruikt voor ingesloten resources in de naamruimte.

Hier volgen nog enkele punten over naamruimten:

  • Een naamruimte is een bijgehouden bron met tags en location eigenschappen. Nadat je het hebt gemaakt, kun je het vinden op resources.azure.com.
  • De naam van de naamruimte mag 3-50 tekens lang zijn. Het kan alfanumerieke tekens, koppeltekens (-) en geen spaties bevatten.
  • De naam moet uniek zijn per regio.

Doorvoereenheden

Doorvoereenheden (TU's) definiëren de capaciteit voor inkomend en uitgaand verkeer in naamruimten. Zie Azure Event Grid-quota en -limieten voor meer informatie.

Automatisch schalen

Autoscale past automatisch het aantal doorvoerunits aan dat aan een Event Grid-naamruimte is toegewezen, op basis van realtime verkeer en resourcegebruik. Het monitort continu belangrijke prestatie-indicatoren en schaalt de capaciteit binnen de minimale en maximale limieten die je instelt. Dit gedrag helpt om consistente prestaties te behouden tijdens pieken in de werklast en verlaagt de kosten tijdens periodes met weinig activiteit zonder dat handmatige interventie nodig is.

Om Autoscale te gebruiken, schakel je het in in de naamruimte en specificeer je:

  • Minimale doorvoereenheden: De ondergrens voor de capaciteit. De naamruimte schaalt niet onder deze waarde.
  • Maximale doorvoereenheid: Het plafond voor capaciteit. De naamruimte schaalt niet boven deze waarde uit.

Event Grid beoordeelt de benutting op basis van inkomende en uitgaande gebeurtenissen, MQTT-publicatiesnelheden voor inkomend en uitgaand verkeer en het aantal geregistreerde MQTT-clients. Wanneer een categorie de schaaldrempel overschrijdt, worden er meer TU's geprovisioneerd. Wanneer alle categorieën onder de schaalverkleiningsdrempel vallen, worden TU's vrijgegeven. Cooldown-periodes tussen schaalbewerkingen voorkomen snelle oscillatie.

Autoscale is nuttig voor MQTT-workloads, waar het verspreiden van berichten en de groei van abonnementen snel kunnen veranderen naarmate apparaten verbinden en ontkoppelen. Het is ook waardevol voor workloads van event brokers met grillige verkeerpatronen en piekbelasting.

Raadpleeg voor configuratiedetails en capaciteitslimieten per TU het Autoscale-overzicht en de stapsgewijze handleiding.

Onderwerpen

Een onderwerp bevat gebeurtenissen die zijn gepubliceerd naar Event Grid. Doorgaans gebruikt u een onderwerpresource voor een verzameling gerelateerde gebeurtenissen. Onderwerpen in een naamruimte worden vaak naamruimteonderwerpen genoemd.

Naamruimteonderwerpen

Naamruimteonderwerpen zijn onderwerpen die worden gemaakt in een Event Grid-naamruimte. Uw toepassing publiceert gebeurtenissen naar een HTTP-naamruimte-eindpunt dat een naamruimteonderwerp opgeeft waarin gepubliceerde gebeurtenissen logisch zijn opgenomen. Wanneer u uw toepassing ontwerpt, bepaalt u hoeveel onderwerpen u wilt maken. Voor relatief grote oplossingen maakt u een naamruimteonderwerp voor elke categorie gerelateerde gebeurtenissen. Denk bijvoorbeeld aan een toepassing waarmee gebruikersaccounts en een andere toepassing over klantorders worden beheerd. Het is onwaarschijnlijk dat alle gebeurtenisabonnees gebeurtenissen van beide toepassingen willen. Als u problemen wilt scheiden, maakt u twee naamruimteonderwerpen: één voor elke toepassing. Laat gebeurtenisgebruikers zich abonneren op het onderwerp op basis van hun vereisten. Voor kleine oplossingen wilt u mogelijk alle gebeurtenissen naar één onderwerp verzenden.

Naamruimteonderwerpen ondersteunen pull-levering en push-levering. Zie wanneer u pull- of pushlevering moet gebruiken om te bepalen of pulllevering, gezien uw vereisten, de juiste aanpak is.

Gebeurtenisabonnementen

Een gebeurtenisabonnement is een configuratieresource die is gekoppeld aan één onderwerp. Gebruik onder andere een evenementabonnement om de evenementselectiecriteria in te stellen en zo de evenementencollectie te definiëren die beschikbaar is voor een abonnee uit het totale aantal evenementen binnen een onderwerp. U kunt gebeurtenissen filteren op basis van de vereisten van de abonnee. U kunt bijvoorbeeld gebeurtenissen filteren op het gebeurtenistype. Je kunt ook filtercriteria definiëren voor gebeurtenisdata-eigenschappen als je een JSON-object gebruikt als waarde voor de data-eigenschap. Voor meer informatie over resource-eigenschappen, zie de documentatie voor de Event Grid REST API .

Diagram met een onderwerp en gekoppelde gebeurtenisabonnementen.

Zie Berichten publiceren en gebruiken met behulp van cli voor een voorbeeld van het maken van abonnementen voor naamruimteonderwerpen.

Notitie

De evenementabonnementen onder een namespace-onderwerp bevatten een vereenvoudigd resourcemodel in vergelijking met het model dat wordt gebruikt voor custom-, domein-, partner- en systeemonderwerpen (Event Grid Basic). Zie Gebeurtenisabonnementen maken, weergeven en beheren voor meer informatie.

Ophaallevering

Met pulllevering maakt uw toepassing verbinding met Event Grid om berichten te lezen met wachtrijachtige semantiek. Wanneer toepassingen verbinding maken met Event Grid om gebeurtenissen te gebruiken, beheren ze de snelheid en timing van het gebeurtenisverbruik. Consumententoepassingen kunnen ook privé-eindpunten gebruiken wanneer u verbinding maakt met Event Grid om gebeurtenissen te lezen met behulp van privé-IP-ruimte.

Pull-bezorging ondersteunt de volgende bewerkingen voor het lezen van berichten en het beheren van de berichtstatus: ontvangen, bevestigen, vrijgeven, weigeren en vernieuwen. Zie het overzicht van pull-levering voor meer informatie.

Gegevensindeling bij het ontvangen van gebeurtenissen via pullbezorging

Wanneer u gebeurtenissen levert met behulp van pull-levering, bevat Event Grid een matrix met objecten die op hun beurt de gebeurtenis - en brokerProperties-objecten bevatten. De waarde van de event-eigenschap is de CloudEvent die wordt geleverd in de modus voor gestructureerde inhoud. Het brokerProperties-object bevat het vergrendelingstoken dat is gekoppeld aan cloudEvent geleverd. Het volgende JSON-object is een voorbeeldantwoord van een ontvangstbewerking die twee gebeurtenissen retourneert:

{
    "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
                }
            }
        }
    ]
}

Push-levering

Met pushlevering verzendt Event Grid gebeurtenissen naar een bestemming die is geconfigureerd in een push-gebeurtenisabonnement (leveringsmodus in). Het biedt robuuste logica voor opnieuw proberen voor het geval de bestemming geen gebeurtenissen kan ontvangen.

Belangrijk

De pushlevering van Event Grid-naamruimten ondersteunt momenteel Azure Event Hubs als bestemming. In de toekomst ondersteunen Event Grid-naamruimten meer bestemmingen, inclusief alle bestemmingen die worden ondersteund door Event Grid Basic.

Event Hubs-gebeurtenislevering

Event Grid gebruikt de Event Hubs SDK om gebeurtenissen naar Event Hubs te verzenden met AMQP. Gebeurtenissen worden verzonden als een byte-array, waarbij elk element in de array een CloudEvent bevat.

Push- en pull-levering

Event Grid ondersteunt de levering van push- en pull-gebeurtenissen met behulp van HTTP. Met pushlevering definieert u een bestemming in een gebeurtenisabonnement, een webhook of een Azure-service waarnaar Event Grid gebeurtenissen verzendt. Met pull delivery maken abonnee-applicaties verbinding met Event Grid om gebeurtenissen te verwerken. Pull-levering wordt ondersteund voor onderwerpen in een Event Grid-naamruimte.

Belangrijk

Event Hubs wordt ondersteund als bestemming voor abonnementen op naamruimteonderwerpen. In de komende releases ondersteunen Event Grid-naamruimten alle bestemmingen die momenteel beschikbaar zijn in Event Grid Basic, samen met extra bestemmingen.

Overzichtsdiagram van push- en pulllevering en welke typen bronnen erbij betrokken zijn.

Wanneer gebruikt u pushlevering versus pull-levering

Hieronder staan algemene richtlijnen om u te helpen bepalen wanneer u voor pull- of pushlevering kiest.

Ophaallevering

  • U hebt volledige controle nodig over wanneer gebeurtenissen moeten worden ontvangen. Uw toepassing is bijvoorbeeld mogelijk niet altijd up-the-time, niet stabiel genoeg of u verwerkt gegevens op bepaalde momenten.
  • U hebt volledige controle nodig over het verbruik van gebeurtenissen. Een downstreamservice of laag in uw consumententoepassing heeft bijvoorbeeld een probleem waardoor u geen gebeurtenissen kunt verwerken. In dat geval stelt de pull-delivery-API de consumer-app in staat een reeds gelezen event terug te geven aan de broker, zodat het later kan worden afgeleverd.
  • U wilt privékoppelingen gebruiken bij het ontvangen van gebeurtenissen, wat alleen mogelijk is met de pull-levering, niet de push-levering.
  • U hebt niet de mogelijkheid om een eindpunt beschikbaar te maken en pushlevering te gebruiken, maar u kunt wel verbinding maken met Event Grid om gebeurtenissen te gebruiken.

Push-levering

  • U wilt constante polling voorkomen om te bepalen dat er een wijziging in de systeemstatus is opgetreden. U gebruikt Event Grid liever om gebeurtenissen naar u te verzenden op het moment dat de statuswijzigingen plaatsvinden.
  • U hebt een toepassing die geen uitgaande oproepen kan uitvoeren. Uw organisatie kan zich bijvoorbeeld zorgen maken over gegevensexfiltratie. Uw toepassing kan echter gebeurtenissen ontvangen via een openbaar eindpunt.