Tento článek představuje příklad řešení streamování, které používá plně spravované datové služby Azure.
Architektura
Stáhněte si [soubor Visia][Diagram architektury verze Visia] této architektury.
Workflow
Centra událostí pro funkce Apache Kafka streamují události od výrobců Kafka.
Apache Spark spotřebovává události. Azure Kubernetes Service (AKS) poskytuje spravované prostředí pro úlohy Apache Sparku.
Aplikace, která používá Službu Azure Cosmos DB pro Apache Cassandra, zapisuje události do Cassandra. Tato databáze slouží jako platforma úložiště pro události. AKS hostuje mikroslužby, které zapisují do Cassandra.
Funkce kanálu změn služby Azure Cosmos DB zpracovává události v reálném čase.
Naplánované aplikace spouštějí dávkové zpracování událostí uložených v Cassandře.
Úložiště referenčních dat obohacují informace o událostech. Aplikace orientované na dávky zapisují rozšířené informace o událostech do PostgreSQL. Mezi typická referenční úložiště dat patří:
- [Azure Data Lake Storage][Úvod do Azure Data Lake Storage Gen2], který může ukládat data v otevřených formátech, jako je [Parquet][Parquet].
- Open source relační úložiště dat, jako je [PostgreSQL][Co je Azure Database for PostgreSQL?] a [MySQL][Co je Azure Database for MySQL?].
Dávková aplikace zpracovává data Cassandra. Tato aplikace ukládá zpracovávaná data ve službě Azure Database for PostgreSQL. Toto relační úložiště dat poskytuje data podřízeným aplikacím, které vyžadují rozšířené informace.
Aplikace a nástroje pro vytváření sestav analyzují data databáze PostgreSQL. Například [Power BI][Co je Power BI?] se připojí k databázi pomocí konektoru Azure Database for PostgreSQL. Tato služba generování sestav pak zobrazí bohaté vizuály dat.
Azure Cache for Redis poskytuje mezipaměť v paměti. V tomto řešení mezipaměť obsahuje data o kritických událostech. Aplikace ukládá data do mezipaměti a načítá data z mezipaměti.
Weby a další aplikace používají data uložená v mezipaměti ke zlepšení doby odezvy. Někdy nejsou data v mezipaměti dostupná. V takových případech tyto aplikace používají model [doplňování mezipaměti][Model doplňování mezipaměti] nebo podobnou strategii načítání dat z Cassandra ve službě Azure Cosmos DB.
Komponenty
Event Hubs je plně spravovaná streamovací platforma, která dokáže zpracovat miliony událostí za sekundu. Event Hubs poskytuje [koncový bod][Použití služby Azure Event Hubs z aplikací Apache Kafka] pro Apache Kafka, široce používanou opensourcovou platformu pro zpracování datových proudů. Když organizace používají funkci koncového bodu, nemusí vytvářet a udržovat clustery Kafka pro zpracování datových proudů. Místo toho můžou těžit z plně spravované implementace Kafka, kterou event Hubs nabízí.
[Azure Cosmos DB][Vítá vás Azure Cosmos DB] je plně spravovaná noSQL a relační databáze, která nabízí replikaci s více hlavními servery. Azure Cosmos DB podporuje opensourcová rozhraní API pro mnoho databází, jazyků a platforem. Příkladem může být:
- Apache Cassandra.
- [Gremlin][Stroj a jazyk procházení grafů Gremlin].
- [MongoDB][MongoDB].
Prostřednictvím [Azure Cosmos DB for Apache Cassandra][Úvod do služby Azure Cosmos DB pro Apache Cassandra] můžete přistupovat k datům Azure Cosmos DB pomocí nástrojů, jazyků a ovladačů Apache Cassandra. Apache Cassandra je opensourcová databáze NoSQL, která je vhodná pro náročné úlohy náročné na zápis.
Azure Kubernetes Service (AKS) je vysoce dostupná, zabezpečená a plně spravovaná služba Kubernetes. [Kubernetes][Kubernetes] je rychle se vyvíjející opensourcová platforma pro správu kontejnerizovaných úloh. AKS hostuje opensourcové moduly pro zpracování velkých objemů dat, jako je Apache Spark. Pomocí AKS můžete ve spravovaném prostředí spouštět rozsáhlé úlohy zpracování datových proudů.
Azure Database for PostgreSQL je plně spravovaná relační databázová služba. Poskytuje [vysokou dostupnost, elastické škálování, opravy a další možnosti správy][Co je Azure Database for PostgreSQL?] pro PostgreSQL. [PostgreSQL][PostgreSQL] je široce přijímaný opensourcový systém pro správu relačních databází.
Azure Cache for Redis poskytuje úložiště dat v paměti založené na softwaru Redis. [Redis][Redis] je oblíbené opensourcové úložiště dat v paměti. Úložiště relací, mezipaměti obsahu a další součásti úložiště využívají Redis ke zlepšení výkonu a škálovatelnosti. Azure Cache for Redis poskytuje opensourcové funkce Redis jako plně spravovanou nabídku.
Alternativy
Produkty a služby kompatibilní s open source v tomto řešení můžete nahradit jinými. Podrobnosti o opensourcových službách dostupných v Azure najdete v tématu [Open source v Azure][Open source v Azure].
Podrobnosti scénáře
Plně spravované datové služby Azure, které spouštějí opensourcové moduly, tvoří toto řešení streamování:
- Azure Event Hubs nabízí implementaci Kafka pro příjem streamů.
- Azure Cosmos DB podporuje úložiště událostí v Cassandře.
- AKS hostuje mikroslužby [Kubernetes][Kubernetes] pro zpracování datových proudů.
- Azure Database for PostgreSQL spravuje úložiště relačních dat v [PostgreSQL][PostgreSQL].
- Azure Cache for Redis spravuje úložiště dat [Redis][Redis] v paměti.
Opensourcové technologie nabízejí mnoho výhod. Organizace můžou například používat opensourcové technologie k:
- Migrace existujících úloh
- Klepněte na širokou opensourcovou komunitu.
- Omezte uzamčení dodavatele.
Díky zpřístupnění opensourcových technologií pomáhají nástroje a služby Azure organizacím využívat tyto výhody a vyvíjet řešení podle svého výběru.
Toto řešení používá plně spravovanou službu [platforma jako služba (PaaS)][Co je PaaS?] služby. V důsledku toho Microsoft zpracovává opravy, údržbu smlouvy o úrovni služeb (SLA) a další úlohy správy. Další výhodou je nativní integrace s infrastrukturou zabezpečení Azure.
Potenciální případy použití
Toto řešení platí pro různé scénáře:
- Použití služeb Azure PaaS k vytváření moderních streamovacích řešení využívajících opensourcové technologie
- Migrace opensourcových řešení pro zpracování datových proudů do Azure
Důležité informace
Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.
Navrhujte a implementujte jednotlivé služby s ohledem na osvědčené postupy. Pokyny pro každou službu najdete na webu dokumentace Microsoftu. Projděte si také informace v následujících částech:
Výkon
Implementujte [sdružování připojení pro Azure Database for PostgreSQL][Osvědčené postupy z hlediska výkonu pro používání služby Azure Database for PostgreSQL – sdružování připojení]. V aplikaci můžete použít knihovnu sdružování připojení. Nebo můžete použít nástroj pro sdružování připojení, například [PgBouncer][PgBouncer] nebo [Pgpool][Wiki pgpool]. Vytvoření připojení s PostgreSQL je náročná operace. Při sdružování připojení se můžete vyhnout snížení výkonu aplikace. PgBouncer je [integrovaný][PgBouncer na flexibilním serveru Azure Database for PostgreSQL] na flexibilním serveru Azure Database for PostgreSQL.
Nakonfigurujte Službu Azure Cosmos DB pro Apache Cassandra pro zajištění nejlepšího výkonu pomocí vhodné [strategie dělení][Dělení ve službě Azure Cosmos DB pro Apache Cassandra]. Rozhodněte se, jestli při dělení tabulek použijete jeden primární klíč pole, složený primární klíč nebo složený klíč oddílu.
Škálovatelnost
Při volbě úrovně [Event Hubs][Ceny služby Event Hubs]:
- V případě požadavků na propustnost střední úrovně nižší než 120 MB/s zvažte [úroveň Premium][Přehled služby Event Hubs Premium (Preview)]. Tato úroveň se elasticky škáluje tak, aby splňovala požadavky na streamování.
- U úloh s vysokým streamováním s příchozím přenosem dat s gigabajty zvažte [vyhrazenou úroveň][Přehled služby Event Hubs Dedicated]. Tato úroveň je nabídka s jedním tenantem s garantovanou kapacitou. Vyhrazené clustery můžete škálovat nahoru a dolů.
Zvažte [automaticky zřízenou propustnost][Vytvoření kontejnerů a databází Azure Cosmos s propustností automatického škálování] pro službu Azure Cosmos DB, pokud jsou vaše úlohy nepředvídatelné a rychlé. Službu Azure Cosmos DB můžete nakonfigurovat tak, aby používala ručně zřízenou propustnost nebo zřízenou propustnost automatického škálování. S automatickým škálováním Azure automaticky a okamžitě škáluje jednotky žádostí za sekundu podle vašeho využití.
Zabezpečení
Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.
Použít [Azure Private Link][Co je Azure Private Link?] aby byly služby Azure součástí vaší virtuální sítě. Když používáte Službu Private Link, provoz mezi službami a vaší sítí prochází přes páteřní síť Azure bez procházení veřejného internetu. Služby Azure v tomto řešení podporují službu Private Link pro vybrané skladové položky.
Zkontrolujte zásady zabezpečení vaší organizace. Pomocí Služby Azure Cosmos DB pro Apache Cassandra poskytují klíče přístup k prostředkům, jako jsou prostory klíčů a tabulky. Instance Azure Cosmos DB tyto klíče ukládá. Vaše zásady zabezpečení můžou vyžadovat, abyste [tyto klíče rozšířili do služby pro správu klíčů][Zabezpečení klíčů Azure Cosmos pomocí služby Azure Key Vault], jako je Azure Key Vault. Nezapomeňte také [otočit klíče][Obměna klíčů a regeneraci] podle zásad vaší organizace.
Odolnost
Zvažte použití zón dostupnosti k ochraně důležitých podnikových aplikací před selháními datacentra. Služby tohoto řešení podporují zóny dostupnosti pro vybrané skladové položky v oblastech s podporou zóny dostupnosti. Aktuální informace najdete v seznamu služeb, které podporují zóny dostupnosti.
Optimalizace nákladů
Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.
Pokud chcete odhadnout náklady na toto řešení, použijte cenovou kalkulačku Azure. Mějte také na paměti tyto body:
[Event Hubs][Ceny služby Event Hubs] jsou k dispozici na úrovních Basic, Standard, Premium a Dedicated. Úroveň Premium nebo Dedicated je nejvhodnější pro úlohy streamování ve velkém měřítku. Propustnost můžete škálovat, proto zvažte spuštění malého a následného vertikálního navýšení kapacity při nárůstu poptávky.
Azure Cosmos DB nabízí dva modely:
- Model zřízené propustnosti, který je ideální pro náročné úlohy. Tento model je k dispozici ve dvou možnostech správy kapacity: standardní a automatické škálování.
- Bezserverový model, který je vhodný pro spouštění malých, spiky úloh.
Cluster AKS se skládá ze sady uzlů nebo virtuálních počítačů, které běží v Azure. Náklady na výpočetní prostředky, úložiště a síťové komponenty tvoří primární náklady na cluster.
Azure Database for PostgreSQL je k dispozici na úrovni jednoúčelového serveru a flexibilního serveru. Různé úrovně se zaměřují na různé scénáře, jako jsou predikovatelné, nárazové a vysoce výkonné úlohy. Náklady závisí hlavně na výběru výpočetních uzlů a kapacity úložiště. U nových úloh zvažte volbu vrstvy flexibilního serveru, protože má širší škálu [podporovaných funkcí][Porovnání mezi jednoúčelovým a flexibilním serverem] na úrovni jednoúčelového serveru. Všimněte si také, že jeden server je na cestě k vyřazení.
Azure Cache for Redis je k dispozici ve více úrovních. Tyto vrstvy umožňují ukládání do mezipaměti, které jsou v rozsahu od 250 megabajtů až po několik terabajtů. Kromě velikosti ovlivňují i další požadavky na volbu úrovně:
- Clustering
- Uchování
- Aktivní geografická replikace
Nasazení tohoto scénáře
Při nasazování tohoto řešení mějte na paměti tyto body:
Když nasadíte službu Event Hubs pro Kafka, přečtěte si článek [Rychlý start: Streamování dat se službou Event Hubs pomocí protokolu Kafka][Rychlý start: Streamování dat se službou Event Hubs pomocí protokolu Kafka]. Tento článek obsahuje následující informace:
- Jak odesílat a přijímat zprávy pomocí Kafka ve službě Event Hubs
- Ukázkový kód pro aplikaci publikování
- Jak přepnout existující aplikace Kafka do služby Event Hubs pro Kafka provedením změn konfigurace
Týkající se Apache Sparku:
- Informace o vytvoření základní aplikace Spark najdete v tématu [Připojení aplikace Apache Spark s Azure Event Hubs][Připojení aplikace Apache Spark s Azure Event Hubs].
- Pokud chcete hostovat aplikaci Spark v AKS, přečtěte si téma [Spouštění úloh Apache Sparku v AKS][Spouštění úloh Apache Sparku v AKS].
Zvažte použití aplikace Java k zápisu událostí do Cassandra. Další informace najdete v tématu [Rychlý start: Vytvoření aplikace v Javě pro správu dat Azure Cosmos DB for Apache Cassandra (ovladač v4)][Rychlý start: Vytvoření aplikace v Javě pro správu dat Azure Cosmos DB pro Apache Cassandra (ovladač v4)].
Pokud používáte [kanál změn služby Azure Cosmos DB][Kanál změn ve službě Azure Cosmos DB], projděte si [Kanál změn ve službě Azure Cosmos DB pro Apache Cassandra][Kanál změn ve službě Azure Cosmos DB pro Apache Cassandra] s informacemi:
- Použití predikátů dotazů v [Cassandra Query Language (CQL)][Dotazovací jazyk Cassandra] k dotazování rozhraní API kanálu změn
- Ukázkový kód pro aplikaci v Javě
Informace o zpracování událostí uložených v Cassandře najdete v tématu [Kurz: Dotazování dat ze služby Azure Cosmos DB pro Apache Cassandra][Kurz: Dotazování dat ze služby Azure Cosmos DB pro Apache Cassandra]. Tento článek obsahuje také ukázkový kód Java pro použití příkazů CQL k načtení dat z tabulek.
Informace o zápisu dat do služby Azure Database for PostgreSQL pomocí dávkové aplikace najdete v tématu [Rychlý start: Použití Javy a JDBC se službou Azure Database for PostgreSQL][Rychlý start: Použití Javy a JDBC se službou Azure Database for PostgreSQL]. Tento článek obsahuje také ukázkový kód Java pro ukládání dat.
Informace o úložišti a načítání dat ve službě Azure Cache for Redis najdete v tématu [Rychlý start: Použití služby Azure Cache for Redis v Javě][Rychlý start: Použití služby Azure Cache for Redis v Javě]. Tento článek obsahuje také ukázkový kód Java pro přístup k mezipaměti.
Přispěvatelé
Tento článek aktualizuje a udržuje Microsoft. Původně byla napsána následujícími přispěvateli.
Hlavní autor:
- Ajit Ananthram | Architekt cloudového řešení
Další kroky
- Příručka pro vývojáře Apache Kafka pro Službu Azure Event Hubs
- [Nejčastější dotazy ke službě Azure Cosmos DB pro Apache Cassandra][Nejčastější dotazy ke službě Azure Cosmos DB pro Apache Cassandra]
- Osvědčené postupy pro vytváření aplikace pomocí Služby Azure Database for PostgreSQL
- Nejčastější dotazy ke službě Azure Cache for Redis
Související prostředky
Informace o souvisejících řešeních najdete v následujících informacích:
- Návrh architektury analýzy
- [Volba analytického úložiště dat v Azure][Volba analytického úložiště dat v Azure]
- [Volba technologie analýzy dat v Azure][Volba technologie analýzy dat v Azure]
- Azure Kubernetes při zpracování datových proudů událostí
- [Streamování dat pomocí AKS][Streamování dat pomocí AKS]
[Model doplňování mezipaměti]: .. /.. /patterns/cache-aside.yml [Cassandra Query Language (CQL)]: [Cassandra Query Language]: [Kanál změn ve službě Azure Cosmos DB]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html /azure/cosmos-db/change-feed [Kanál změn ve službě Azure Cosmos DB pro Apache Cassandra]: https://cassandra.apache.org/doc/latest/cassandra/cql/index.html /azure/cosmos-db/cassandra/cassandra-change-feed?tabs=java [Volba analytického úložiště dat v Azure]: .. /.. /data-guide/technology-choices/analytical-data-stores.md [Volba technologie analýzy dat v Azure]: .. /.. /data-guide/technology-choices/analysis-visualizations-reporting.md [Připojení aplikace Apache Spark s Azure Event Hubs]: /azure/event-hubs/event-hubs-kafka-spark-tutorial [Vytvoření kontejnerů a databází Azure Cosmos s propustností automatického škálování]: /azure/cosmos-db/provision-propustnost-autoscale [Streamování dat pomocí AKS]: .. /.. /solution-ideas/articles/data-streaming-scenario.yml [Ceny služby Event Hubs]: https://azure.microsoft.com/pricing/details/event-hubs [Nejčastější dotazy ke službě Azure Cosmos DB pro 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 [Introduction to Azure Cosmos DB for Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-introduction [Introduction to Azure Data Lake Storage Gen2]: /azure/storage/blobs/data-lake-storage-introduction [Obměna klíčů a regenerace]: /azure/cosmos-db/secure-access-to-data?tabs=using-primary-key#key-rotation [Kubernetes]: [MongoDB]: https://kubernetes.io https://www.mongodb.com [Open source v Azure]: https://azure.microsoft.com/overview/open-source/ [Přehled služby Event Hubs Dedicated]: /azure/event-hubs/event-hubs-dedicated-overview [Přehled služby Event Hubs Premium (Preview)]: /azure/event-hubs/event-hubs-premium-overview [Parquet]: https://parquet.apache.org [Dělení ve službě Azure Cosmos DB pro Apache Cassandra]: /azure/cosmos-db/cassandra/cassandra-partitioning [Osvědčené postupy z hlediska výkonu při používání služby Azure Database for PostgreSQL – sdružování připojení]: 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 [Rychlý start: Vytvoření aplikace Java pro správu dat Azure Cosmos DB pro Apache Cassandra (ovladač v4)]: /azure/cosmos-db/cassandra/manage-data-java-v4-sdk [Rychlý start: Streamování dat se službou Event Hubs pomocí protokolu Kafka]: /azure/event-hubs/event-hubs-quickstart-kafka-enabled-event-hubs [Rychlý start: Použití služby Azure Cache for Redis v Javě]: /azure/azure-cache-for-redis/cache-java-get-started [Rychlý start: Použití Javy a JDBC se službou Azure Database for PostgreSQL]: //azure/postgresql/flexible-server/connect-java?tabs=passwordless [Redis]: https://redis.io [Spouštění úloh Apache Sparku v AKS]: /azure/aks/spark-job [Zabezpečení klíčů Azure Cosmos pomocí služby Azure Key Vault]: /azure/cosmos-db/access-secrets-from-keyvault [Kurz: Dotazování dat ze služby Azure Cosmos DB pro Apache Cassandra]: /azure/cosmos-db/cassandra/query-data [Použití služby Azure Event Hubs z aplikací Apache Kafka]: /azure/event-hubs/event-hubs-for-kafka-ecosystem-overview [Diagram architektury ve verzi Visia] : [Vítá vás Azure Cosmos DB]: https://arch-center.azureedge.net/US-1874059-open-source-data-engine-stream-processing-architecture.vsdx /azure/cosmos-db/introduction [Co je Azure Database for MySQL?]: /azure/mysql/overview [Co je Azure Database for PostgreSQL?]: /azure/postgresql/overview [Co je Azure Private Link?]: /azure/private-link/private-link-overview [Co je PaaS?]: https://azure.microsoft.com/overview/what-is-paas/ [Co je Power BI?]: /power-bi/fundamentals/power-bi-overview [Porovnání mezi jedním serverem a flexibilním serverem]: /azure/postgresql/flexible-server/concepts-compare-single-server-flexible-server#comparison-table [PgBouncer na flexibilním serveru Azure Database for PostgreSQL]: /azure/postgresql/flexible-server/concepts-pgbouncer