Restringe las ubicaciones de recursos de Pub/Sub

Si publicas mensajes en el extremo global de Pub/Sub, Pub/Sub almacena automáticamente los mensajes en la región de Google Cloud más cercana. El tema de Pub/Subpolítica de almacenamiento de mensajes ofrece una forma de garantizar que los mensajes publicados en un tema nunca se encuentren fuera de un conjunto de regiones de Google Cloud que especifiques, sin importar de dónde se generen las solicitudes de publicación. Cuando la política permite almacenar los datos en varias regiones, Pub/Sub elige la región permitida más cercana.

Si publicas un mensaje con una clave de ordenamiento y la política de almacenamiento de mensajes excluye la región más cercana, el servicio de Pub/Sub muestra un error.

La política de almacenamiento de mensajes de un tema se puede configurar de las siguientes maneras:

  • A fin de configurar todos los temas para toda la organización, puedes usar la política de la organización Restricción de la ubicación del recurso. Las políticas para toda la organización se mantienen en la sección Políticas de la organización de IAM y la Consola del administrador.

  • Para obtener un control detallado, puedes configurar la política de almacenamiento de mensajes de un tema durante la creación del tema o mediante la operación UpdateTopic.

Política de almacenamiento de mensajes en temas nuevos

  • Si no especificas una política de almacenamiento de mensajes cuando creas un tema, se determina de forma automática según la política vigente de la organización Restricción de ubicación de recursos. Cuando no hay ninguna política de la organización vigente, la política de almacenamiento de mensajes admite todas las regiones.

  • Si especificas una política de almacenamiento de mensajes cuando creas un tema, esta puede contener solo las regiones permitidas por la política de la organización vigente Restricción de ubicación de recursos. Cuando no hay ninguna política de la organización vigente, la política de almacenamiento de mensajes puede contener cualquier región.

Actualizaciones de la política de almacenamiento de mensajes sobre temas y mensajes existentes

  • Cuando se actualiza una política de la organización, los cambios no se propagan de forma automática a los temas existentes. Por lo tanto, es posible que la política de almacenamiento de mensajes de un tema existente no esté sincronizada con la última política de la organización. Consulta la siguiente información sobre cómo resolver estas diferencias en caso de que se produzcan.

  • Cuando se actualiza la política de almacenamiento de mensajes de un tema, los cambios no se propagan de forma automática a los mensajes ya publicados. Los mensajes que ya están almacenados según una política anterior no se modifican para que sean coherentes con la política nueva. En cambio, los cambios se aplican solo a los mensajes publicados después de la actualización.

Configura políticas de almacenamiento de mensajes

Para configurar la política de almacenamiento de mensajes, puedes sincronizarla con la política de la organización o especificarla para un tema de forma explícita. Puedes configurar la política mediante las siguientes opciones:

Usa la herramienta de gcloud para actualizar o establecer políticas de almacenamiento de mensajes de temas

Actualiza la política existente sobre un tema con la política de la organización actual:

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

Establece una política explícita de almacenamiento de mensajes sobre un tema, como una lista de regiones permitidas de Google Cloud:

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

Esta operación garantiza que los mensajes que se publicaron después en el tema se almacenen en us-central1 o us-east1.

Identifica y resuelve las diferencias entre las políticas de la organización y de temas

Cloud Console muestra las diferencias entre la política de la organización y las políticas de almacenamiento de mensajes de temas individuales. También puedes sincronizar la política de almacenamiento de mensajes de un tema con la política de la organización en Cloud Console. No puedes especificar políticas de almacenamiento de mensajes de temas en Cloud Console.

Para ver cuáles de tus temas no están sincronizados con tu política de la organización, ve a Console y abre la pestaña Política de almacenamiento del panel de información a la derecha.

También puedes examinar la política actual con la línea de comandos.

gcloud pubsub topics describe TOPIC

Actualiza varios temas

Para actualizar uno o más temas, sigue estos pasos:

  1. Ve a la pestaña Política de almacenamiento en Console.
  2. Selecciona uno o más temas.
  3. Haz clic en Actualizar.

Excepciones

La política especifica una lista de nombres de regiones permitidas de Google Cloud. Por lo tanto, los siguientes elementos no son compatibles:

  • Listas de exclusiones
  • Zonas o ubicaciones multirregionales

Supervisa y soluciona problemas

Para ayudarte a comprender dónde se almacenan los datos de mensajes, ofrecemos métricas de Pub/Sub divididas por región de Google Cloud:

Recuentos de mensajes almacenados no confirmados:

subscription/num_unacked_messages_by_region

Volumen de datos almacenados:

subscription/unacked_bytes_by_region

Antigüedad del primer mensaje:

subscription/oldest_unacked_message_age_by_region

Las métricas análogas están disponibles para los temas y las instantáneas. Además, las métricas correspondientes están disponibles para los mensajes confirmados que se retienen de forma opcional con el fin de volver a reproducirlos. Por ejemplo:

subscription/num_retained_acked_messages_by_region

Puedes usar estas métricas para lograr lo siguiente:

  • Comprender cómo se distribuyen tus datos en todo el mundo
  • Optimizar la ubicación de implementación del publicador y del suscriptor en función de esos datos

Implicaciones de rendimiento y disponibilidad

La política de almacenamiento de mensajes no afecta al ANS general, pero presenta una compensación de control de disponibilidad cuando los publicadores o suscriptores se ejecutan fuera de Google Cloud o en regiones no permitidas por la política. Los usuarios que ejecutan clientes publicadores dentro del conjunto de regiones permitidas por la política de almacenamiento de mensajes no deberían experimentar ningún cambio en la latencia o la disponibilidad del servicio.

Para entender estas compensaciones, es conveniente considerar cómo se enrutan las solicitudes de publicación. En general, Pub/Sub intenta almacenar tus mensajes lo más cerca posible del origen de la solicitud. Como regla general, las solicitudes que se originan en Google Cloud están vinculadas a las instancias de Pub/Sub en la misma región. Si un publicador se encuentra en una sola región, agregar más regiones a la política de almacenamiento de mensajes no aumentará la disponibilidad. Cuando se publica desde fuera de GCP, hay una capa adicional de enrutamiento para enviar la solicitud a una región de GCP cercana en la que el servicio de Pub/Sub está disponible.

Considera una política de almacenamiento de mensajes que permita solo la región us-central1.

  1. Un cliente publicador que se ejecuta en us-east1 emite una solicitud Publish.
  2. La solicitud se enruta a un servidor de Pub/Sub en us-east1.
  3. En lugar de almacenar los datos en us-east1, la solicitud se enruta a la región más cercana permitida por la política de almacenamiento de mensajes, que es us-central1.
  4. Pub/Sub almacena los mensajes publicados en us-central1 y reenvía mensajes a los suscriptores desde esa ubicación.

Este mecanismo afecta a la latencia de solicitudes y la disponibilidad general del sistema. Debido a que la solicitud desvía más vínculos de red, requiere más tiempo para completarse y tiene más probabilidades de fallar. Esto también significa que los suscriptores pueden ver el mensaje un poco más tarde porque debe dirigirse a la región permitida más cercana antes del envío. Si la política permite una sola región, pero tus aplicaciones de publicador se ejecutan en varias regiones, la aplicación distribuida estará disponible en función de la única región permitida.