Limiter les emplacements de ressources Pub/Sub

Afin de réduire le temps nécessaire à la conservation des données des messages, Pub/Sub stocke automatiquement les messages publiés dans la région Google Cloud la plus proche. Pub/Sub distribue ensuite les messages aux abonnés dans le monde entier, qu'importe leur emplacement de stockage.

Dans certains cas, vous aurez peut-être besoin d'un contrôle plus précis de l'emplacement de stockage de vos messages. La sujet Pub/Sub Règles de stockage des messages permet de garantir la conservation de toutes les données publiées sur un sujet dans une région spécifique ou un ensemble de régions, indépendamment de l'origine de la requête de publication. Lorsque plusieurs régions sont autorisées par la règle, Pub/Sub choisit la région autorisée la plus proche.

Les règles de stockage des messages d'un sujet peuvent être configurées comme suit :

  • Pour configurer tous les sujets à l'échelle de l'organisation, vous pouvez utiliser la règle d'administration Restriction d'emplacement des ressources. Les règles communes à l'ensemble de l'organisation sont gérées dans la section Règles d'administration de la console IAM et administration.

  • Pour un contrôle ultraprécis, vous pouvez configurer une règle de stockage des messages pour un sujet lors de la création du sujet ou via l'opération UpdateTopic.

Règles concernant les nouveaux sujets

  • Si une règle de stockage des messages explicite n'est pas spécifiée lors de la création d'un sujet, la règle de stockage des messages du nouveau sujet est automatiquement déterminée en fonction de la règle d'administration Restriction d'emplacement des ressources en vigueur. Lorsqu'aucune règle d'administration n'est en vigueur, toutes les régions sont autorisées.

  • Si une règle de stockage des messages explicite est appliquée au moment de la création du sujet, ne sont autorisées que les régions spécifiées par la règle d'administration Restriction d'emplacement des ressources en vigueur.

Mises à jour des règles appliquées aux sujets et messages existants

  • Lorsqu'une règle d'administration est mise à jour, les modifications ne se propagent pas automatiquement aux sujets existants. Par conséquent, la règle de stockage des messages d'un sujet existant peut ne plus être synchronisée avec les dernières règles d'administration. Pour plus d'informations sur la résolution de ces différences, consultez la section ci-dessous.

  • Lorsque la règle de stockage des messages d'un sujet est mise à jour, les modifications ne se propagent pas automatiquement aux messages déjà publiés. Les messages déjà stockés en fonction d'une règle plus ancienne ne sont pas transférés à des fins de cohérence avec la règle mise à jour. À l'inverse, les modifications ne s'appliquent qu'aux messages publiés après la mise à jour.

Configurer des règles de stockage des messages

Pour configurer une règle de stockage des messages, vous pouvez la synchroniser avec la règle d'administration ou la spécifier explicitement pour un sujet. Vous pouvez configurer la règle à l'aide des éléments suivants :

Mettre à jour ou définir des règles de stockage des messages à l'aide de l'outil gcloud

Mettez à jour la règle existante d'un sujet avec la règle d'administration actuelle :

gcloud pubsub topics update TOPIC --recompute-message-storage-policy

Définissez une règle de stockage des messages explicite sur un sujet, sous la forme d'une liste de régions Google Cloud autorisées :

gcloud pubsub topics update TOPIC --message-storage-policy-allowed-regions=us-central1,us-east1

Cette opération garantit que les prochains messages publiés sur le sujet sont stockés dans us-central1 ou us-east1.

Afficher et résoudre les différences entre la règle d'administration et la règle appliquée aux sujets

Cloud Console affiche les différences entre les règles d'administration et les règles de stockage des messages appliquées à chaque sujet. Vous pouvez également synchroniser la règle de stockage des messages d'un sujet avec les règles d'administration dans Cloud Console. Vous ne pouvez pas spécifier de règles de stockage des messages au niveau du sujet dans Cloud Console.

Pour connaître les sujets désynchronisés avec votre règle d'administration, accédez à la console, puis ouvrez l'onglet Règles de stockage du panneau d'informations à droite.

Vous pouvez également examiner la règle actuelle à l'aide de la ligne de commande.

gcloud pubsub topics describe TOPIC

Mettre à jour plusieurs sujets

Pour mettre à jour un ou plusieurs sujets :

  1. Accédez à l'onglet Règles de stockage de la console.
  2. Sélectionnez un ou plusieurs sujets.
  3. Cliquez sur Mettre à jour.

Exceptions

La règle spécifie une liste des noms de régions Google Cloud autorisés. Par conséquent, les éléments suivants ne sont pas acceptés :

  • Listes d'exclusion
  • Zones ou zones multirégionales

Surveillance et dépannage

Pour vous aider à comprendre l'emplacement de stockage des données de messages, nous vous proposons des métriques Pub/Sub réparties par région Google Cloud :

Nombre de messages non confirmés stockés :

subscription/num_unacked_messages_by_region

Volume de données stockées :

subscription/unacked_bytes_by_region

Âge du message le plus ancien :

subscription/oldest_unacked_message_age_by_region

Des métriques analogues sont disponibles pour les sujets et les instantanés. En outre, des métriques correspondantes sont disponibles pour les messages confirmés qui sont éventuellement conservés pour une nouvelle lecture. Exemple :

subscription/num_retained_acked_messages_by_region

Grâce à ces métriques, vous pouvez :

  • comprendre comment vos données sont distribuées dans le monde entier ;
  • optimiser l'emplacement de déploiement des abonnés et des éditeurs en fonction de ces données.

Implications en termes de performance et de disponibilité

La règle de stockage des messages n'affecte pas le contrat de niveau de service dans son ensemble, mais introduit un compromis en termes de contrôle de la disponibilité lorsque les éditeurs ou les abonnés s'exécutent en dehors de Google Cloud ou dans des régions non autorisées par la règle. Les utilisateurs qui exécutent des clients éditeurs dans l'ensemble des régions autorisées par la règle de stockage des messages ne doivent constater aucun changement en ce qui concerne la latence ou la disponibilité du service.

Pour comprendre ces compromis, il est utile d'examiner la manière dont les requêtes de publication sont acheminées. En règle générale, Pub/Sub tente de stocker vos messages aussi près que possible de la source de la requête. En principe, les requêtes provenant de Google Cloud sont liées aux instances Pub/Sub de la même région. Si un éditeur se trouve dans une seule région, le simple fait d'ajouter d'autres régions à la règle de stockage des messages n'a aucune incidence sur la disponibilité. Lors de la publication en dehors de GCP, une couche supplémentaire d'acheminement est nécessaire pour envoyer la requête à une région GCP à proximité dans laquelle le service Pub/Sub est disponible.

Envisagez de définir une règle de stockage des messages qui n'autorise que la région us-central1.

  1. Un client éditeur qui s'exécute dans la région us-east1 émet une requête Publish.
  2. La requête est acheminée vers un serveur Pub/Sub dans la région us-east1.
  3. Plutôt que de stocker les données dans la région us-east1, la requête est acheminée vers la région la plus proche autorisée par la règle de stockage des messages, à savoir us-central1.
  4. Pub/Sub stocke les messages publiés dans la région us-central1 et transfère les messages aux abonnés à partir de cet emplacement.

Ce mécanisme a des conséquences sur la latence des requêtes et la disponibilité globale du système. Comme la requête traverse davantage de liens réseau, son traitement est plus long et présente un risque d'échec plus élevé. De plus, il est possible que les abonnés reçoivent le message un peu plus tard, car celui-ci doit être redirigé vers la région la plus proche avant d'être distribué. Si la règle autorise une seule région, mais que vos applications d'éditeur s'exécutent sur plusieurs régions, la disponibilité de l'application distribuée devient identique à celle de la seule région autorisée.