Cet article présente un exemple de solution de streaming qui utilise des services de données Azure entièrement managés.
Architecture
Téléchargez un [fichier Visio][Version Visio du diagramme d’architecture] de cette architecture.
Workflow
Les hubs d’événements pour les fonctionnalités Apache Kafka diffusent les événements des producteurs Kafka.
Apache Spark consomme les événements. Azure Kubernetes Service (AKS) fournit un environnement managé pour les travaux Apache Spark.
Une application utilisant Azure Cosmos DB for Apache Cassandra écrit des événements dans Cassandra. Cette base de données sert de plateforme de stockage pour les événements. AKS héberge les microservices qui écrivent dans Cassandra.
La fonctionnalité de flux de modification d’Azure Cosmos DB traite les événements en temps réel.
Les applications planifiées exécutent un traitement par lot sur les événements stockés dans Cassandra.
Les magasins de données de référence enrichissent les informations sur les événements. Les applications orientées lot écrivent les informations enrichies sur les événements enrichis dans PostgreSQL. Les magasins de données de référence classiques sont les suivants :
- [Azure Data Lake Storage][Présentation d’Azure Data Lake Storage Gen2], qui peut stocker des données dans des formats ouverts tels que [Parquet][Parquet].
- Magasins de données relationnelles open source comme [PostgreSQL][Qu’est-ce que Azure Database pour PostgreSQL ?] et [MySQL][Qu’est-ce que Azure Database pour MySQL ?].
Une application orientée lot traite les données Cassandra. Cette application stocke les données traitées dans Azure Database pour PostgreSQL. Ce magasin de données relationnelles fournit des données à des applications en aval qui requièrent des informations enrichies.
Les outils et applications de rapport analysent les données de la base de données PostgreSQL. Par exemple, [Power BI][Qu’est-ce que Power BI ?] se connecte à la base de données à l’aide du connecteur Azure Database pour PostgreSQL. Ce service de rapport affiche ensuite des éléments visuels enrichis des données.
Azure Cache pour Redis fournit un cache en mémoire. Dans cette solution, le cache contient des données sur les événements critiques. Une application stocke des données dans le cache et les en extrait.
Les sites web et d’autres applications utilisent les données en cache pour améliorer les temps de réponse. Parfois, des données ne sont pas disponibles dans le cache. Dans ces cas, ces applications utilisent le [modèle cache-aside][Modèle cache-aside] ou une stratégie similaire pour récupérer des données de Cassandra dans Azure Cosmos DB.
Composants
Azure Event Hubs est une plateforme de diffusion en continu complètement managée, capable de traiter des millions d’événements par seconde. Event Hubs fournit un [point de terminaison][Utiliser Azure Event Hubs à partir d’applications Apache Kafka] pour Apache Kafka, une plateforme de traitement de flux open source largement utilisée. Lorsque les organisations utilisent la fonctionnalité de point de terminaison, elles n’ont pas besoin de créer et gérer des clusters Kafka pour le traitement de flux. Au lieu de cela, elles peuvent bénéficier de l’implémentation Kafka complètement managée d’Event Hubs.
[Azure Cosmos DB][Bienvenue dans Azure Cosmos DB] est une base de données NoSQL et relationnelle entièrement managée qui offre une réplication multimaître. Azure Cosmos DB prend en charge les API open source pour un grand nombre de bases de données, langages et plateformes. Voici quelques exemples :
- Apache Cassandra.
- [Gremlin][Gremlin Graph Traversal Machine and Language].
- [MongoDB][MongoDB].
Grâce à [Azure Cosmos DB pour Apache Cassandra][Présentation d’Azure Cosmos DB pour Apache Cassandra], vous pouvez accéder aux données Azure Cosmos DB à l’aide d’outils, de langages et de pilotes Apache Cassandra. Apache Cassandra est une base de données NoSQL open source qui convient parfaitement pour les charges de travail conséquentes nécessitant un grand nombre d’écritures.
Azure Kubernetes Service (AKS) est un service Kubernetes complètement managé, sécurisé et hautement disponible. [Kubernetes][Kubernetes] est une plateforme open source en évolution rapide pour la gestion des charges de travail conteneurisées. AKS héberge des moteurs de traitement du Big Data open source, tels qu’Apache Spark. AKS vous permet d’exécuter des tâches de traitement de flux à grande échelle dans un environnement managé.
Azure Database pour PostgreSQL est un service de base de données relationnelle complètement managé. Il fournit [haute disponibilité, mise à l’échelle élastique, mise à jour corrective et autres fonctionnalités de gestion][Qu’est-ce que Azure Database pour PostgreSQL ?] pour PostgreSQL. [PostgreSQL][PostgreSQL] est un système de gestion de base de données relationnelle open source largement adopté.
Azure Cache pour Redis fournit un magasin de données en mémoire basé sur le logiciel Redis. [Redis][Redis] est un magasin de données open source populaire en mémoire. Les magasins de session, les caches de contenu et d’autres composants de stockage utilisent Redis pour améliorer les performances et la scalabilité. Azure Cache pour Redis fournit des fonctionnalités Redis open source en tant qu’offre complètement managée.
Autres solutions
Vous pouvez remplacer les produits et services compatibles open source de cette solution par d’autres. Pour plus d’informations sur les services open source disponibles dans Azure, consultez [Open source sur Azure][Open source sur Azure].
Détails du scénario
Cette solution de streaming est constituée de services de données Azure complètement managés qui exécutent des moteurs open source :
- Azure Event Hubs offre une implémentation Kafka pour l’ingestion du flux.
- Azure Cosmos DB prend en charge le stockage des événements dans Cassandra.
- AKS héberge [Kubernetes][Kubernetes] des microservices pour le traitement de flux.
- Azure Database pour PostgreSQL gère le stockage de données relationnelles dans [PostgreSQL][PostgreSQL].
- Azure Cache pour Redis gère [Redis][Redis] dans les magasins de données en mémoire.
Les technologies open source offrent de nombreux avantages. Par exemple, les organisations peuvent utiliser des technologies open source pour ce qui suit :
- Migrer des charges de travail existantes.
- Profiter de la vaste communauté open source.
- Limiter le verrouillage du fournisseur.
En rendant les technologies open source accessibles, les outils et services Azure aident les organisations à tirer parti de ces avantages, ainsi qu’à développer les solutions de leur choix.
Cette solution utilise entièrement managé [platform as a service (PaaS)][Qu’est-ce que PaaS ?] financiers. Par conséquent, Microsoft gère les mises à jour correctives, la maintenance du contrat de niveau de service (SLA) et d’autres tâches de gestion. L’intégration native à l’infrastructure de sécurité Azure constitue un autre avantage.
Cas d’usage potentiels
Cette solution s’applique à différents scénarios :
- Utilisation de services PaaS Azure pour créer des solutions de diffusion en continu modernes qui utilisent des technologies open source.
- Migration de solutions de traitement de flux open source vers Azure.
Considérations
Ces considérations implémentent les piliers d’Azure Well-Architected Framework qui est un ensemble de principes directeurs qui permettent d’améliorer la qualité d’une charge de travail. Pour plus d’informations, consultez Microsoft Azure Well-Architected Framework.
Concevez et implémentez chaque service en gardant les meilleures pratiques à l’esprit. Pour obtenir des instructions sur chaque service, consultez le site de documentation Microsoft. Passez également en revue les informations des sections suivantes :
Performances
Implémentez [regroupement de connexions pour Azure Database pour PostgreSQL][Meilleures pratiques en matière de performances pour l’utilisation de Azure Database pour PostgreSQL – Regroupement de connexions]. Vous pouvez utiliser une bibliothèque de regroupement de connexions dans l’application. Vous pouvez également utiliser un pool de connexions tel que [PgBouncer][PgBouncer] ou [Pgpool][Pgpool Wiki]. L’établissement d’une connexion avec PostgreSQL est une opération coûteuse. Un regroupement de connexions vous permet d’éviter de dégrader les performances de l’application. PgBouncer est [intégré][PgBouncer dans Azure Database pour PostgreSQL serveur flexible] dans Azure Database pour PostgreSQL serveur flexible.
Configurez Azure Cosmos DB pour Apache Cassandra pour obtenir de meilleures performances à l’aide d’une [stratégie de partitionnement][Partitionnement dans Azure Cosmos DB pour Apache Cassandra]. Décidez si vous voulez utiliser une clé primaire à champ unique, une clé primaire composée ou une clé de partition composite lors du partitionnement de tables.
Extensibilité
Prenez en compte vos exigences de diffusion en continu lors du choix d’un [niveau Event Hubs][Tarification d’Event Hubs] :
- Pour les exigences de débit intermédiaires de moins de 120 Mbits/s, tenez compte du [niveau Premium][Vue d’ensemble d’Event Hubs Premium (préversion)]. Ce niveau adapte l’échelle de manière élastique en réponse aux exigences de diffusion en continu.
- Pour les charges de travail de diffusion en continu haut de gamme avec une entrée de gigaoctets de données, tenez compte du [niveau dédié][Vue d’ensemble d’Event Hubs Dedicated]. Ce niveau est une offre à locataire unique avec une capacité garantie. Vous pouvez mettre à l’échelle des clusters dédiés.
Envisagez [débit provisionné automatiquement][Créer des conteneurs et des bases de données Azure Cosmos avec débit de mise à l’échelle automatique] pour Azure Cosmos DB si vos charges de travail sont imprévisibles et spiky. Vous pouvez configurer Azure Cosmos DB pour utiliser un débit approvisionné manuellement ou un débit approvisionné en mode de mise à l’échelle automatique. Avec la mise à l’échelle automatique, Azure met automatiquement et instantanément à l’échelle les unités de requête par seconde en fonction de votre utilisation.
Sécurité
La sécurité fournit des garanties contre les attaques délibérées, et contre l’utilisation abusive de vos données et systèmes importants. Pour plus d’informations, consultez Vue d’ensemble du pilier Sécurité.
Utiliser [Azure Private Link][Qu’est-ce qu’Azure Private Link ?] pour faire partie des services Azure de votre réseau virtuel. Lorsque vous utilisez Private Link, le trafic entre les services et votre réseau circule sur la dorsale Azure sans transiter par l’Internet public. Les services Azure de cette solution prennent en charge Private Link pour les références (SKU) sélectionnées.
Vérifiez les stratégies de sécurité de votre organisation. Avec Azure Cosmos DB for Apache Cassandra, des clés donnent accès à des ressources telles que des espaces et tables de clés. L’instance Azure Cosmos DB stocke ces clés. Vos stratégies de sécurité peuvent vous obliger à [propager ces clés vers un service de gestion des clés][Sécuriser les clés Azure Cosmos à l’aide d’Azure Key Vault] telles qu’Azure Key Vault. Veillez également à [faire pivoter les clés][Rotation et régénération des clés] en fonction des stratégies de votre organisation.
Résilience
Envisagez d’utiliser des zones de disponibilité pour protéger des applications vitales pour l’entreprise contre des défaillances du centre de données. Les services de cette solution prennent en charge les zones de disponibilité pour les références SKU sélectionnées dans les régions avec zone de disponibilité. Pour des informations à jour, consultez la liste des services qui prennent en charge les zones de disponibilité.
Optimisation des coûts
L’optimisation des coûts consiste à examiner les moyens de réduire les dépenses inutiles et d’améliorer l’efficacité opérationnelle. Pour plus d’informations, consultez Vue d’ensemble du pilier d’optimisation des coûts.
Pour estimer le coût de cette solution, utilisez la Calculatrice de prix Azure. Gardez également à l’esprit les points suivants :
[Event Hubs][Tarification Event Hubs] est disponible dans les niveaux De base, Standard, Premium et Dédié. Les niveaux Premium et Dédié sont idéaux pour les charges de travail de diffusion en continu à grande échelle. Étant donné que vous pouvez mettre à l’échelle le débit, songez à commencer petit, puis à évoluer à mesure que la demande augmente.
Azure Cosmos DB offre deux modèles :
- Un modèle de débit approvisionné idéal pour les charges de travail exigeantes. Ce modèle est disponible dans deux options de gestion de la capacité : standard et mise à l’échelle automatique.
- Un modèle serverless adapté à l’exécution de petites charges de travail pointues.
Un cluster AKS se compose d’un ensemble de nœuds, ou machines virtuelles, qui s’exécutent dans Azure. Les composants de calcul, de stockage et de mise en réseau constituent l’essentiel du coût d’un cluster.
Azure Database pour PostgreSQL est disponible dans les niveaux Serveur unique et Serveur flexible. Les différents niveaux répondent à différents scénarios, tels que des charges de travail prévisibles, extensibles et hautes performances. Les coûts dépendent principalement du choix des nœuds de calcul et de la capacité de stockage. Pour les nouvelles charges de travail, envisagez de choisir le niveau Serveur flexible, car il dispose d’un plus large éventail de [fonctionnalités prises en charge][Comparaison entre serveur unique et serveur flexible] sur le niveau Serveur unique. Notez également que Serveur unique est en voie d'obsolescence.
Azure Cache pour Redis est disponible en plusieurs niveaux. Ces niveaux prennent en charge des caches allant de 250 Mo à plusieurs To. Outre la taille, d’autres exigences affectent le choix du niveau :
- Clustering
- Persistance
- La géoréplication active
Déployer ce scénario
Lorsque vous déployez cette solution, tenez compte des points suivants :
Lorsque vous déployez Event Hubs pour Kafka, reportez-vous à [Démarrage rapide : Streaming de données avec Event Hubs à l’aide du protocole Kafka][Démarrage rapide : Streaming de données avec Event Hubs à l’aide du protocole Kafka]. Cet article fournit les informations suivantes :
- Comment envoyer et recevoir des messages avec Kafka dans Event Hubs
- Exemple de code pour une application de publication
- Comment basculer des applications Kafka existantes vers Event Hubs pour Kafka en apportant des changements de configuration
En ce qui concerne Apache Spark :
- Pour plus d’informations sur la création d’une application Spark de base, consultez [Connecter votre application Apache Spark avec Azure Event Hubs][Connecter votre application Apache Spark à Azure Event Hubs].
- Pour héberger l’application Spark sur AKS, consultez [Exécution de travaux Apache Spark sur AKS][Exécution de travaux Apache Spark sur AKS].
Envisagez d’utiliser une application Java pour écrire des événements dans Cassandra. Pour plus d’informations, consultez [Démarrage rapide : Créer une application Java pour gérer les données Azure Cosmos DB pour Apache Cassandra (v4 Driver)][Démarrage rapide : Créer une application Java pour gérer les données Azure Cosmos DB pour Apache Cassandra (v4 Driver)].
Lorsque vous utilisez le [flux de modification Azure Cosmos DB][Flux de modification dans Azure Cosmos DB], reportez-vous à [Flux de modification dans Azure Cosmos DB pour Apache Cassandra][Flux de modification dans Azure Cosmos DB pour Apache Cassandra] pour obtenir ces informations :
- Comment utiliser les prédicats de requête dans [Langage de requête Cassandra (CQL)][Langage de requête Cassandra] pour interroger l’API de flux de modification
- Exemple de code pour une application Java
Pour plus d’informations sur le traitement des événements que vous avez stockés dans Cassandra, reportez-vous à [Tutoriel : Interroger des données à partir d’Azure Cosmos DB pour Apache Cassandra][Tutoriel : Interroger des données à partir d’Azure Cosmos DB pour Apache Cassandra]. Cet article contient également un exemple de code Java montrant l’utilisation de commandes CQL afin de récupérer des données à partir de tables.
Pour plus d’informations sur l’écriture de données dans Azure Database pour PostgreSQL avec une application orientée lots, consultez [Démarrage rapide : Utiliser Java et JDBC avec Azure Database pour PostgreSQL][Démarrage rapide : Utiliser Java et JDBC avec Azure Database pour PostgreSQL]. Cet article contient également un exemple de code Java pour le stockage de données.
Pour plus d’informations sur le stockage et la récupération des données avec Azure Cache pour Redis, consultez [Démarrage rapide : Utiliser Azure Cache pour Redis en Java][Démarrage rapide : Utiliser Azure Cache pour Redis en Java]. Cet article contient également un exemple de code Java pour accéder à un cache.
Contributeurs
Cet article est mis à jour et géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteur principal :
- Ajit Ananthram | Architecte de solution cloud
Étapes suivantes
- Guide du développeur Apache Kafka pour Azure Event Hubs
- [Forum aux questions sur Azure Cosmos DB pour Apache Cassandra][Forum aux questions sur Azure Cosmos DB pour Apache Cassandra]
- Bonnes pratiques pour créer une application avec Azure Database pour PostgreSQL
- FAQ sur Azure Cache pour Redis
Ressources associées
Pour découvrir les solutions associées, consultez les informations suivantes :
- Conception d’une architecture d’analyse
- [Choisir un magasin de données analytiques dans Azure][Choisir un magasin de données analytiques dans Azure]
- [Choisir une technologie d’analytique des données dans Azure][Choisir une technologie d’analytique des données dans Azure]
- Azure Kubernetes dans le traitement de flux d’événements
- [Streaming de données avec AKS][Streaming de données avec AKS]
[Modèle Cache-Aside] : .. /.. /patterns/cache-aside.yml Le [langage de requête Cassandra (CQL)] : [Langage de requête Cassandra] : https://cassandra.apache.org/doc/latest/cassandra/cql/index.html https://cassandra.apache.org/doc/latest/cassandra/cql/index.html [Flux de modification dans Azure Cosmos DB] : /azure/cosmos-db/change-feed [Flux de modification dans Azure Cosmos DB pour Apache Cassandra] : /azure/cosmos-db/cassandra-change-feed ?tabs=java [Choisir un magasin de données analytiques dans Azure] : .. /.. /data-guide/technology-choices/analytical-data-stores.md [Choisir une technologie d’analytique des données dans Azure] : .. /.. /data-guide/technology-choices/analysis-visualisations-reporting.md [Connecter votre application Apache Spark à Azure Event Hubs] : /azure/event-hubs/event-hubs-kafka-spark-tutorial [Créer des conteneurs et des bases de données Azure Cosmos avec débit de mise à l’échelle automatique] : /azure/cosmos-db/provision-débit-autoscale [Streaming de données avec AKS] : .. /.. /solution-ideas/articles/data-streaming-scenario.yml [Tarification Event Hubs] : https://azure.microsoft.com/pricing/details/event-hubs [Forum aux questions sur Azure Cosmos DB pour Apache Cassandra] : /azure/cosmos-db/cassandra/cassandra-faq The [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 à Azure Cosmos DB pour Apache Cassandra] : /azure/cosmos-db/cassandra/cassandra-introduction [Introduction à Azure Data Lake Storage Gen2] : /azure/storage/blobs/data-lake-storage-introduction [Rotation et régénération des clés] : /azure/cosmos-db/secure-access-to-data ?tabs=using-primary-key#key-rotation [Kubernetes] : https://kubernetes.io [MongoDB] : https://www.mongodb.com [Open source sur Azure] : https://azure.microsoft.com/overview/open-source/ [Vue d’ensemble d’Event Hubs Dedicated] : /azure/event-hubs/event-hubs-dedicated-overview [Vue d’ensemble d’Event Hubs Premium (préversion)] : /azure/event-hubs/event-hubs-premium-overview [Parquet] : https://parquet.apache.org [Partitionnement dans Azure Cosmos DB pour Apache Cassandra] : /azure/cosmos-db/cassandra/cassandra-partitioning [Meilleures pratiques en matière de performances pour l’utilisation de Azure Database pour PostgreSQL – Regroupement de connexions] : 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 [Démarrage rapide : Créer une application Java pour gérer les données Azure Cosmos DB pour Apache Cassandra (v4 Driver)] : /azure/cosmos-db/cassandra/manage-data-java-v4-sdk [Démarrage rapide : Streaming de données avec Event Hubs à l’aide du protocole Kafka] : /azure/event-hubs/event-hubs-quickstart-kafka-enabled-event-hubs [Démarrage rapide : Utiliser Azure Cache pour Redis en Java] : /azure/azure-cache-for-redis/cache-java-get-started [Démarrage rapide : Utiliser Java et JDBC avec Azure Database pour PostgreSQL] : /azure/postgresql/flexible-server/connect-java ?tabs=passwordless [Redis] : https://redis.io [Exécution de travaux Apache Spark sur AKS] : /azure/aks/spark-job [Sécuriser les clés Azure Cosmos à l’aide d’Azure Key Vault] : /azure/cosmos-db/access-secrets-from-keyvault [[. Tutoriel : Interroger des données à partir d’Azure Cosmos DB pour Apache Cassandra] : /azure/cosmos-db/cassandra/query-data [Utiliser Azure Event Hubs à partir d’applications Apache Kafka] : /azure/event-hubs/event-hubs-for-kafka-ecosystem-overview [Visio version de diagramme d’architecture] : https://arch-center.azureedge.net/US-1874059-open-source-data-engine-stream-processing-architecture.vsdx [Bienvenue dans Azure Cosmos DB] : /azure/cosmos-db/introduction [Qu’est-ce que Azure Database pour MySQL ?] : /azure/mysql/overview [Qu’est-ce que Azure Database pour PostgreSQL ?] : /azure/postgresql/overview [Qu’est-ce qu’Azure Private Link ?] : /azure/private-link-overview [Qu’est-ce que PaaS ?] : https://azure.microsoft.com/overview/what-is-paas/ [Qu’est-ce que Power BI ?] : /power-bi/fundamentals/power-bi-overview [Comparaison entre serveur unique et serveur flexible] : /azure/postgresql/flexible-server/concepts-compare-single-server-flexible-server#comparison-table [PgBouncer in Azure Database pour PostgreSQL Flexible Server] : /azure/postgresql/flexible-server/concepts-pgbouncer