Realtime-verwerking
Realtime-verwerking heeft betrekking op gegevensstromen die in realtime worden vastgelegd en met minimale latentie worden verwerkt om realtime (of bijna realtime) rapporten of geautomatiseerde reacties te genereren. Een realtime verkeersbewakingsoplossing kan bijvoorbeeld sensorgegevens gebruiken om grote verkeersvolumes te detecteren. Deze gegevens kunnen worden gebruikt om een kaart dynamisch bij te werken om congestie weer te geven, of om automatisch banen met hoge bezetting of andere verkeersbeheersystemen te initiëren.

Realtime verwerking wordt gedefinieerd als de verwerking van niet-gebonden stroom invoergegevens, met zeer korte latentievereisten voor verwerking gemeten in milliseconden of — seconden. Deze binnenkomende gegevens komen doorgaans binnen in een ongestructureerde of semi-gestructureerde indeling, zoals JSON, en hebben dezelfde verwerkingsvereisten als batchverwerking,maar met kortere doorlooptijden om realtime verbruik te ondersteunen.
Verwerkte gegevens worden vaak weggeschreven naar een analytische gegevensopslag, die is geoptimaliseerd voor analyse en visualisatie. De verwerkte gegevens kunnen ook rechtstreeks worden opgenomen in de analyse- en rapportagelaag voor analyse, business intelligence en realtime dashboardvisualisatie.
Uitdagingen
Een van de grote uitdagingen van realtime verwerkingsoplossingen is het opnemen, verwerken en opslaan van berichten in realtime, met name bij grote volumes. De verwerking moet zodanig worden uitgevoerd dat de opnamepijplijn niet wordt geblokkeerd. Het gegevensopslag moet schrijfvolumes van hoge volumes ondersteunen. Een andere uitdaging is om snel te kunnen reageren op de gegevens, zoals het genereren van waarschuwingen in realtime of het weergeven van de gegevens in een realtime dashboard (of bijna in realtime).
Architectuur
Een realtime verwerkingsarchitectuur heeft de volgende logische onderdelen.
Realtime berichtingestie. De architectuur moet een manier bevatten om realtime berichten vast te leggen en op te slaan die door een gebruiker voor stroomverwerking moeten worden gebruikt. In eenvoudige gevallen kan deze service worden geïmplementeerd als een eenvoudig gegevensopslag waarin nieuwe berichten in een map worden opgeslagen. Maar vaak vereist de oplossing een berichtenbroker, zoals Azure Event Hubs, die fungeert als een buffer voor de berichten. De berichtenbroker moet ondersteuning bieden voor uitschaalverwerking en betrouwbare levering.
Stroomverwerking. Na het vastleggen van realtimeberichten moeten deze worden verwerkt door ze te filteren, samen te voegen en anderszins voor te bereiden voor analyse.
Analytische gegevensopslag. Veel big data zijn ontworpen om gegevens voor te bereiden voor analyse en vervolgens de verwerkte gegevens in een gestructureerde indeling te leveren die kan worden opgevraagd met behulp van analytische hulpprogramma's.
Analyse en rapportage. Het doel van de meeste big data-oplossingen is inzicht te bieden in gegevens via analyse en rapportage.
Technologieopties
De volgende technologieën zijn aanbevolen opties voor realtime verwerkingsoplossingen in Azure.
Realtime berichtopname
- Azure Event Hubs. Azure Event Hubs is een berichtenoplossing voor het opnemen van miljoenen gebeurtenisberichten per seconde. De vastgelegde gebeurtenisgegevens kunnen parallel door meerdere consumenten worden verwerkt. Hoewel Event Hubs systeemeigen ondersteuning biedt voor AMQP (Advanced Message Queueing Protocol 1.0), biedt het ook een binaire compatibiliteitslaag waarmee toepassingen die gebruikmaken van het Kafka-protocol (Kafka 1.0 en hoger) gebeurtenissen kunnen verwerken met behulp van Event Hubs zonder toepassingswijzigingen.
- Azure IoT Hub. Azure IoT Hub biedt bi-directionele communicatie tussen apparaten die zijn verbonden met internet en een schaalbare berichtenwachtrij die miljoenen gelijktijdig verbonden apparaten kan verwerken.
- Apache Kafka. Kafka is een open source-toepassing voor het in wachtrij houden en streamen van berichten die kan worden geschaald om miljoenen berichten per seconde van meerdere producenten van berichten te verwerken en deze door te sturen naar meerdere consumenten. Kafka is beschikbaar in Azure als een HDInsight-clustertype, met Azure Events voor Kafka en ook beschikbaar via ConfluentCloud via onze samenwerking met Confluent.
Zie Realtime bericht opnemen voor meer informatie.
Gegevensopslag
- Azure Storage Blob-containers of Azure Data Lake Store. Inkomende realtimegegevens worden meestal vastgelegd in een berichtenbroker (zie hierboven), maar in sommige scenario's kan het zinvol zijn om een map te controleren op nieuwe bestanden en deze te verwerken wanneer ze worden gemaakt of bijgewerkt. Daarnaast combineren veel realtime verwerkingsoplossingen streaminggegevens met statische referentiegegevens, die kunnen worden opgeslagen in een bestandsopslag. Ten slotte kan bestandsopslag worden gebruikt als uitvoerbestemming voor vastgelegde realtime gegevens voor archivering of voor verdere batchverwerking in een lambda-architectuur.
Zie Gegevensopslag voor meer informatie.
Streamverwerking
- Azure Stream Analytics. Azure Stream Analytics kunt query's uitvoeren op een niet-gebonden gegevensstroom. Deze query's verbruiken gegevensstromen van opslag- of berichtenbrokers, filteren en aggregeren de gegevens op basis van tijdelijke vensters en schrijven de resultaten naar sinks zoals opslag, databases of rechtstreeks naar rapporten in Power BI. Stream Analytics maakt gebruik van SQL querytaal die ondersteuning biedt voor tijdelijke en georuimtelijke constructies en kan worden uitgebreid met JavaScript.
- Storm. Apache Storm is een open source-framework voor stroomverwerking dat gebruikmaakt van een topologie van spouts en bolts om de resultaten van realtime streaminggegevensbronnen te gebruiken, te verwerken en uit te geven. U kunt Storm inrichten in Azure HDInsight cluster en een topologie implementeren in Java of C#.
- Spark Streaming. Apache Spark is een open source gedistribueerd platform voor algemene gegevensverwerking. Spark biedt de Spark Streaming-API, waarin u code kunt schrijven in elke ondersteunde Spark-taal, waaronder Java, Scala en Python. Spark 2.0 heeft de Spark Structured Streaming-API geïntroduceerd, die een eenvoudiger en consistenter programmeermodel biedt. Spark 2.0 is beschikbaar in een Azure HDInsight cluster.
Zie Stream-verwerking voor meer informatie.
Analytische gegevensopslag
- Azure Synapse Analytics, Azure Data Explorer, HBase, Spark of Hive. Verwerkte realtime gegevens kunnen worden opgeslagen in een relationele database, zoals Synapse Analytics, Azure Data Explorer, een NoSQL-archief zoals HBase, of als bestanden in gedistribueerde opslag waarover Spark- of Hive-tabellen kunnen worden gedefinieerd en opgevraagd.
Zie Analytische gegevensopslag voor meer informatie.
Analyse en rapportage
- Azure Analysis Services, Power BI en Microsoft Excel. Verwerkte realtime gegevens die zijn opgeslagen in een analytische gegevensopslag, kunnen op dezelfde manier worden gebruikt voor historische rapportage en analyse als in batch verwerkte gegevens. Daarnaast kunnen Power BI worden gebruikt voor het publiceren van realtime (of bijna realtime) rapporten en visualisaties van analytische gegevensbronnen waarbij de latentie voldoende laag is, of in sommige gevallen rechtstreeks vanuit de uitvoer van de stroomverwerking.
Zie Analyse en rapportage voor meer informatie.
In een pure realtime-oplossing wordt het grootste deel van de verwerkingsindelen beheerd door de berichtingestie en stroomverwerkingsonderdelen. In een lambda-architectuur waarin batchverwerking en realtime verwerking worden gecombineerd, moet u mogelijk een orchestration-framework zoals Azure Data Factory of Apache Oozie en Sqoop gebruiken om batchwerkstromen te beheren voor vastgelegde realtime gegevens.
Volgende stappen
De volgende referentiearchitectuur toont een end-to-end-pijplijn voor stroomverwerking: