I den här artikeln visas ett exempel på en strömningslösning. Fullständigt hanterade Azure-datatjänster som kör motorer med öppen källkod utgör lösningen:
- Azure Event Hubs en Kafka-implementering för dataströmsinmatning.
- Azure Cosmos DB har stöd för händelselagring i Cassandra.
- Azure Kubernetes Service (AKS) är värd för Kubernetes-mikrotjänster för bearbetning av dataströmmar.
- Azure Database for PostgreSQL hanterar relationsdatalagring i PostgreSQL.
- Azure Cache for Redis hanterar datalager i minnet i Redis.
Tekniker med öppen källkod har 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 hanterade PaaS-tjänster (plattform som en tjänst). Därför hanterar Microsoft korrigering, underhåll av serviceavtal (SLA) och andra hanteringsuppgifter. En annan fördel är den inbyggda integreringen med Azures säkerhetsinfrastruktur.
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 strömningslösningar som använder tekniker med öppen källkod
- Migrera lösningar för dataströmbearbetning med öppen källkod till Azure
Arkitektur
Ladda ned en Visio-fil med den här arkitekturen.
Den Event Hubs för Apache Kafka strömmar händelser från Kafka-producenter.
Apache Spark förbrukar händelser. AKS tillhandahåller en hanterad miljö för Apache Spark jobb.
Ett program som använder API för Cassandra för Azure Cosmos DB skriver händelser till Cassandra. Den här databasen fungerar som en lagringsplattform för händelser. AKS är värd för mikrotjänster som skriver till Cassandra.
Ändringsflödesfunktionen i Azure Cosmos DB bearbetar händelser i realtid.
Schemalagda program kör batchorienterad bearbetning på händelser som lagras i Cassandra.
Lagrar referensdata som berikar händelseinformation. Batchorienterade program skriver den berikade händelseinformationen till PostgreSQL. Vanliga referensdatalager är:
- Azure Data Lake Storage, som kan lagra data i öppna format som Parquet.
- Relationsdatalager med öppen källkod som PostgreSQL och MySQL.
Ett batchorienterat program bearbetar Cassandra-data. Programmet lagrar bearbetade data i Azure Database for PostgreSQL. Det här relationsdatalagret tillhandahåller data till underordnade program som kräver berikad information.
Rapporteringsprogram och verktyg analyserar PostgreSQL-databasdata. Du kan till Power BI ansluta till databasen med hjälp av Azure Database for PostgreSQL anslutningsappen. Den här rapporttjänsten visar sedan omfattande visuella objekt av data.
Azure Cache for Redis en minnescache. I den här lösningen innehåller cachen data om kritiska händelser. Ett program lagrar data till cachen och hämtar data från cachen.
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 eller en liknande strategi för att hämta data från Cassandra i Azure Cosmos DB.
Komponenter
Event Hubs är en helt hanterad strömningsplattform som kan bearbeta miljontals händelser per sekund. Event Hubs en slutpunkt förApache Kafka, en plattform för strömbearbetning med öppen källkod som används ofta. När organisationer använder slutpunktsfunktionen behöver de inte skapa och underhålla Kafka-kluster för bearbetning av dataströmmar. I stället kan de dra nytta av den fullständigt hanterade Kafka-implementering som Event Hubs erbjuder.
Azure Cosmos DB är en NoSQL-databas med flera modeller som erbjuder replikering med flera original. Azure Cosmos DB har stöd för API:er med öppen källkod för många databaser, språk och plattformar. Exempel:
Via API för Cassandrakan 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.
AKS är en mycket tillgänglig, säker och fullständigt hanterad Kubernetes-tjänst. Kubernetes är en snabbt växande plattform med öppen källkod för hantering av arbetsbelastningar i containrar. 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 strömbearbetningsjobb i en hanterad miljö.
Azure Database for PostgreSQL är en fullständigt hanterad relationsdatabastjänst. Den ger hög tillgänglighet, elastisk skalning, korrigeringar och andra hanteringsfunktioner för PostgreSQL. PostgreSQL är ett vanligt hanteringssystem för relationsdatabaser med öppen källkod.
Azure Cache for Redis tillhandahåller ett minnesbaserat datalager baserat på Redis-programvaran. 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 de produkter och tjänster som är kompatibla 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.
Överväganden
Utforma och implementera varje tjänst med bästa praxis i åtanke. Riktlinjer för varje tjänst finns i Microsoft Docs. Granska även informationen i följande avsnitt:
Saker att tänka på gällande prestanda
Implementera anslutningspooler för Azure Database for PostgreSQL. Du kan använda ett bibliotek för anslutningspooler i programmet. Eller så kan du använda en anslutningspool, till exempel PgBouncer eller Pgpool. Att upprätta en anslutning med PostgreSQL är en dyr åtgärd. Med anslutningspooler kan du undvika att försämra programmets prestanda.
Konfigurera Azure Cosmos DB API för Cassandra för bästa prestanda med hjälp av en lämplig partitioneringsstrategi. Bestäm om du vill använda en enskild fältnyckel, en sammansatt primärnyckel eller en sammansatt partitionsnyckel vid partitionering av tabeller.
Skalbarhetsöverväganden
Ta hänsyn till dina strömningskrav när du väljer Event Hubs nivå:
- För dataflödeskrav på mindre än 120 MBps i medelintervallet bör du Premium nivån. Den här nivån skalas elastiskt för att uppfylla strömningskraven.
- För avancerade direktuppspelningsarbetsbelastningar med en ingress på flera gigabyte data kan du använda den dedikerade nivån. Den här nivån är ett erbjudande för en enskild klientorganisation med en garanterad kapacitet. Du kan skala dedikerade kluster upp och ned.
Överväg att automatiskt skala etablerat dataflöde för Azure Cosmos DB om dina arbetsbelastningar är oförutsägbara och toppar. Du kan konfigurera Azure Cosmos DB att använda manuellt etablerat dataflöde eller automatiskt skalningsetableerat dataflöde. Med autoskalning skalar Azure automatiskt och omedelbart enheter för begäran per sekund enligt din användning.
Säkerhetsöverväganden
Använd Azure Private Link 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 ditt nätverk via Azure-stamnätet utan att gå via det offentliga Internet. Azure-tjänsterna i den här lösningen stöder Private Link valda SKU:er.
Kontrollera organisationens säkerhetsprinciper. Med Azure Cosmos DB API för Cassandra ger nycklar åtkomst till resurser som nyckelutrymmen och tabeller. Den Azure Cosmos DB instansen lagrar dessa nycklar. Dina säkerhetsprinciper kan kräva att du sprider dessa nycklar till en nyckelhanteringstjänst, till exempel Azure Key Vault. Se även till att rotera nycklar enligt organisationens principer.
Att tänka på om återhämtning
Ö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. Om du vill ha uppdaterad information kan du läsa listan över tjänster som stöder tillgänglighetszoner.
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 kafka kan du gå till Snabbstart: Dataströmning med Event Hubs med Hjälp av 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 byter du befintliga Kafka-program till Event Hubs kafka genom att göra konfigurationsändringar
Angående Apache Spark:
- Information om hur du skapar ett grundläggande Spark-program finns i Anslut ditt Apache Spark-program med Azure Event Hubs.
- Information om hur du kör Spark-programmet på AKS finns i 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 API för Cassandra data (v4-drivrutin).
När du använder Azure Cosmos DB för ändringsflödetfinns den här informationen i Ändringsfeed i Azure Cosmos DB-API:et för Cassandra:
- Så här använder du fråge predikat i Cassandra Query Language (CQL) för att fråga api:et för ändringsflöde
- 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 ett API för Cassandra-konto i Azure Cosmos DB. 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 Azure Database for PostgreSQL med ett batchorienterat program finns i 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. Den här artikeln innehåller även Java-exempelkod för åtkomst till ett cacheminne.
Prissättning
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 finns på nivåerna Basic, Standard, Premium och Dedikerad. Nivån Premium dedikerad är bäst för storskaliga strömningsarbetsbelastningar. Du kan skala dataflödet, så överväg att starta i liten skala och sedan skala upp när efterfrågan ökar.
Azure Cosmos DB erbjuder två modeller:
- En modell för etablerat dataflöde som är perfekt för krävande arbetsbelastningar. Den här modellen är tillgänglig i två kapacitetshanteringsalternativ: standard och autoskalning.
- En serverlös modell som passar bra för att köra små, högbelastningsarbetsbelastningar.
Ett AKS-kluster består av en uppsättning noder eller virtuella datorer (VM) som körs i Azure. Kostnaden för beräknings-, lagrings- och nätverkskomponenter utgör ett klusters primära kostnader.
Azure Database for PostgreSQL är tillgängligt på nivåerna Enskild server, Flexibel server Hyperskala (Citus) servernivå. Olika nivåer kan hantera olika scenarier, till exempel predikatbara, burst-sbara och högpresterande arbetsbelastningar. Kostnaderna beror huvudsakligen på valet av beräkningsnoder och lagringskapacitet.
Azure Cache for Redis är tillgänglig på flera nivåer. Dessa nivåer kan hantera 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
Nästa steg
- Apache Kafka utvecklarguide för Azure Event Hubs
- Vanliga frågor och svar om API för Cassandra i Azure Cosmos DB
- 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: