Pub/Sub est un service de messagerie asynchrone et évolutif qui dissocie les services produisant des messages des services qui les traitent.
Pub/Sub permet aux services de communiquer de manière asynchrone, avec des latences de l'ordre de 100 millisecondes.
Pub/Sub est utilisé pour l'analyse de flux et les pipelines d'intégration de données afin de charger et de distribuer des données. Il est tout aussi efficace en tant que middleware orienté messages pour l'intégration de services ou en tant que file d'attente pour exécuter des tâches en parallèle.
Pub/Sub vous permet de créer des systèmes de producteurs et de consommateurs d'événements, appelés éditeurs et abonnés. Les éditeurs communiquent de manière asynchrone avec les abonnés en diffusant des événements plutôt que par des appels de procédure à distance (RPC) synchrones.
Les éditeurs envoient des événements au service Pub/Sub, sans tenir compte du mode ou du moment où ils doivent être traités. Pub/Sub fournit ensuite des événements à tous les services qui y réagissent. Dans les systèmes qui communiquent via des RPC, les éditeurs doivent attendre que les abonnés reçoivent les données. Cependant, l'intégration asynchrone dans Pub/Sub augmente la flexibilité et la robustesse du système global.
Pour commencer à utiliser Pub/Sub, consultez le Guide de démarrage rapide sur l'utilisation de la console Google Cloud. Pour une introduction plus complète, reportez-vous à la page Créer un système de messagerie Pub/Sub.
Cas d'utilisation courants
- Ingestion d'événements d'interaction utilisateur et d'événements de serveur. Pour utiliser les événements d'interaction utilisateur à partir d'applications d'utilisateur final ou les événements de serveur de votre système, vous pouvez les transférer vers Pub/Sub. Vous pouvez ensuite utiliser un outil de traitement par flux, tel que Dataflow, qui fournit les événements aux bases de données. BigQuery, Bigtable et Cloud Storage sont des exemples de bases de données de ce type. Pub/Sub vous permet de collecter des événements de plusieurs clients simultanément.
- Distribution d'événements en temps réel. Les événements, bruts ou traités, peuvent être mis à la disposition de plusieurs applications au sein de votre équipe et de votre organisation pour un traitement en temps réel. Pub/Sub est compatible avec le "bus d'événements d'entreprise" et les modèles de conception d'applications basées sur les événements. Pub/Sub s'intègre à de nombreux systèmes qui exportent des événements vers Pub/Sub.
- Réplication des données entre des bases de données. Pub/Sub est couramment utilisé pour distribuer des événements de modification à partir de bases de données. Ces événements peuvent être utilisés pour créer une vue de l'état de la base de données et de l'historique de l'état dans BigQuery et d'autres systèmes de stockage de données.
- Traitement en parallèle et workflows. Vous pouvez répartir efficacement de nombreuses tâches entre plusieurs nœuds de calcul en utilisant des messages Pub/Sub pour communiquer avec eux. Il peut s'agir, par exemple, de la compression de fichiers texte, de l'envoi de notifications par e-mail, de l'évaluation de modèles d'IA ou du reformatage d'images.
- Bus d'événement d'entreprise. Vous pouvez créer un bus de partage de données en temps réel à l'échelle de l'entreprise en distribuant les événements commerciaux, les mises à jour de bases de données et les événements d'analyse à l'échelle de votre organisation.
- Flux de données provenant d'applications, de services ou d'appareils IoT. Par exemple, une application SaaS peut publier un flux d'événements en temps réel. Un capteur résidentiel peut également diffuser des données vers Pub/Sub pour les utiliser dans d'autres produits Google Cloud via un pipeline de traitement des données.
- Actualisation des caches distribués. Par exemple, une application peut publier des événements d'invalidation pour mettre à jour les ID des objets qui ont été modifiés.
- Équilibrage de charge pour plus de fiabilité. Par exemple, les instances d'un service peuvent être déployées sur Compute Engine dans plusieurs zones, mais s'abonner à un sujet commun. En cas de défaillance du service dans une zone, les autres peuvent prendre en charge la charge automatiquement.
Types de services Pub/Sub
Pub/Sub se compose de deux services :
Service Pub/Sub : Ce service de messagerie est le choix par défaut pour la plupart des utilisateurs et des applications. Il offre la plus haute fiabilité et le plus grand ensemble d'intégrations, ainsi que la gestion automatique de la capacité. Pub/Sub permet la réplication synchrone de toutes les données dans au moins deux zones et la réplication dans une troisième zone supplémentaire, au mieux.
Service Pub/Sub Lite. Il s'agit d'un service de messagerie distinct, mais similaire, conçu à moindre coût. Il offre une fiabilité inférieure à Pub/Sub. Il offre un stockage de sujets zonal ou régional. Les sujets Lite zonaux sont stockés dans une seule zone. Les sujets Lite régionaux répliquent les données dans une deuxième zone de manière asynchrone. De plus, Pub/Sub Lite nécessite de pré-provisionner et de gérer le stockage et la capacité de débit. Optez pour Pub/Sub Lite uniquement pour les applications pour lesquelles un faible coût justifie un travail opérationnel supplémentaire et une fiabilité moindre.
Pour en savoir plus sur les différences entre Pub/Sub et Pub/Sub Lite, consultez la page Choisir Pub/Sub ou Pub/Sub Lite.
Comparer Pub/Sub à d'autres technologies de messagerie
Pub/Sub combine l'évolutivité horizontale d'Apache Kafka et de Pulsar avec les fonctionnalités des middlewares de messagerie tels qu'Apache ActiveMQ et RabbitMQ. telles que les files d'attente de lettres mortes et le filtrage.
Pub/Sub adopte également une autre fonctionnalité du middleware de messagerie : le parallélisme par message, plutôt que la messagerie basée sur la partition. Pub/Sub "loue" des messages individuels à des clients abonnés, puis vérifie si un message donné a bien été traité.
En revanche, d'autres systèmes de messagerie horizontalement évolutifs utilisent des partitions pour le scaling horizontal. Cela oblige les abonnés à traiter les messages dans chaque partition dans l'ordre et limite le nombre de clients simultanés au nombre de partitions. Le traitement par message maximise le parallélisme des applications d'abonné, et aide à garantir l'indépendance de l'éditeur et de l'abonné.
Comparer la communication de service à service et la communication de service à client
Pub/Sub est destiné à la communication de service à service plutôt qu'à la communication avec des utilisateurs finaux ou des clients IoT. D'autres modèles sont mieux adaptés aux autres produits :
- Client-serveur : Pour envoyer des messages entre une application mobile ou Web et un service, utilisez des produits tels que Firebase Realtime Database et Firebase Cloud Messaging.
- Appels de service asynchrones. Utilisez Cloud Tasks.
Vous pouvez utiliser une combinaison de ces services pour créer des clients -> services -> modèles de base de données. Par exemple, consultez le tutoriel Diffuser des messages Pub/Sub via WebSockets.
Intégrations
Pub/Sub offre de nombreuses intégrations à d'autres produits Google Cloud pour créer un système de messagerie complet :
- Traitement par flux et intégration des données. Compatible avec Dataflow, y compris les modèles Dataflow et SQL, qui permettent le traitement et l'intégration des données dans BigQuery et dans des lacs de données sur Cloud Storage. Des modèles Dataflow permettant de déplacer des données depuis Pub/Sub vers Cloud Storage, BigQuery et d'autres produits sont disponibles dans les interfaces utilisateur Pub/Sub et Dataflow de la console Google Cloud. L'intégration avec Apache Spark, en particulier lorsqu'elle est gérée avec Dataproc, est également disponible. La composition visuelle des pipelines d'intégration et de traitement exécutés sur Spark + Dataproc peut être réalisée avec Data Fusion.
- Surveillance, alertes et journalisation. Compatibilité avec les produits Monitoring et Logging
- Authentification et IAM. Pub/Sub s'appuie sur une authentification OAuth standard utilisée par d'autres produits Google Cloud et est compatible avec la gestion précise d'IAM, ce qui permet de contrôle des accès pour des ressources individuelles.
- API. Pub/Sub utilise les technologies d'API de service gRPC et REST standards, ainsi que des bibliothèques clientes pour plusieurs langages.
- Déclencheurs, notifications et webhooks. Pub/Sub propose la distribution push des messages sous forme de requêtes HTTP POST vers des webhooks. Vous pouvez implémenter l'automatisation des workflows à l'aide de Cloud Functions ou d'autres produits sans serveur.
- Orchestration. Pub/Sub peut être intégré de manière déclarative à des workflows sans serveur à plusieurs étapes. Orchestration de big data et d'analyse, souvent réalisée avec Cloud Composer, qui est compatible avec les déclencheurs Pub/Sub. Vous pouvez également intégrer Pub/Sub à Application Integration (Preview), qui est une solution iPaaS (Integration-Platform-as-a-Service). Application Integration fournit un déclencheur Pub/Sub pour déclencher ou démarrer des intégrations.
- Integration Connectors(Preview) Ces connectors vous permettent de vous connecter à différentes sources de données. Avec les connecteurs, les services Google Cloud et les applications métier tierces sont exposés à vos intégrations via une interface standard et transparente. Pour Pub/Sub, vous pouvez créer une connexion Pub/Sub à utiliser dans vos intégrations.
Étapes suivantes
- Faites vos premiers pas avec le quickstart ou le quickstart de Pub/Sub Lite.
- Consultez les principes de base du service Pub/Sub.
- Découvrez comment créer un système de messagerie Pub/Sub.
- Comprendre la pricing de Pub/Sub
- Découvrez les quotas et les limites pour Pub/Sub et Pub/Sub Lite.
- Lisez les notes de version de Pub/Sub.
- Explorez l'ingénierie des données avec les services Google Cloud sur Qwiklabs.