Delen via


Concepten van Azure Event Grid-naamruimten

In dit artikel maakt u kennis met de belangrijkste concepten en functionaliteit die zijn gekoppeld aan naamruimteonderwerpen.

gebeurtenis

Een gebeurtenis is de kleinste hoeveelheid informatie die volledig beschrijft wat er in een systeem is gebeurd. We verwijzen vaak naar een gebeurtenis als een discrete gebeurtenis, omdat deze een uniek, zelfstandig feit vertegenwoordigt over een systeem dat een inzicht biedt dat kan worden uitgevoerd. Elke gebeurtenis heeft algemene informatie, zoals source de gebeurtenis, time de gebeurtenis vond plaats en een unieke id. 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 'gebeurtenissen' naar berichten die een gegevenspunt bevatten, zoals het lezen van één apparaat of een klik op een webpagina van een webtoepassing. Dit soort gebeurtenissen wordt meestal in een tijdvenster geanalyseerd om inzichten af te leiden en een actie uit te voeren. In de documentatie van Event Grid verwijzen we naar dat soort gebeurtenis als een gegevenspunt, streaminggegevens of gewoon als telemetrie. Dit soort gebeurtenissen wordt onder andere gebruikt met de functie Message Queuing Telemetry Transport (MQTT) van Event Grid.

Ondersteuning voor CloudEvents

Event Grid-naamruimteonderwerpen accepteren gebeurtenissen die voldoen aan de Open Standard CloudEvents 1.0-specificatie van CloudEvents (CloudEvents) van De Cloud Native Computing Foundation (CNCF) met behulp van de HTTP-protocolbinding met 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 bieden over het bericht, zoals waar het afkomstig is (het bronsysteem), het type, enzovoort.

Zie Ondersteuning voor CloudEvents-schema voor meer informatie.

Uitgevers

Een uitgever is de toepassing die gebeurtenissen naar Event Grid verzendt. Dit kan dezelfde toepassing zijn als waar de gebeurtenissen vandaan komen, 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
Onderwerpen over naamruimten HTTP
Onderwerpruimten MQTT
Clients MQTT
Clientgroepen MQTT
CA-certificaten MQTT
Machtigingsbindingen MQTT

Met een Azure Event Grid-naamruimte kunt u gerelateerde resources groeperen en beheren als één eenheid in uw Azure-abonnement. Hiermee krijgt u een unieke FQDN (Fully Qualified Domain Name).

Een naamruimte bevat twee eindpunten:

  • Een HTTP-eindpunt ter ondersteuning van algemene berichtvereisten met behulp van naamruimteonderwerpen.
  • 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:

  • Naamruimte is een bijgehouden resource met tags en location eigenschappen, en zodra deze is gemaakt, kunt u deze vinden op resources.azure.com.
  • De naam van de naamruimte mag 3-50 tekens lang zijn. Het kan alfanumerieke en afbreekstreepje(-) 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.

Onderwerpen

Een onderwerp bevat gebeurtenissen die zijn gepubliceerd naar Event Grid. Doorgaans gebruikt u een onderwerpresource voor een verzameling gerelateerde gebeurtenissen. We hebben vaak verwezen naar onderwerpen in een naamruimte als naamruimteonderwerpen.

Onderwerpen over naamruimten

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. Bij het ontwerpen van uw toepassing moet u bepalen hoeveel onderwerpen u moet 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. Bekijk wanneer u pull- of pushlevering gebruikt om te bepalen of pull-levering de juiste aanpak is op basis van uw vereisten.

Gebeurtenisabonnementen

Een gebeurtenisabonnement is een configuratieresource die is gekoppeld aan één onderwerp. U gebruikt onder andere een gebeurtenisabonnement om de criteria voor gebeurtenisselectie in te stellen om de gebeurtenisverzameling te definiëren die beschikbaar is voor een abonnee uit de totale set gebeurtenissen die beschikbaar zijn in een onderwerp. U kunt gebeurtenissen filteren op basis van de vereisten van de abonnee. U kunt bijvoorbeeld gebeurtenissen filteren op het gebeurtenistype. U kunt ook filtercriteria definiëren voor eigenschappen van gebeurtenisgegevens als u een JSON-object gebruikt als de waarde voor de gegevenseigenschap . Zoek naar besturingsvlakbewerkingen in de Event Grid REST API voor meer informatie over resource-eigenschappen.

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 gebeurtenisabonnementen onder een naamruimteonderwerp bevatten een vereenvoudigd resourcemodel in vergelijking met het model dat wordt gebruikt voor aangepaste, domein-, partner- en systeemonderwerpen (Event Grid Basic). Zie Gebeurtenisabonnementen maken, weergeven en beheren voor meer informatie.

Pull-levering

Met pull-bezorging maakt uw toepassing verbinding met Event Grid om berichten te lezen met behulp van semantiek die lijkt op wachtrijen. Wanneer toepassingen verbinding maken met Event Grid om gebeurtenissen te gebruiken, hebben ze de controle over het verbruik van gebeurtenissen en de timing ervan. 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.

Gegevensshape bij het ontvangen van gebeurtenissen met behulp van pull-levering

Bij het leveren van gebeurtenissen 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 gebeurteniseigenschap is de CloudEvent die wordt geleverd in structured con tentmodus. Het brokerProperties-object bevat het vergrendelingstoken dat is gekoppeld aan de 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 een 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 maakt gebruik van de Event Hubs SDK voor het verzenden van gebeurtenissen naar Event Hubs met behulp van AMQP. Gebeurtenissen worden verzonden als een bytematrix met elk element in de matrix met een CloudEvent.

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-levering maken abonneetoepassingen verbinding met Event Grid om gebeurtenissen te verbruiken. 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.

Diagram op hoog niveau met pushlevering en pull-levering met het type betrokken resources.

Wanneer gebruikt u pushlevering versus pull-levering

Hier volgen algemene richtlijnen om u te helpen bepalen wanneer u pull- of pushlevering wilt gebruiken.

Pull-levering

  • 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 kan de pull-leverings-API de consumenten-app een al lees-gebeurtenis vrijgeven aan de broker, zodat deze later kan worden geleverd.
  • 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.

Volgende stappen