Event-driven architectuur (EDA) is ontstaan als een fundamenteel patroon voor het bouwen van moderne, responsieve en los gekoppelde systemen. Microsoft Azure biedt een robuuste suite van diensten om EDA te implementeren, met Azure Event Hub die dient als een high-throughput event intake laag en Azure Functies die serverloos rekenwerk bieden om in real-time op deze gebeurtenissen te reageren. Dit artikel presenteert een uitgebreide gids voor het bouwen van een event-driven architectuur met behulp van deze twee diensten, die design principes, stap-voor-stap implementatie, operationele beste praktijken en real-world use cases omvatten. Of u nu telemetrie van miljoenen IoT-apparaten in beslag neemt of clickstreamgegevens verwerkt vanuit webtoepassingen, deze architectuur kan schaal om aan uw eisen te voldoen terwijl u de operationele complexiteit laag houdt.

Begrijpen van Event-Driven Architectuur

In de kern wordt een event-driven architectuur gebouwd rond de productie, detectie, consumptie en reactie op gebeurtenissen. Een evenement is een belangrijke verandering in de staat . . bijvoorbeeld, een sensor lezen, een betaling transactie, of een gebruikersprofiel update. In EDA, componenten communiceren via gebeurtenissen in plaats van directe synchrone gesprekken, die koppeling vermindert en maakt het mogelijk onafhankelijke schaalvergroting van producenten en consumenten.

Sleutelbegrippen

  • Event Producer: Elke component die gebeurtenissen uitzendt naar de eventbus. Voorbeelden zijn IoT-apparaten, microservices of oude systemen die gegevens vastleggen over veranderingen (CDC).
  • Event Bus / Stream: Een duurzame, schaalbare pijpleiding die gebeurtenissen inneemt en aanhoudt. Azure Event Hub past perfect bij deze rol, het aanbieden van gepartitioneerde, bestelde eventstreams.
  • Event Consumer: Een component die zich abonneert op gebeurtenissen en verwerkt. Azure Functies kunnen fungeren als consument, automatisch geactiveerd wanneer nieuwe gebeurtenissen aankomen.
  • Event Sourcing en CQRS: Veel implementaties combineren EDA met event sourcing (persisting the event log as the source of truth) en commando query responsibility segregation (CQRS) om lees- en schrijfmodellen te scheiden.

De ontkoppeling die door EDA wordt geïntroduceerd stelt teams in staat om onafhankelijk diensten te ontwikkelen, in te zetten en te schalen. Het vergemakkelijkt ook real-time analyses, audit trails en het vermogen om historische gebeurtenissen voor debuggen of opwerking te herhalen.

Azure Event Hub: de Ingestielaag

Azure Event Hub is een volledig beheerd, real-time datastreaming platform dat miljoenen gebeurtenissen per seconde kan opnemen. De architectuur is ontworpen voor hoge doorvoer, lage latentie en duurzaamheid. Event Hub vangt gebeurtenissen op in partities, elk een volgorde van gebeurtenissen. Consumenten kunnen lezen van een controlepunt om de verwerking te hervatten.

Belangrijkste kenmerken van Event Hub

  • Partitionering: Gebeurtenissen worden verdeeld over partities voor parallelle verwerking. Elke partitie is onafhankelijk en kan worden verbruikt door een aparte instantie van de Azure Functie.
  • Captuur: De gebeurtenisstromen automatisch aanhoudt naar Azure Blob Opslag of Azure Data Lake Opslag voor archival en batchanalyse.
  • Geo-disaster Recovery: Optioneel koppelen van namespaces tussen regio's zorgt voor een hoge beschikbaarheid.
  • AMQP, HTTPS en Kafka Protocol: Ondersteunt meerdere protocollen, waardoor producenten die Apache Kafka-clients gebruiken, gebeurtenissen direct kunnen verzenden.
  • Doorvoereenheden (TU's) of verwerkingseenheden (PU's): Bepaal de in- en uitgangscapaciteit. Voor de serverloze niveau (basic en standaard) worden TU's gebruikt; voor Premium en Dedicated bieden PU's meer voorspelbare prestaties.

Stappen instellen

  1. Maak een Event Hubs Namespace: In het Azure-portaal maakt u een nieuwe Event Hubs-naamruimte. Kies de prijslijst (Standaard wordt aanbevolen voor de meeste productiewerkbelasting). Schakel automatisch opblazen in als u een variabele doorvoer verwacht.
  2. Maak een Event Hub Instance: Binnen de namespace, maak een event hub. Geef het aantal partities op . Een veelvoorkomende vuistregel is 4-32 partities voor de meeste gebruiks gevallen. Partities kunnen niet later worden gewijzigd zonder het namaken van de hub, dus kies op basis van de verwachte doorvoer.
  3. Gedeeld toegangsbeleid configureren: Maak een beleid voor producenten (bijv. "VerzendenOnly") en een beleid voor consumenten (bijv. "LuisterOnly") om het principe van de minste privileges te volgen. De verbindingsstrings worden gebruikt door toepassingen en Azure functies.
  4. Laat Capture (Optioneel) inwerken Als u alle ruwe gebeurtenissen voor langdurige bewaring moet opslaan, schakelt u Capture in en wijst u naar een Azure Blob Opslagcontainer of Data Lake Storage.

Zie voor een hands-on voorbeeld de officiële snelstartgids.

Azure functies: De berekening trigger

Azure Functies biedt een serverloze rekenomgeving waarin je code schrijft die reageert op gebeurtenissen. De Event Hub trigger maakt het mogelijk om een functie automatisch aan te roepen wanneer nieuwe gebeurtenissen worden gepubliceerd in een evenementhub. Functies kunnen automatisch uitschalen, waarbij elke functie instantie gebeurtenissen verwerkt vanuit een of meer partities.

Gedrag van gebeurtenis-hub-triggers

  • Controle: De functie runtime beheert checkpointing om de laatste met succes verwerkte gebeurtenis per partitie bij te houden. Dit zorgt ervoor dat als de functie opnieuw wordt gestart, het opnieuw wordt gestart vanuit de juiste positie.
  • Batch Processing: Standaard levert de trigger een partij gebeurtenissen. U kunt batchgrootte en prefetch tellen voor prestatie-tuning.
  • Parallelisme: Het aantal functie-instances is gelijk aan het aantal partities met onbewerkte gebeurtenissen. Om parallelisme te verhogen, verhoog je het aantal partities (binnen grenzen). Voor de hoogste doorvoer, gebruik je het Premium of Dedicated hosting plan in plaats van het Consumptieplan, vooral als de functie de verwerkingstijd meer dan een paar seconden bedraagt.

Een Azure functie creëren met Event Hub Trigger

  1. Maak een functieapp in Azure Portal of via Azure CLI. Kies de runtime stack (bijv. .NET, Node.js, Python).
  2. Voeg een activiteits-Hub-triggerbinding toe. De functie-ondertekening zal een parameter bevatten voor de gebeurtenisgegevens (bv. of ).
  3. Stel de setting van de Event Hub-verbindingsstring (van de Application Settings) en de naam van de evenementhub in.
  4. Schrijf processing logica binnen de functie. Gemeenschappelijke taken: deserialize JSON, update een database, bel een API, of stuur het evenement naar een andere dienst zoals SignalR voor real-time dashboards.
  5. Configureer uitvoer bindingen als nodig . . bijvoorbeeld een Cosmos DB uitvoer binding om verwerkte gegevens op te slaan.

De Azure functies Event Hub trigger documentatie biedt gedetailleerde code monsters voor elke taal.

Ontwerpen van de End-to-End Architectuur

Nu combineren we de stukken. De typische stroom is: ProducersEvent HubAzure functiesDownstream Services[[FLT:]]. Laten we door een productie-kwaliteit voorbeeld lopen: een vlootmanagementsysteem dat GPS-pings ontvangt van duizenden voertuigen.

Stap 1: Definieer het schema van het evenement

Consistentie is cruciaal. Gebruik een schemaregister (zoals Azure Schema Register in Event Hubs) of gewoon een JSON schema. Een voorbeeld gebeurtenis payload:

{
 "vehicleId": "VH-12345",
 "latitude": 37.7749,
 "longitude": -122.4194,
 "speed": 65.2,
 "timestamp": "2025-03-21T10:30:00Z"
}

Met behulp van Avro of Protobuf kan de payload grootte verminderen en schema evolutie mogelijkheden bieden, maar JSON blijft de eenvoudigste om te debuggen.

Stap 2: Producers instellen

Producenten kunnen IoT-apparaten zijn die gebruik maken van Azure IoT Hub of aangepaste toepassingen met behulp van de Event Hubs SDK. Voor scenario's met een hoog volume, batch-evenementen samen (bijvoorbeeld 100 gebeurtenissen per verzoek) om de doorvoer te maximaliseren. Zorg ervoor dat de producent een retry-beleid gebruikt met exponentiële back-off.

Stap 3: Stel de partitiesleutel in

Event Hub partitioneert gebeurtenissen op basis van een partitiesleutel. Als u per voertuig bestelde verwerking nodig heeft, gebruik dan als de partitiesleutel. Dit garandeert alle gebeurtenissen vanuit hetzelfde voertuigland in dezelfde partitie en wordt sequelly verwerkt door één enkele consument.

Stap 4: Bouw de Azure functie

De functie ontvangt batches van gebeurtenissen, verwerkt elk in volgorde, en kan dan schrijven de nieuwste locatie naar een cache (bijv., Azure Redis Cache) voor real-time vragen. Het kan ook geofence events .. als een voertuig een bepaalde zone, de functie kan een waarschuwing via Azure Logic Apps of Twilio sturen.

Stap 5: Mislukkingen en terugvallen van de handle

Als de verwerking mislukt voor een batch, zal de Event Hub trigger opnieuw proberen volgens het functie-retry beleid (standaard is exponentieel backoff tot 5 keer). Voor gif gebeurtenissen (bijv. misvormde JSON), log ze in een dode-letter wachtrij (Azure Storage Queue of een speciale Event Hub). De functie moet specifieke uitzonderingen vangen en problematische gebeurtenissen uit de normale verwerking pijplijn verplaatsen.

Stap 6: Monitor en schaal

  • Gebruik Azure Monitor om de Event Hub metrics te volgen: binnenkomende berichten, getrotteerde verzoeken, achterstand (verschil tussen de laatste enqueued offset en laatste controlepunt).
  • Voor het schalen van Azure functies, het verbruik plan automatisch schaal, maar kan koude start vertragingen. Het Premium plan biedt instantie voor-warmen en virtuele netwerkintegratie.
  • Alerts instellen voor een hoge achterstand, wat aangeeft dat de functie niet kan bijhouden . . Overweeg het verhogen van partities of het upgraden van het hostingplan.

Geavanceerde patronen en beste praktijken

Evenement-afspelen en inhalen

Een belangrijk voordeel van Event Hub is dat gebeurtenissen worden bewaard voor een configureerbare periode (tot 90 dagen op Standard). Dit stelt consumenten in staat om gebeurtenissen te herhalen vanaf een bepaald moment in de tijd . . nuttig voor het backfillen van een nieuwe database of het opwerken na het bevestigen van een bug. Om replay in te schakelen, kunt u een nieuwe consumentengroep creëren en de functie starten vanaf een aangepaste offset.

Meerdere consumentengroepen

Event Hub ondersteunt maximaal 20 consumentengroepen per evenementhub. Gebruik afzonderlijke consumentengroepen voor verschillende verwerkingspijpleidingen: één voor real-time analytics, een andere voor archival, en een derde voor trainingsmodellen voor machine learning. Elke consumentengroep krijgt een eigen checkpoint store, waardoor onafhankelijke vooruitgang mogelijk is.

Idempotent processing

Aangezien gebeurtenissen ten minste één keer kunnen worden geleverd, moet de functie idempotent zijn. Bijvoorbeeld, bij het invoegen in een database, gebruik upsert operaties in plaats van invoegen. Of controleer of een gebeurtenis ID al bestaat in een deduplicatie store (bijvoorbeeld Redis met TTL). Dit voorkomt dubbele verwerking van het veroorzaken van gegevens inconsistentie.

Integratie met Azure functie uitvoerbindingen

In plaats van handmatige code te schrijven om gegevens elders te versturen, gebruik uitvoer bindingen. De volgende tabel geeft een samenvatting van de gemeenschappelijke bindingen voor gebeurtenissen-gedreven scenario's:

  • Cosmos DB: Documenten automatisch upsert vanuit de functieuitvoer.
  • SignalR Service: Broadcast verwerkt gebeurtenissen aan verbonden clients (bijvoorbeeld real-time dashboard).
  • Blob-opslag: De batch-outputs periodiek schrijven (vermijd het schrijven per gebeurtenis om de kosten te verlagen).
  • Event Hubs (Output): Stuur gebeurtenissen naar een andere Event Hub voor ketening.

Veiligheidsoverwegingen

  • Gebruik Managed Identity voor de Azure-functie om verbinding te maken met Event Hub in plaats van verbindingsstrings in platte tekst op te slaan.
  • Inschakelen van firewall en virtuele netwerkintegratie voor de Event Hub naamruimte om netwerktoegang te beperken.
  • Gebruik Azure Key Vault om geheimen zoals Event Hub verbinding snaren en toegang sleutels op te slaan.
  • Gebeurtenissen in rust en in transit versleutelen (Event Hub gebruikt standaard TLS).

Gebruik cases en scenario's in de echte wereld

IoT Telemetrieverwerking

Zoals eerder beschreven, is het vlootbeheer scenario een klassieke pasvorm. Azure IoT Hub kan de apparaatberichten in te nemen en routeren naar Event Hub voor downstream verwerking. Azure functies kunnen dan berekenen gemiddelde snelheid per route, anomalieën detecteren of triggeren onderhoud waarschuwingen.

Clickstream Analytics

E-commerce websites genereren enorme clickstream data. Event Hub kan views, winkelwagen acties, en zoekopdrachten te verzamelen. Functies kunnen verrijken de gebeurtenissen met gebruikersprofiel gegevens, update sessietellers, en duwen naar Azure Data Explorer voor bijna real-time dashboards. De Azure referentie architectuur voor clickstream biedt een volledige blauwdruk.

Gegevensopname (CDC) wijzigen

Wanneer u gegevens van een relationele database naar een zoekindex of cache moet synchroniseren, is CDC met Event Hub een gemeenschappelijke aanpak. Bijvoorbeeld, met Debezium (Kafka Connect) om databasewijzigingen in Event Hub te streamen, dan transformeert en schrijft een Azure Functie naar Elasticsearch. Dit patroon houdt de zoekindex altijd up-to-date zonder aangepaste polling logica.

Financiële transactieverwerking

In de financiën, evenement-gedreven architectuur maakt fraude detectie, real-time risico scoren, en handel schikking. Event Hub . lage latency en hoge doorvoer maken het geschikt voor het omgaan met duizenden transacties per seconde. Azure functies kunnen fraude detectie modellen uitvoeren, vlag verdachte transacties, en sturen waarschuwingen terwijl het onderhouden van audit trails.

Kostenoptimalisatie en monitoring

Terwijl serverless de inactieve kosten vermindert, moet u het gebruik nog steeds monitoren. Belangrijkste kostenstuurprogramma's zijn:

  • Event Hub Throughput Units: Elke TU maakt 1 MB/s instap en 2 MB/s uitstappen (of 1000 gebeurtenissen per seconde). Voor onvoorspelbare werkbelasting, laat auto-opblaas.
  • Aantal gegevens geïngesteerd: Gefactureerd per miljoen gebeurtenissen (Standaard niveau). Gebruik batching om het aantal gebeurtenissen te verminderen.
  • Azure Functie Uitvoeringstijd: Het verbruiksplan laadt per seconde van uitvoering. Zorg ervoor dat uw functie efficiënt is .Vermijd het blokkeren van oproepen en gebruik async I/O.
  • Opslag gebruikt voor het vastleggen en controleren van: Blob opslagkosten zijn minimaal, maar overwegen retentie beleid.

Stel budget waarschuwingen in in Azure Cost Management. Gebruik Application Insights om functie uitvoeringstijden en afhankelijkheid oproepen te traceren. De Azure Event-gedreven architectuur patroon pagina bevat begeleiding over monitoring.

Vergelijking met alternatieve technologieën

  • Azure Service Bus: Beter voor commandogestuurde werkbelasting die strikte bestelling, transactieverwerking en doodletteren vereist. Event Hub is geoptimaliseerd voor high-throughput event streaming, niet voor point-to-point messaging.
  • Apache Kafka op HDInsight of Confluent: Meer controle over configuraties maar vereist operationele overhead. Event Hub biedt Kafka protocol compatibiliteit met een beheerde service.
  • Event Grid: Geschikt voor reactieve programmering en gebeurtenisrouting tussen Azure diensten. Het is niet ontworpen voor het streamen van grote volumes . . Event Hub behandelt miljoenen gebeurtenissen per seconde.
  • Azure Stream Analytics: Een managed SQL-achtige verwerkingsmotor voor tijdreeksanalyses. Het kan op de top van Event Hub draaien, maar voor complexe bedrijfslogica biedt Azure Functions meer flexibiliteit.

Operationele controlelijst

  1. Definieer de bewaartijd voor gebeurtenissen (standaard 1 dag, max 7 dagen op Standaard).
  2. Stel applicatie inzichten in voor de Azure Functie om verwerkt aantal gebeurtenissen en fouten in te loggen.
  3. Activeer Azure Monitor waarschuwingen voor Event Hub throttling (check for metric).
  4. Gebruik Azure Policy om TLS-versie en authenticatietype af te dwingen.
  5. Testfoutscenario's: stop de functie, laat gebeurtenissen zich ophopen en herstart om het herstel van het controlepunt te verifiëren.
  6. Voer belastingstests uit met een gesimuleerde producent om ervoor te zorgen dat de architectuur piekvolumes verwerkt.

Conclusie

Het bouwen van een door evenementen aangedreven architectuur met Azure Event Hub en Azure Functies voorziet organisaties van een schaalbaar, kosteneffectief en responsief systeem voor real-time dataverwerking. De combinatie van duurzame eventstreaming en serverless compute stelt ontwikkelaars in staat zich te concentreren op bedrijfslogica terwijl Azure partitionering, schaalvergroting en checkpoint management behandelt. Door het volgen van de ontwerpprincipes en beste praktijken die hier worden beschreven . . het kiezen van passende partition counts, het implementeren van idempotent processing, en het monitoren van operationele gezondheid . U kunt een productie-ready pijplijn die zich aanpast aan evoluerende data volumes. Aangezien evenement-gedreven patronen blijven moderne cloud-toepassingen vormgeven, is het beheersen van deze Azure diensten een waardevolle vaardigheid voor elke cloudud architect of ontwikkelaar.