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. Si deseas controlar en qué regiones se almacenan tus mensajes, puedes configurar una política de almacenamiento de mensajes en tu tema.
Una política de almacenamiento de mensajes evita que los mensajes de Pub/Sub se conserven fuera de un conjunto de regiones de Google Cloud que especifiques, sin importar dónde se originan las solicitudes de publicación. Si la política permite varias regiones, Pub/Sub elige la región permitida más cercana a la que el mensaje publicado ingresa a la red de Google Cloud.
Descripción general de la política de almacenamiento de mensajes
Puedes establecer una política de almacenamiento de mensajes cuando creas un tema nuevo o cuando lo actualizas.
La política de almacenamiento de mensajes solo se aplica al contenido de los mensajes. La política no se aplica a otros datos, como los nombres de temas, las etiquetas o la configuración de Identity and Access Management (IAM).
Políticas de almacenamiento de mensajes para temas nuevos
Si no especificas una política de almacenamiento de mensajes cuando creas un tema, esta se determina de forma automática según la política de la organización Restricción de ubicación de recursos vigente. 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.
Políticas de almacenamiento de mensajes para temas 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. Para obtener más información, consulta Administra las diferencias entre las políticas de la organización y del tema.
Cuando se actualiza la política de almacenamiento de mensajes de un tema, los cambios no se propagan 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.
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
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.
Configura políticas de almacenamiento de mensajes
Existen dos maneras de configurar las políticas de almacenamiento de mensajes para temas, incluidas las siguientes:
- Establece una política de almacenamiento de mensajes con una política de la organización.
- Configura una política de almacenamiento de mensajes cuando crees un tema.
Establece una política de almacenamiento de mensajes con una política de la organización
Consola
Para configurar una política de almacenamiento de mensajes que se aplique a varios temas, establece una política de la organización Restricción de ubicación de recursos.
Ve a la página Políticas de la organización en la consola de Identity and Access Management.
Selecciona el nodo de jerarquía de recursos (organización, carpeta o proyecto) en el que deseas establecer una política de la organización.
En el filtro, ingresa Resource Location Restriction.
Haz clic en Google Cloud: restricción de ubicación de recursos.
Haz clic en EDITAR.
Agrega o quita regiones según sea necesario.
Todos los temas nuevos que crees heredarán esta configuración. Los cambios no se propagan automáticamente a los temas existentes. Para actualizar los temas existentes, debes ejecutar una operación de actualización.
Para obtener más información sobre las políticas de la organización, consulta Administra tus recursos de Google Cloud.
Configura una política de almacenamiento de mensajes cuando crees un tema
Consola
Cuando usas Google Cloud Console, no puedes configurar una política de almacenamiento de mensajes cuando creas un tema. En su lugar, todos los temas nuevos heredarán automáticamente tu política de la organización Restricción de ubicación de recursos.
Sin embargo, después de crear un tema, puedes cambiar su política de almacenamiento de mensajes en la consola con una operación de actualización.
CLI de gcloud
Para crear un tema con una política de almacenamiento de mensajes específica, usa el comando gcloud pubsub topics create
con la marca --message-storage-policy-allowed-regions
:
gcloud pubsub topics create TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1, REGION2
Reemplaza lo siguiente:
TOPIC_ID
: Es el ID o el nombre del tema nuevo.REGION1, REGION2
: Es una lista separada por comas de las regiones compatibles de Google Cloud.
REST
Consulta las siguientes referencias de API para obtener más información sobre la configuración de las políticas de almacenamiento de mensajes.
Actualizar políticas de almacenamiento de mensajes
Consola
En Google Cloud Console, abre la página Detalles del tema.
Selecciona un tema para actualizar.
Puedes seleccionar varios temas.
En el Panel de información, selecciona la pestaña Política de almacenamiento.
Este panel puede contraerse de manera predeterminada. Si está contraído, haz clic en Mostrar panel de información.
Selecciona o anula la selección de todas las regiones que necesites.
Haga clic en Update.
CLI de gcloud
Para enviar la política de almacenamiento de mensajes definida en la política de Restricción de ubicación de recursos de tu organización a un tema, ejecuta el siguiente comando gcloud pubsub topics update
:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
Para actualizar la política de almacenamiento de mensajes de un tema con regiones específicas, ejecuta el comando gcloud pubsub topics update
con la marca --message-storage-policy-allowed-regions
:
gcloud pubsub topics update TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1, REGION2
Reemplaza lo siguiente:
TOPIC_ID
: Es el ID del tema que deseas actualizar.REGION1, REGION2
: Es una lista separada por comas de las regiones compatibles de Google Cloud.
REST
Consulta las siguientes referencias de API para obtener más información sobre la actualización de las políticas de almacenamiento de mensajes.
Administra las diferencias entre las políticas de la organización y de temas
Consulta las diferencias entre las políticas de la organización y de temas
Consola
Google Cloud Console muestra las diferencias entre la política de la organización y las políticas de almacenamiento de mensajes de temas individuales.
Para ver si algún tema no está sincronizado con la política de tu organización, haz lo siguiente:
Ve a la página Detalles del tema.
Selecciona un tema.
En el Panel de información, selecciona la pestaña Política de almacenamiento.
Este panel puede contraerse de manera predeterminada. Si está contraído, haz clic en Mostrar panel de información.
Las políticas de almacenamiento se muestran en el panel, junto con las diferencias entre las políticas de la organización y de temas.
CLI de gcloud
Para examinar la política actual asignada a un tema, ejecuta el siguiente comando:
gcloud pubsub topics describe TOPIC_ID
Reemplaza lo siguiente:
TOPIC_ID
: Es el ID del tema que estás examinando.
Resuelve las diferencias entre las políticas de la organización y de temas
Consola
En Google Cloud Console, abre la página Detalles del tema.
Selecciona un tema.
En el Panel de información, selecciona la pestaña Política de almacenamiento.
Este panel puede contraerse de manera predeterminada. Si está contraído, haz clic en Mostrar panel de información.
Tus políticas de almacenamiento se muestran en el panel, junto con las discrepancias.
Si hay discrepancias, el panel de información muestra tres opciones para sincronizar la política de almacenamiento de temas con la política de la organización, incluidas las siguientes:
Los temas permiten el almacenamiento en ubicaciones no permitidas.
Actualiza para permitir el almacenamiento solo en las ubicaciones que tu política autorice.
El tema no permite el almacenamiento en algunas ubicaciones permitidas.
Actualiza para permitir el almacenamiento en todas las ubicaciones que tu política autorice.
Los temas están desactualizados con las ubicaciones permitidas y no permitidas.
Actualiza para permitir el almacenamiento en las ubicaciones que tu política autorice.
Selecciona la opción que corresponda para resolver el problema.
Haz clic en Actualizar tema.
Se abrirá el cuadro de diálogo Sincronizar con la política de almacenamiento de la organización.
Haz clic en Actualizar tema.
Supervisa y soluciona problemas
Para ayudarte a comprender dónde se almacenan los datos de mensajes, Pub/Sub ofrece métricas desglosadas por cada región de Google Cloud.
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
Métricas de almacenamiento de mensajes
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
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 Google Cloud, se requiere una capa de enrutamiento adicional para llevar la solicitud a una región de Google Cloud 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
.
- Un cliente publicador que se ejecuta en
us-east1
emite una solicitudPublish
. - La solicitud se enruta a un servidor de Pub/Sub en
us-east1
. - 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 esus-central1
. - 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.
¿Qué sigue?
- Consulta la Descripción general de las API de Pub/Sub para obtener información sobre cómo usar extremos globales o regionales.