Bewerken

Delen via


Stroomverwerking met volledig beheerde opensource-gegevensengines

Azure Event Hubs
Azure Kubernetes Service (AKS)
Azure Cosmos DB
Azure Database for PostgreSQL
Azure Cache for Redis

Dit artikel bevat een voorbeeld van een streamingoplossing die gebruikmaakt van volledig beheerde Azure-gegevensservices.

Architectuur

Architectuurdiagram waarin wordt getoond hoe streaminggegevens via een systeem stromen. Kafka-, Kubernetes-, Cassandra-, PostgreSQL- en Redis-onderdelen vormen het systeem.

Download een [Visio-bestand][Visio-versie van architectuurdiagram] van deze architectuur.

Workflow

  1. De Event Hubs voor Apache Kafka-functie streamt gebeurtenissen van Kafka-producenten.

  2. Apache Spark verbruikt gebeurtenissen. Azure Kubernetes Service (AKS) biedt een beheerde omgeving voor de Apache Spark-taken.

  3. Een toepassing die gebruikmaakt van Azure Cosmos DB voor Apache Cassandra schrijft gebeurtenissen naar Cassandra. Deze database fungeert als een opslagplatform voor gebeurtenissen. AKS fungeert als host voor de microservices die naar Cassandra schrijven.

  4. De functie voor wijzigingenfeeds van Azure Cosmos DB verwerkt gebeurtenissen in realtime.

  5. Geplande toepassingen voeren batchgeoriënteerde verwerking uit op gebeurtenissen die zijn opgeslagen in Cassandra.

  6. Archieven van referentiegegevens verrijken gebeurtenisinformatie. Batchgeoriënteerde toepassingen schrijven de verrijkte gebeurtenisgegevens naar PostgreSQL. Typische referentiegegevensarchieven zijn:

    • [Azure Data Lake Storage][Inleiding tot Azure Data Lake Storage Gen2], waarmee gegevens kunnen worden opgeslagen in open indelingen zoals [Parquet][Parquet].
    • Relationele opensource-gegevensarchieven zoals [PostgreSQL][Wat is Azure Database for PostgreSQL?] en [MySQL][Wat is Azure Database for MySQL?].
  7. Een batchgeoriënteerde toepassing verwerkt Cassandra-gegevens. Deze toepassing slaat de verwerkte gegevens op in Azure Database for PostgreSQL. Dit relationele gegevensarchief biedt gegevens aan downstreamtoepassingen waarvoor verrijkte informatie is vereist.

  8. Rapportagetoepassingen en hulpprogramma's analyseren de PostgreSQL-databasegegevens. Bijvoorbeeld [Power BI][Wat is Power BI?] maakt verbinding met de database met behulp van de Azure Database for PostgreSQL-connector. Deze rapportageservice geeft vervolgens uitgebreide visuals van de gegevens weer.

  9. Azure Cache voor Redis biedt een cache in het geheugen. In deze oplossing bevat de cache gegevens over kritieke gebeurtenissen. Een toepassing slaat gegevens op in de cache en haalt gegevens op uit de cache.

  10. Websites en andere toepassingen gebruiken de gegevens in de cache om de reactietijden te verbeteren. Soms zijn gegevens niet beschikbaar in de cache. In dergelijke gevallen gebruiken deze toepassingen het [cache-aside-patroon][Cache-Aside-patroon] of een vergelijkbare strategie om gegevens op te halen uit Cassandra in Azure Cosmos DB.

Onderdelen

  • Event Hubs is een volledig beheerd streamingplatform dat miljoenen gebeurtenissen per seconde kan verwerken. Event Hubs biedt een [eindpunt][Azure Event Hubs gebruiken vanuit Apache Kafka-toepassingen] voor Apache Kafka, een veelgebruikt opensource-platform voor stroomverwerking. Wanneer organisaties de eindpuntfunctie gebruiken, hoeven ze geen Kafka-clusters te bouwen en te onderhouden voor stroomverwerking. In plaats daarvan kunnen ze profiteren van de volledig beheerde Kafka-implementatie die Event Hubs biedt.

  • [Azure Cosmos DB][Welkom bij Azure Cosmos DB] is een volledig beheerde NoSQL- en relationele database die replicatie met meerdere masters biedt. Azure Cosmos DB ondersteunt opensource-API's voor veel databases, talen en platforms. Voorbeelden zijn:

    • Apache Cassandra.
    • [Gremlin][Gremlin Graph Traversal Machine and Language].
    • [MongoDB][MongoDB].

    Via [Azure Cosmos DB voor Apache Cassandra][Inleiding tot Azure Cosmos DB voor Apache Cassandra] hebt u toegang tot Azure Cosmos DB-gegevens met behulp van Apache Cassandra-hulpprogramma's, -talen en -stuurprogramma's. Apache Cassandra is een opensource NoSQL-database die geschikt is voor zware schrijfintensieve workloads.

  • Azure Kubernetes Service (AKS) is een maximaal beschikbare, veilige en volledig beheerde Kubernetes-service. [Kubernetes][Kubernetes] is een snel evoluerend opensource-platform voor het beheren van workloads in containers. AKS host opensource-engines voor het verwerken van big data, zoals Apache Spark. Met behulp van AKS kunt u grootschalige stroomverwerkingstaken uitvoeren in een beheerde omgeving.

  • Azure Database for PostgreSQL is een volledig beheerde relationele databaseservice. Het biedt [hoge beschikbaarheid, elastisch schalen, patchen en andere beheermogelijkheden][Wat is Azure Database for PostgreSQL?] voor PostgreSQL. [PostgreSQL][PostgreSQL] is een algemeen geaccepteerd opensource relationeel databasebeheersysteem.

  • Azure Cache voor Redis biedt een gegevensarchief in het geheugen op basis van de Redis-software. [Redis][Redis] is een populair opensource-gegevensarchief in het geheugen. Sessiearchieven, inhoudscaches en andere opslagonderdelen maken gebruik van Redis om de prestaties en schaalbaarheid te verbeteren. Azure Cache voor Redis biedt opensource Redis-mogelijkheden als een volledig beheerde aanbieding.

Alternatieven

U kunt de opensource-compatibele producten en services in deze oplossing vervangen door anderen. Zie [Open source on Azure][Open source on Azure] (Open source in Azure) voor meer informatie over opensource-services die beschikbaar zijn in Azure.

Scenariodetails

Volledig beheerde Azure-gegevensservices met opensource-engines vormen deze streamingoplossing:

  • Azure Event Hubs biedt een Kafka-implementatie voor streamopname.
  • Azure Cosmos DB ondersteunt gebeurtenisopslag in Cassandra.
  • AKS-hosts [Kubernetes][Kubernetes] microservices voor stroomverwerking.
  • Azure Database for PostgreSQL beheert relationele gegevensopslag in [PostgreSQL][PostgreSQL].
  • Azure Cache voor Redis beheert [Redis][Redis] in-memory gegevensarchieven.

Opensource-technologieën bieden veel voordelen. Organisaties kunnen bijvoorbeeld opensourcetechnologieën gebruiken om:

  • Bestaande workloads migreren.
  • Maak gebruik van de brede opensource-community.
  • Beperk de vergrendeling van de leverancier.

Door opensource-technologieën toegankelijk te maken, kunnen Azure-hulpprogramma's en -services organisaties profiteren van deze voordelen en de oplossingen van hun keuze ontwikkelen.

Deze oplossing maakt gebruik van volledig beheerde [Platform as a Service (PaaS)][Wat is PaaS?] diensten. Als gevolg hiervan verwerkt Microsoft patching, SLA-onderhoud (Service Level Agreement) en andere beheertaken. Een ander voordeel is de systeemeigen integratie met de Azure-beveiligingsinfrastructuur.

Potentiële gebruikscases

Deze oplossing is van toepassing op verschillende scenario's:

  • Azure PaaS-services gebruiken om moderne streamingoplossingen te bouwen die gebruikmaken van opensource-technologieën
  • Opensource-oplossingen voor stroomverwerking migreren naar Azure

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

Ontwerp en implementeer elke service met aanbevolen procedures in gedachten. Zie de microsoft-documentatiesite voor richtlijnen voor elke service. Bekijk ook de informatie in de volgende secties:

Prestaties

  • Implementeer [groepsgewijze verbindingen voor Azure Database for PostgreSQL][Aanbevolen procedures voor prestaties voor het gebruik van Azure Database for PostgreSQL – Groepsgewijze verbindingen]. U kunt een bibliotheek voor groepsgewijze verbindingen in de toepassing gebruiken. U kunt ook een verbindingspooler gebruiken, zoals [PgBouncer][PgBouncer] of [Pgpool][Pgpool Wiki]. Het tot stand brengen van een verbinding met PostgreSQL is een dure bewerking. Met groepsgewijze verbindingen kunt u voorkomen dat de prestaties van toepassingen afnemen. PgBouncer is [ingebouwd][PgBouncer in Azure Database for PostgreSQL Flexible Server] in Azure Database for PostgreSQL Flexible Server.

  • Configureer Azure Cosmos DB voor Apache Cassandra voor de beste prestaties met behulp van een geschikte [partitioneringsstrategie][Partitioneren in Azure Cosmos DB voor Apache Cassandra]. Bepaal of u een primaire sleutel voor één veld, een samengestelde primaire sleutel of een samengestelde partitiesleutel wilt gebruiken bij het partitioneren van tabellen.

Schaalbaarheid

  • Houd rekening met uw streamingvereisten bij het kiezen van een [Event Hubs-laag][Prijzen voor Event Hubs]:

    • Voor doorvoervereisten voor het middenbereik van minder dan 120 MBps kunt u de [Premium-laag][Overzicht van Event Hubs Premium (preview)] overwegen. Deze laag wordt elastisch geschaald om te voldoen aan streamingvereisten.
    • Voor high-end streamingworkloads met een inkomend aantal gigabytes aan gegevens, kunt u de [Dedicated-laag][Overzicht van Event Hubs Dedicated] overwegen. Deze laag is een aanbieding met één tenant met een gegarandeerde capaciteit. U kunt toegewezen clusters omhoog en omlaag schalen.
  • Overweeg [automatische schaalaanpassing ingerichte doorvoer][Azure Cosmos-containers en -databases maken met doorvoer voor automatisch schalen] voor Azure Cosmos DB als uw workloads onvoorspelbaar en stekelig zijn. U kunt Azure Cosmos DB configureren voor het gebruik van handmatig ingerichte doorvoer of automatische schaalaanpassing van ingerichte doorvoer. Met automatische schaalaanpassing worden de aanvraageenheden automatisch en onmiddellijk geschaald op basis van uw gebruik.

Beveiliging

Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

  • Gebruik [Azure Private Link][Wat is Azure Private Link?] om Azure-services onderdeel te maken van uw virtuele netwerk. Wanneer u Private Link gebruikt, stroomt verkeer tussen de services en uw netwerk via de Azure-backbone zonder het openbare internet te doorlopen. De Azure-services in deze oplossing ondersteunen Private Link voor geselecteerde SKU's.

  • Controleer het beveiligingsbeleid van uw organisatie. Met Azure Cosmos DB voor Apache Cassandra bieden sleutels toegang tot resources, zoals sleutelruimten en tabellen. De Azure Cosmos DB-instantie slaat deze sleutels op. Voor uw beveiligingsbeleid moet u mogelijk [deze sleutels doorgeven aan een sleutelbeheerservice][Azure Cosmos-sleutels beveiligen met behulp van Azure Key Vault] zoals Azure Key Vault. Zorg er ook voor dat [sleutels draaien][Sleutelrotatie en regeneratie] volgens het beleid van uw organisatie.

Tolerantie

Overweeg het gebruik van beschikbaarheidszones om bedrijfskritieke toepassingen te beschermen tegen storingen in datacenters. De services van deze oplossing ondersteunen beschikbaarheidszones voor geselecteerde SKU's in regio's met beschikbaarheidszone. Raadpleeg de lijst met services die beschikbaarheidszones ondersteunen voor actuele informatie.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Als u de kosten van deze oplossing wilt schatten, gebruikt u de Azure-prijscalculator. Houd ook rekening met deze punten:

  • [Event Hubs][Prijzen voor Event Hubs] is beschikbaar in de categorieën Basic, Standard, Premium en Dedicated. De Premium- of Dedicated-laag is het meest geschikt voor grootschalige streamingworkloads. U kunt doorvoer schalen, dus overweeg om klein te beginnen en vervolgens omhoog te schalen naarmate de vraag toeneemt.

  • Azure Cosmos DB biedt twee modellen:

    • Een ingericht doorvoermodel dat ideaal is voor veeleisende workloads. Dit model is beschikbaar in twee opties voor capaciteitsbeheer: standaard en automatisch schalen.
    • Een serverloos model dat geschikt is voor het uitvoeren van kleine, stekelige workloads.
  • Een AKS-cluster bestaat uit een set knooppunten of virtuele machines (VM's) die worden uitgevoerd in Azure. De kosten van de reken-, opslag- en netwerkonderdelen vormen de primaire kosten van een cluster.

  • Azure Database for PostgreSQL is beschikbaar in de lagen Enkele server en Flexibele server. Verschillende lagen zijn geschikt voor verschillende scenario's, zoals predicable, burstable en high-performance workloads. De kosten zijn voornamelijk afhankelijk van de keuze van rekenknooppunten en opslagcapaciteit. Voor nieuwe workloads kunt u overwegen om de laag Flexibele server te kiezen, omdat deze een breder scala aan [ondersteunde mogelijkheden][Vergelijking tussen enkele server en flexibele server] heeft via de laag Enkele server. Houd er ook rekening mee dat enkele server zich op het pad bevindt om te worden afgeschaft.

  • Azure Cache voor Redis is beschikbaar in meerdere lagen. Deze lagen bieden plaats aan caches die variëren van 250 megabytes tot verschillende terabytes. Naast grootte zijn andere vereisten ook van invloed op de keuze van de laag:

    • Clustering
    • Persistentie
    • Actieve geo-replicatie

Dit scenario implementeren

Houd rekening met deze punten wanneer u deze oplossing implementeert:

  • Wanneer u Event Hubs voor Kafka implementeert, raadpleegt u [Quickstart: Gegevens streamen met Event Hubs met behulp van het Kafka-protocol][Quickstart: Gegevens streamen met Event Hubs met behulp van het Kafka-protocol]. Dit artikel bevat de volgende informatie:

    • Berichten verzenden en ontvangen met Kafka in Event Hubs
    • Voorbeeldcode voor een publicatietoepassing
    • Bestaande Kafka-toepassingen overschakelen naar Event Hubs voor Kafka door configuratiewijzigingen aan te brengen
  • Over Apache Spark:

    • Zie [Uw Apache Spark-toepassing verbinden met Azure Event Hubs][Uw Apache Spark-toepassing verbinden met Azure Event Hubs] [Uw Apache Spark-toepassing verbinden met Azure Event Hubs].
    • Zie [Apache Spark-taken uitvoeren op AKS][Apache Spark-taken uitvoeren op AKS] [Apache Spark-taken uitvoeren op AKS] als u de Spark-toepassing wilt hosten.
  • Overweeg het gebruik van een Java-toepassing om gebeurtenissen naar Cassandra te schrijven. Zie [Quickstart: Een Java-app bouwen voor het beheren van Azure Cosmos DB voor Apache Cassandra-gegevens (v4-stuurprogramma)][Quickstart: Een Java-app bouwen voor het beheren van Azure Cosmos DB voor Apache Cassandra-gegevens (v4-stuurprogramma)].

  • Wanneer u de [Azure Cosmos DB-wijzigingenfeed][Wijzigingenfeed in Azure Cosmos DB] gebruikt, raadpleegt u [Wijzigingenfeed in Azure Cosmos DB voor Apache Cassandra][Wijzigingenfeed in Azure Cosmos DB voor Apache Cassandra] voor deze informatie:

    • Querypredicaten gebruiken in [Cassandra Query Language (CQL)][Cassandra Query Language] om een query uit te voeren op de wijzigingenfeed-API
    • Voorbeeldcode voor een Java-toepassing
  • Raadpleeg [Zelfstudie: Query's uitvoeren op gegevens uit Azure Cosmos DB voor Apache Cassandra] [Zelfstudie: Gegevens opvragen uit Azure Cosmos DB voor Apache Cassandra][Zelfstudie: Gegevens opvragen uit Azure Cosmos DB voor Apache Cassandra] voor informatie over het verwerken van gebeurtenissen die u hebt opgeslagen in Cassandra. Dit artikel bevat ook java-voorbeeldcode voor het gebruik van CQL-opdrachten om gegevens op te halen uit tabellen.

  • Zie [Quickstart: Java en JDBC gebruiken met Azure Database for PostgreSQL][Quickstart: Java en JDBC gebruiken met Azure Database for PostgreSQL][Quickstart: Java en JDBC gebruiken met Azure Database for PostgreSQL] voor informatie over het schrijven van gegevens naar Azure Database for PostgreSQL. Dit artikel bevat ook voorbeeldcode voor het opslaan van gegevens.

  • Zie [Quickstart: Use Azure Cache voor Redis in Java][Quickstart: Use Azure Cache voor Redis in Java][Quickstart: Use Azure Cache voor Redis in Java] (Snelstartgids: Azure Cache voor Redis gebruiken in Java) voor informatie over het opslaan en ophalen van gegevens met Azure Cache voor Redis. Dit artikel bevat ook voorbeeldcode voor Java voor toegang tot een cache.

Medewerkers

Dit artikel wordt bijgewerkt en onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.

Hoofdauteur:

Volgende stappen

Zie de volgende informatie voor meer informatie over gerelateerde oplossingen:

[Cache-Aside-patroon]: .. /.. /patterns/cache-aside.yml The [Cassandra Query Language (CQL)]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html [Cassandra Query Language]: [Wijzigingenfeed in Azure Cosmos DB]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html /azure/cosmos-db/change-feed [Wijzigingenfeed in Azure Cosmos DB voor Apache Cassandra]: /azure/cosmos-db/cassandra-change-feed?tabs=java [Kies een analytische gegevensopslag in Azure]: .. /.. /data-guide/technology-choices/analytical-data-stores.md [Choose a data analytics technology in Azure]: .. /.. /data-guide/technology-choices/analysis-visualizations-reporting.md [Connect your Apache Spark application with Azure Event Hubs]: /azure/event-hubs/event-hubs-kafka-spark-tutorial [Create Azure Cosmos containers and databases with autoscale throughput]: /azure/cosmos-db/provision-throughput-autoscale [Data streaming with AKS]: .. /.. /solution-ideas/articles/data-streaming-scenario.yml [Prijzen van Event Hubs]: https://azure.microsoft.com/pricing/details/event-hubs [Veelgestelde vragen over Azure Cosmos DB voor Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-faq The [Gremlin Graph Traversal Machine and Language]: [Gremlin Graph Traversal Machine and Language]: https://tinkerpop.apache.org/gremlin.html [Introduction to Azure Cosmos DB for Apache Cassandra]: https://tinkerpop.apache.org/gremlin.html /azure/cosmos-db/cassandra/cassandra-introduction [Introduction to Azure Data Lake Storage Gen2]: /azure/storage/blobs/data-lake-storage-introduction [Sleutelrotatie en regeneratie]: /azure/cosmos-db/secure-access-to-data?tabs=using-primary-key#key-rotation [Kubernetes]: https://kubernetes.io [MongoDB]: [MongoDB]: [MongoDB]: https://www.mongodb.com Open source op Azure]: https://azure.microsoft.com/overview/open-source/ [Overzicht van Event Hubs Dedicated]: /azure/event-hubs/event-hubs-dedicated-overview [Overzicht van Event Hubs Premium (preview)]: /azure/event-hubs/event-hubs-premium-overview [Parquet]: https://parquet.apache.org [Partitionering in Azure Cosmos DB voor Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-partitioning [Best practices voor prestaties voor het gebruik van Azure Database for PostgreSQL – Connection Pooling]: https://azure.microsoft.com/blog/performance-best-practices-for-using-azure-database-for-postgresql-connection-pooling [PgBouncer]: https://www.pgbouncer.org [Pgpool Wiki]: [PostgreSQL]: https://www.pgpool.net/mediawiki/index.php/Main_Page [ https://www.postgresql.org Quickstart: Een Java-app bouwen voor het beheren van Azure Cosmos DB voor Apache Cassandra-gegevens (v4-stuurprogramma)]: /azure/cosmos-db/cassandra/manage-data-java-v4-sdk [Quickstart: Gegevens streamen met Event Hubs met behulp van het Kafka-protocol]: /azure/event-hubs/event-hubs-quickstart-kafka-enabled-event-hubs [Quickstart: Use Azure Cache voor Redis in Java]: /azure/azure-cache-for-redis/cache-java-get-started [Quickstart: Use Java and JDBC with Azure Database for PostgreSQL]: /azure/postgresql/flexible-server/connect-java?tabs=passwordless [Redis]: https://redis.io [Apache Spark-taken uitvoeren op AKS]: /azure/aks/spark-job [Azure Cosmos-sleutels beveiligen met behulp van Azure Key Vault]: /azure/cosmos-db/access-secrets-from-keyvault [Zelfstudie: Gegevens opvragen uit Azure Cosmos DB voor Apache Cassandra]: /azure/cosmos-db/cassandra/query-data [Azure Event Hubs gebruiken vanuit Apache Kafka-toepassingen]: /azure/event-hubs/event-hubs-for-kafka-ecosystem-overview [Visio-versie van architectuurdiagram]: https://arch-center.azureedge.net/US-1874059-open-source-data-engine-stream-processing-architecture.vsdx [Welkom bij Azure Cosmos DB]: /azure/cosmos-db/introduction [Wat is Azure Database for MySQL?]: /azure/mysql/overview [Wat is Azure Database for PostgreSQL?]: /azure/postgresql/overview [Wat is Azure Database for PostgreSQL? Azure Private Link?]: /azure/private-link/private-link-overview [Wat is PaaS?]: https://azure.microsoft.com/overview/what-is-paas/ [Wat is Power BI?]: /power-bi/fundamentals/power-bi-overview [Vergelijking tussen enkele server en flexibele server]: /azure/postgresql/flexible-server/concepts-compare-single-server-flexible-server#comparison-table [PgBouncer in Azure Database for PostgreSQL Flexible Server]: /azure/postgresql/flexible-server/concepts-pgbouncer