Den här artikeln visar ett exempel på en strömningslösning som använder fullständigt hanterade Azure-datatjänster.
Arkitektur
Ladda ned en [Visio-fil][Visio-version av arkitekturdiagram] för den här arkitekturen.
Arbetsflöde
Händelsehubbarna för Apache Kafka-funktionen strömmar händelser från Kafka-producenter.
Apache Spark förbrukar händelser. Azure Kubernetes Service (AKS) tillhandahåller en hanterad miljö för Apache Spark-jobben.
Ett program som använder Azure Cosmos DB för Apache Cassandra skriver händelser till Cassandra. Den här databasen fungerar som en lagringsplattform för händelser. AKS är värd för de mikrotjänster som skriver till Cassandra.
Funktionen för ändringsflöde i Azure Cosmos DB bearbetar händelser i realtid.
Schemalagda program kör batchorienterad bearbetning på händelser som lagras i Cassandra.
Lagring av referensdata berikar händelseinformation. Batchorienterade program skriver den berikade händelseinformationen till PostgreSQL. Vanliga referensdatalager är:
- [Azure Data Lake Storage][Introduktion till Azure Data Lake Storage Gen2], som kan lagra data i öppna format som [Parquet][Parquet].
- Relationsdatalager med öppen källkod som [PostgreSQL][Vad är Azure Database for PostgreSQL?] och [MySQL][Vad är Azure Database for MySQL?].
Ett batchorienterat program bearbetar Cassandra-data. Det programmet lagrar bearbetade data i Azure Database for PostgreSQL. Det här relationsdatalagret tillhandahåller data till underordnade program som kräver utökad information.
Rapporteringsprogram och verktyg analyserar PostgreSQL-databasdata. Till exempel [Power BI][Vad är Power BI?] ansluter till databasen med hjälp av Azure Database for PostgreSQL-anslutningsappen. Den här rapporteringstjänsten visar sedan omfattande visuella objekt av data.
Azure Cache for Redis tillhandahåller en minnesintern cache. I den här lösningen innehåller cacheminnet data om kritiska händelser. Ett program lagrar data i cacheminnet och hämtar data från cacheminnet.
Webbplatser och andra program använder cachelagrade data för att förbättra svarstiderna. Ibland är data inte tillgängliga i cacheminnet. I dessa fall använder dessa program [cache-aside-mönstret][Cache-Aside-mönster] eller en liknande strategi för att hämta data från Cassandra i Azure Cosmos DB.
Komponenter
Event Hubs är en fullständigt hanterad strömningsplattform som kan bearbeta miljontals händelser per sekund. Event Hubs tillhandahåller en [slutpunkt][Använd Azure Event Hubs från Apache Kafka-program] för Apache Kafka, en allmänt använd plattform för dataströmbearbetning med öppen källkod. När organisationer använder slutpunktsfunktionen behöver de inte skapa och underhålla Kafka-kluster för dataströmbearbetning. I stället kan de dra nytta av den fullständigt hanterade Kafka-implementeringen som Event Hubs erbjuder.
[Azure Cosmos DB][Välkommen till Azure Cosmos DB] är en fullständigt hanterad NoSQL och relationsdatabas som erbjuder replikering med flera original. Azure Cosmos DB stöder API:er med öppen källkod för många databaser, språk och plattformar. Exempel:
- Apache Cassandra.
- [Gremlin][Gremlin Graph Traversal Machine and Language].
- [MongoDB][MongoDB].
Via [Azure Cosmos DB för Apache Cassandra][Introduktion till Azure Cosmos DB för Apache Cassandra] kan du komma åt Azure Cosmos DB-data med hjälp av Apache Cassandra-verktyg, språk och drivrutiner. Apache Cassandra är en NoSQL-databas med öppen källkod som passar bra för tunga skrivintensiva arbetsbelastningar.
Azure Kubernetes Service (AKS) är en mycket tillgänglig, säker och fullständigt hanterad Kubernetes-tjänst. [Kubernetes][Kubernetes] är en snabbt växande plattform med öppen källkod för hantering av containerbaserade arbetsbelastningar. AKS är värd för stordatabearbetningsmotorer med öppen källkod, till exempel Apache Spark. Med hjälp av AKS kan du köra storskaliga dataströmbearbetningsjobb i en hanterad miljö.
Azure Database for PostgreSQL är en fullständigt hanterad relationsdatabastjänst. Det ger [hög tillgänglighet, elastisk skalning, korrigering och andra hanteringsfunktioner][Vad är Azure Database for PostgreSQL?] för PostgreSQL. [PostgreSQL][PostgreSQL] är ett allmänt antaget relationsdatabashanteringssystem med öppen källkod.
Azure Cache for Redis tillhandahåller ett minnesinternt datalager baserat på Redis-programvaran. [Redis][Redis] är ett populärt datalager med öppen källkod i minnet. Sessionslager, innehållscacheminnen och andra lagringskomponenter använder Redis för att förbättra prestanda och skalbarhet. Azure Cache for Redis tillhandahåller Redis-funktioner med öppen källkod som ett fullständigt hanterat erbjudande.
Alternativ
Du kan ersätta produkter och tjänster med öppen källkod i den här lösningen med andra. Mer information om tjänster med öppen källkod som är tillgängliga i Azure finns i [Öppen källkod på Azure][Öppen källkod i Azure].
Information om scenario
Fullständigt hanterade Azure-datatjänster som kör motorer med öppen källkod utgör den här strömningslösningen:
- Azure Event Hubs erbjuder en Kafka-implementering för dataströminmatning.
- Azure Cosmos DB stöder händelselagring i Cassandra.
- AKS är värd för [Kubernetes][Kubernetes] mikrotjänster för dataströmbearbetning.
- Azure Database for PostgreSQL hanterar relationsdatalagring i [PostgreSQL][PostgreSQL].
- Azure Cache for Redis hanterar [Redis][Redis] minnesinterna datalager.
Tekniker med öppen källkod erbjuder många fördelar. Organisationer kan till exempel använda tekniker med öppen källkod för att:
- Migrera befintliga arbetsbelastningar.
- Utnyttja den breda communityn med öppen källkod.
- Begränsa leverantörslåsning.
Genom att göra tekniker med öppen källkod tillgängliga hjälper Azure-verktyg och -tjänster organisationer att dra nytta av dessa fördelar och utveckla de lösningar som de väljer.
Den här lösningen använder fullständigt hanterad [plattform som en tjänst (PaaS)][Vad är PaaS?] tjänster. Därför hanterar Microsoft korrigeringar, serviceavtalsunderhåll (SLA) och andra hanteringsuppgifter. En annan fördel är den interna integreringen med Azure-säkerhetsinfrastrukturen.
Potentiella användningsfall
Den här lösningen gäller för olika scenarier:
- Använda Azure PaaS-tjänster för att skapa moderna streaminglösningar som använder tekniker med öppen källkod
- Migrera dataströmbearbetningslösningar med öppen källkod till Azure
Att tänka på
Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.
Utforma och implementera varje tjänst med bästa praxis i åtanke. Riktlinjer för varje tjänst finns på Microsofts dokumentationswebbplats. Läs även informationen i följande avsnitt:
Prestanda
Implementera [anslutningspooler för Azure Database for PostgreSQL][Metodtips för prestanda för användning av Azure Database for PostgreSQL – anslutningspooler]. Du kan använda ett bibliotek för anslutningspooler i programmet. Du kan också använda en anslutningspool som [PgBouncer][PgBouncer] eller [Pgpool][Pgpool Wiki]. Att upprätta en anslutning till PostgreSQL är en dyr åtgärd. Med anslutningspooler kan du undvika att försämra programprestanda. PgBouncer är [inbyggd][PgBouncer i Azure Database for PostgreSQL – flexibel server] i Azure Database for PostgreSQL – flexibel server.
Konfigurera Azure Cosmos DB för Apache Cassandra för bästa prestanda med hjälp av en lämplig [partitioneringsstrategi][Partitionering i Azure Cosmos DB för Apache Cassandra]. Bestäm om du vill använda en primärnyckel för ett enda fält, en sammansatt primärnyckel eller en sammansatt partitionsnyckel vid partitionering av tabeller.
Skalbarhet
Ta hänsyn till dina strömningskrav när du väljer en [Event Hubs-nivå][Event Hubs-priser]:
- För dataflödeskrav mellan intervall på mindre än 120 Mbit/s bör du överväga [Premium-nivån][Översikt över Event Hubs Premium (förhandsversion)]. Den här nivån skalas elastiskt för att uppfylla strömningskraven.
- För avancerade strömningsarbetsbelastningar med en ingress av gigabyte data bör du överväga [Dedikerad nivå][Översikt över Event Hubs Dedicated]. Den här nivån är ett erbjudande med en enda klientorganisation med en garanterad kapacitet. Du kan skala upp och ned dedikerade kluster.
Överväg [autoskalningsetablerad dataflöde][Skapa Azure Cosmos-containrar och databaser med autoskalningsdataflöde] för Azure Cosmos DB om dina arbetsbelastningar är oförutsägbara och spikiga. Du kan konfigurera Azure Cosmos DB att använda manuellt etablerat dataflöde eller autoskalningsetablerad dataflöde. Med autoskalning skalar Azure automatiskt och omedelbart enheter för begäranden per sekund enligt din användning.
Säkerhet
Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.
Använd [Azure Private Link][Vad är Azure Private Link?] för att göra Azure-tjänster till en del av ditt virtuella nätverk. När du använder Private Link flödar trafiken mellan tjänsterna och nätverket över Azure-stamnätet utan att passera det offentliga Internet. Azure-tjänsterna i den här lösningen stöder Private Link för valda SKU:er.
Kontrollera organisationens säkerhetsprinciper. Med Azure Cosmos DB för Apache Cassandra ger nycklar åtkomst till resurser som nyckelutrymmen och tabeller. Azure Cosmos DB-instansen lagrar dessa nycklar. Dina säkerhetsprinciper kan kräva att du [sprider dessa nycklar till en nyckelhanteringstjänst][Skydda Azure Cosmos-nycklar med Azure Key Vault] som Azure Key Vault. Se också till att [rotera nycklar][Nyckelrotation och regenerering] enligt organisationens principer.
Motståndskraft
Överväg att använda tillgänglighetszoner för att skydda affärskritiska program mot datacenterfel. Den här lösningens tjänster stöder tillgänglighetszoner för valda SKU:er i tillgänglighetszonaktiverade regioner. Uppdaterad information finns i listan över tjänster som stöder tillgänglighetszoner.
Kostnadsoptimering
Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.
Om du vill beräkna kostnaden för den här lösningen använder du priskalkylatorn för Azure. Tänk också på följande:
[Event Hubs][Priser för Event Hubs] är tillgängliga på nivåerna Basic, Standard, Premium och Dedicated. Premium- eller Dedicated-nivån passar bäst för storskaliga strömningsarbetsbelastningar. Du kan skala dataflödet, så överväg att börja litet och sedan skala upp när efterfrågan ökar.
Azure Cosmos DB erbjuder två modeller:
- En etablerad dataflödesmodell som är idealisk för krävande arbetsbelastningar. Den här modellen finns i två kapacitetshanteringsalternativ: standard och autoskalning.
- En serverlös modell som passar bra för att köra små, spetsiga arbetsbelastningar.
Ett AKS-kluster består av en uppsättning noder eller virtuella datorer som körs i Azure. Kostnaden för beräknings-, lagrings- och nätverkskomponenterna utgör ett klusters primära kostnader.
Azure Database for PostgreSQL är tillgängligt på nivåerna Enskild server och Flexibel server. Olika nivåer hanterar olika scenarier, till exempel predikatbara, burstbara och högpresterande arbetsbelastningar. Kostnaderna beror främst på valet av beräkningsnoder och lagringskapacitet. För nya arbetsbelastningar bör du överväga att välja nivån Flexibel server eftersom den har ett bredare utbud av [funktioner som stöds][Jämförelse mellan enskild server och flexibel server] över nivån Enskild server. Observera också att enskild server är på väg till utfasning.
Azure Cache for Redis är tillgängligt på flera nivåer. Dessa nivåer rymmer cacheminnen som sträcker sig från 250 megabyte till flera terabyte. Förutom storlek påverkar andra krav även valet av nivå:
- Klustring
- Bevarande
- Aktiv geo-replikering
Distribuera det här scenariot
Tänk på följande när du distribuerar den här lösningen:
När du distribuerar Event Hubs för Kafka läser du [Snabbstart: Dataströmning med Event Hubs med Kafka-protokollet][Snabbstart: Dataströmning med Event Hubs med Kafka-protokollet]. Den här artikeln innehåller följande information:
- Skicka och ta emot meddelanden med Kafka i Event Hubs
- Exempelkod för ett publiceringsprogram
- Så här växlar du befintliga Kafka-program till Event Hubs för Kafka genom att göra konfigurationsändringar
Om Apache Spark:
- Information om hur du skapar ett grundläggande Spark-program finns i [Connect your Apache Spark application with Azure Event Hubs][Connect your Apache Spark application with Azure Event Hubs].
- Information om hur du är värd för Spark-programmet i AKS finns i [Köra Apache Spark-jobb på AKS][Köra Apache Spark-jobb på AKS].
Överväg att använda ett Java-program för att skriva händelser till Cassandra. Mer information finns i [Snabbstart: Skapa en Java-app för att hantera Azure Cosmos DB för Apache Cassandra-data (v4-drivrutin)][Snabbstart: Skapa en Java-app för att hantera Azure Cosmos DB för Apache Cassandra-data (v4-drivrutin)].
När du använder [Azure Cosmos DB-ändringsflödet][Ändringsflöde i Azure Cosmos DB] kan du läsa [Ändringsflöde i Azure Cosmos DB för Apache Cassandra][Ändringsflöde i Azure Cosmos DB för Apache Cassandra] för den här informationen:
- Så här använder du frågepredikat i [Cassandra Query Language (CQL)][Cassandra Query Language] för att fråga ändringsflödes-API:et
- Exempelkod för ett Java-program
Information om hur du bearbetar de händelser som du har lagrat i Cassandra finns i [Självstudie: Fråga efter data från Azure Cosmos DB för Apache Cassandra][Självstudie: Fråga efter data från Azure Cosmos DB för Apache Cassandra]. Den här artikeln innehåller även Java-exempelkod för att använda CQL-kommandon för att hämta data från tabeller.
Information om hur du skriver data till Azure Database for PostgreSQL med ett batchorienterat program finns i [Snabbstart: Använda Java och JDBC med Azure Database for PostgreSQL][Snabbstart: Använda Java och JDBC med Azure Database for PostgreSQL]. Den här artikeln innehåller även Java-exempelkod för lagring av data.
Information om datalagring och hämtning med Azure Cache for Redis finns i [Snabbstart: Använda Azure Cache for Redis i Java][Snabbstart: Använda Azure Cache for Redis i Java]. Den här artikeln innehåller även Java-exempelkod för åtkomst till en cache.
Deltagare
Den här artikeln uppdateras och underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudförfattare:
- Ajit Ananthram | Molnlösningsarkitekt
Nästa steg
- Apache Kafka-utvecklarguide för Azure Event Hubs
- [Vanliga frågor och svar om Azure Cosmos DB för Apache Cassandra][Vanliga frågor och svar om Azure Cosmos DB för Apache Cassandra]
- Metodtips för att skapa ett program med Azure Database for PostgreSQL
- Vanliga frågor och svar om Azure Cache for Redis
Relaterade resurser
Mer information om relaterade lösningar finns i följande information:
- Design av analysarkitektur
- [Välj ett analysdatalager i Azure][Välj ett analysdatalager i Azure]
- [Välj en dataanalysteknik i Azure][Välj en dataanalysteknik i Azure]
- Azure Kubernetes i händelseströmbearbetning
- [Dataströmning med AKS][Dataströmning med AKS]
[Cache-Aside mönster]: .. /.. /patterns/cache-aside.yml [Cassandra Query Language (CQL)]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html [Cassandra Query Language]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html [Ändringsflöde i Azure Cosmos DB]: /azure/cosmos-db/change-feed [Ändringsflöde i Azure Cosmos DB för Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-change-feed?tabs=java [Välj ett analysdatalager i 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 [Dataströmning med AKS]: .. /.. /solution-ideas/articles/data-streaming-scenario.yml [Event Hubs pricing]: https://azure.microsoft.com/pricing/details/event-hubs [Vanliga frågor om Azure Cosmos DB för Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-faq [Gremlin Graph Traversal Machine and Language]: https://tinkerpop.apache.org/gremlin.html [Gremlin Graph Traversal Machine and Language]: https://tinkerpop.apache.org/gremlin.html [Introduktion till Azure Cosmos DB för Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-introduction [Introduktion till Azure Data Lake Storage Gen2]: /azure/storage/blobs/data-lake-storage-introduction [Key rotation and regeneration]: /azure/cosmos-db/secure-access-to-data?tabs=using-primary-key#key-rotation [Kubernetes]: https://kubernetes.io [MongoDB]: https://www.mongodb.com [Open source on Azure]: https://azure.microsoft.com/overview/open-source/ [Översikt över Event Hubs Dedicated]: /azure/event-hubs/event-hubs-dedicated-overview [Översikt över Event Hubs Premium (förhandsversion)]: /azure/event-hubs/event-hubs-premium-overview [Parquet]: https://parquet.apache.org [Partitionering i Azure Cosmos DB för Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-partitioning [Metodtips för prestanda för att använda Azure Database for PostgreSQL – anslutningspool]: https://azure.microsoft.com/blog/performance-best-practices-for-using-azure-database-for-postgresql-connection-pooling [PgBouncer]: https://www.pgbouncer.org [Pgpool Wiki]: https://www.pgpool.net/mediawiki/index.php/Main_Page [PostgreSQL]: https://www.postgresql.org [Snabbstart: Skapa en Java-app för att hantera Azure Cosmo db för Apache Cassandra-data (v4 Driver)]: /azure/cosmos-db/cassandra/manage-data-java-v4-sdk [Snabbstart: Dataströmning med Event Hubs med Kafka-protokollet]: /azure/event-hubs/event-hubs-quickstart-kafka-enabled-event-hubs [Snabbstart: Använd Azure Cache for Redis i Java]: /azure/azure-cache-for-redis/cache-java-get-started [Snabbstart: Använda Java och JDBC med Azure Database for PostgreSQL]: /azure/postgresql/flexible-server/connect-java?tabs=passwordless [Redis]: https://redis.io [Köra Apache Spark-jobb på AKS]: /azure/aks/spark-job [Secure Azure Cosmos keys using Azure Key Vault]: /azure/cosmos-db/access-secrets-from-keyvault [Tutorial: Query data from Azure Cosmos DB for Apache Cassandra]: /azure/cosmos-db/cassandra/query-data [Använd Azure Event Hubs från Apache Kafka-program]: /azure/event-hubs/event-hubs-for-kafka-ecosystem-overview [Visio version av arkitekturdiagram]: https://arch-center.azureedge.net/US-1874059-open-source-data-engine-stream-processing-architecture.vsdx [Välkommen till Azure Cosmos DB]: /azure/well-architected/service-guides/cosmos-db [Vad är Azure Database for MySQL?]: /azure/mysql/overview [Vad är Azure Database for PostgreSQL?]: /azure/postgresql/overview [Vad är Azure Private Link?]: /azure/private-link/private-link-overview [Vad är PaaS?]: https://azure.microsoft.com/overview/what-is-paas/ [Vad är Power BI?]: /power-bi/fundamentals/power-bi-overview [Jämförelse mellan enskild server och flexibel server]: /azure/postgresql/flexible-server/concepts-compare-single-server-flexible-server#comparison-table [PgBouncer i Azure Database for PostgreSQL – flexibel server]: /azure/postgresql/flexible-server/concepts-pgbouncer