Qu'est-ce que Pub/Sub ?

Pub/Sub est un service de messagerie asynchrone et évolutif qui dissocie les services de production de messages des services qui traitent ces messages.

Pub/Sub permet aux services de communiquer de manière asynchrone, avec des latences généralement 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 également efficace en tant que middleware de messagerie pour l'intégration des services ou comme file d'attente pour charger en parallèle des tâches.

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 savoir comment ni quand ces événements seront 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. L'intégration asynchrone dans Pub/Sub augmente toutefois la flexibilité et la robustesse du système dans son ensemble.

Pour faire vos premiers pas avec Pub/Sub, consultez le guide de démarrage rapide avec la console Google Cloud . Pour une présentation plus complète, consultez 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 provenant d'applications d'utilisateur final ou les événements de serveur provenant 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 transmet les événements aux bases de données. BigQuery, Bigtable et Cloud Storage sont des exemples de telles bases de données. Pub/Sub vous permet de collecter simultanément des événements provenant de nombreux clients.
  • Distribution d'événements en temps réel. Les événements, bruts ou traités, peuvent être mis à la disposition de plusieurs applications de votre équipe et de votre organisation pour un traitement en temps réel. Pub/Sub est compatible avec un "bus d'événements d'entreprise" et des modèles de conception d'applications basées sur les événements. Pub/Sub vous permet de l'intégrer à 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 les événements de modification des bases de données. Ces événements peuvent être utilisés pour construire une vue de l'état de la base de données et de l'historique des états 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 compresser des fichiers texte, d'envoyer des notifications par e-mail, d'évaluer des modèles d'IA et de reformater des 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 des événements d'entreprise, des mises à jour de base de données et des événements d'analyse dans l'ensemble 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 par flux 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 modifiés.
  • Équilibrage de charge pour plus de fiabilité. Par exemple, des 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 automatiquement le relais.

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. Les files d'attente de lettres mortes et le filtrage en sont des exemples.

Une autre fonctionnalité que Pub/Sub adopte du middleware de messagerie est le parallélisme par message, plutôt que la messagerie basée sur les partitions. Pub/Sub "loue" des messages individuels aux clients abonnés, puis vérifie si un message donné est traité avec succès.

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 contribue à garantir l'indépendance de l'éditeur et de l'abonné.

Comparer la communication entre services et la communication entre services et clients

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 :

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 propose de nombreuses intégrations avec 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 et le SQL Dataflow, qui permettent le traitement et l'intégration des données dans BigQuery et les lacs de données sur Cloud Storage. Les modèles Dataflow permettant de déplacer des données de Pub/Sub vers Cloud Storage, BigQuery et d'autres produits sont disponibles dans les interfaces utilisateur Pub/Sub et Dataflow de la consoleGoogle Cloud . L'intégration à Apache Spark, en particulier lorsqu'il est géré avec Managed Service pour Apache Spark, est également disponible. La composition visuelle des pipelines d'intégration et de traitement exécutés sur Spark et Managed Service pour Apache Spark peut être effectuée avec Data Fusion.
  • Surveillance, alertes et journalisation Compatible 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 IAM de manière précise, ce qui permet le contrôle des accès aux 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 en mode push des messages sous forme de requêtes POST HTTP aux 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 dans des workflows sans serveur en plusieurs étapes. L'orchestration du big data et des analyses est souvent effectuée avec Managed Airflow, qui accepte les déclencheurs Pub/Sub. Vous pouvez également intégrer Pub/Sub à Application Integration, 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 Ces connecteurs vous permettent de vous connecter à différentes sources de données. Grâce aux connecteurs, les servicesGoogle Cloud et les applications métier tierces sont exposés à vos intégrations au moyen d'une interface standard transparente. Pour Pub/Sub, vous pouvez créer un connecteur Pub/Sub à utiliser dans vos intégrations.

Étapes suivantes