Se você publicar mensagens no endpoint global do Pub/Sub, o Pub/Sub vai armazenar de modo automático as mensagens na região mais próxima Cloud de Confiance by S3NS . Se quiser controlar as regiões em que as mensagens são armazenadas e processadas, configure uma política de armazenamento de mensagens no seu tópico.
Visão geral da política de armazenamento de mensagens
É possível definir uma política de armazenamento de mensagens ao criar um tópico ou ao atualizar um tópico usando o console do Google Cloud, a Google Cloud CLI ou as APIs REST.
A política de armazenamento de mensagens só é aplicada ao conteúdo das mensagens. Ela não se aplica a outros dados, como nomes de tópicos, rótulos ou configurações do Identity and Access Management (IAM).
O Pub/Sub armazena mensagens quando um cliente as publica no Pub/Sub. Uma política de armazenamento de mensagens garante que o Pub/Sub armazene e processe mensagens apenas no conjunto de Cloud de Confiance by S3NS regiões especificado, independentemente de onde as solicitações de publicação ou assinatura se originam. Se a política permitir várias regiões para operações de publicação, o Pub/Sub vai armazenar a mensagem em uma região permitida mais próxima de onde a mensagem publicada entra na Cloud de Confiance rede.
Ao especificar uma política de armazenamento de mensagens, é possível definir enforceInTransit como True. Essa flag rege o seguinte:
As solicitações de publicação, pull e streamingPull recebidas em uma região não permitida na política de armazenamento de mensagens são rejeitadas com um erro
FAILED_PRECONDITION.Se um cliente for executado em uma das regiões permitidas , por exemplo, em uma VM do Compute Engine, ele poderá usar o endpoint global . Cloud de Confiance As solicitações do cliente são encaminhadas localmente na região permitida. O cliente também pode usar um endpoint de localização ou endpoint regional que tenha como destino uma região permitida.
Se um cliente for executado em uma região não permitida Cloud de Confiance ou fora dela Cloud de Confiance, ele precisará usar um endpoint de localização ou regional que tenha como destino uma região na lista de regiões permitidas.
A entrega de assinaturas push é processada apenas nas regiões do Cloud permitidas. Em alguns casos, essa restrição pode pausar completamente a entrega de mensagens para assinaturas push. Quando uma assinatura por push entra nesse estado devido aos locais de push serem muito restritos por uma combinação de fatores, como local de armazenamento de mensagens, regiões permitidas e local de recursos de exportação, esse estado fica visível no Stackdriver.
Políticas de armazenamento de mensagens para novos tópicos
Se você não especificar uma política de armazenamento de mensagens ao criar um tópico, essa política será determinada automaticamente com base na política da organização Restrição de localização de recursos em vigor. Quando nenhuma política da organização está em vigor, a política de armazenamento de mensagens permite todas as regiões.
Da mesma forma, na ausência de uma política de armazenamento de mensagens especificada, a flag
enforceInTransité determinada com base na política da organização Aplicar regiões em trânsito para mensagens do Pub/Sub em vigor. Para mais informações sobre essa política da organização, consulte Restrições da política da organização.Se você especificar uma política de armazenamento de mensagens ao criar um tópico, essa política poderá conter apenas as regiões permitidas pela política da organização Restrição de localização de recursos em vigor. Quando nenhuma política da organização estiver em vigor, a política de armazenamento de mensagens poderá conter qualquer região.
Políticas de armazenamento de mensagens para tópicos atuais
Quando uma política da organização é atualizada, as mudanças não são propagadas automaticamente para tópicos atuais. Desse modo, a política de armazenamento de mensagens de um tópico existente pode ficar fora de sincronia com a política da organização mais recente. Para mais informações, consulte Gerenciar diferenças entre políticas da organização e de tópicos.
Quando a política de armazenamento de mensagens de um tópico é atualizada, as mudanças não são propagadas para mensagens já publicadas. As mensagens já armazenadas com base em uma política antiga não são movidas para ficarem consistentes com a nova política. Em vez disso, as mudanças se aplicam somente às mensagens publicadas após a atualização.
Exceções
A política especifica uma lista de nomes de regiões permitidas Cloud de Confiance . Dessa maneira, os seguintes itens não são compatíveis:
- Listas de exclusão
- Zonas ou locais multirregionais
Se você publicar uma mensagem com uma chave de ordem e a política de armazenamento de mensagens excluir a região mais próxima, o serviço Pub/Sub retornará um erro.
Configurar políticas de armazenamento de mensagens
Há duas maneiras de configurar políticas de armazenamento de mensagens para tópicos, incluindo:
- Definir uma política de armazenamento de mensagens usando uma política da organização.
- Configurar uma política de armazenamento de mensagens ao criar um tópico.
Definir uma política de armazenamento de mensagens usando uma política da organização
Console
Para configurar uma política de armazenamento de mensagens que se aplica a vários tópicos, defina uma política da organização Restrição de localização de recursos.
Acesse a página Políticas da organização no console do Identity and Access Management.
Selecione o nó da hierarquia de recursos (organização, pasta ou projeto) em que você quer definir uma política da organização.
No filtro, digite Restrição de localização de recursos.
Clique em Cloud de Confiance by S3NS - Restrição de localização de recursos.
Clique em EDITAR.
Adicione ou remova regiões conforme necessário.
Todos os novos tópicos criados herdam essas configurações. As mudanças não são propagadas automaticamente para tópicos atuais. Para atualizar os tópicos atuais, você deve executar uma operação de atualização.
Para mais informações sobre políticas da organização, consulte Gerenciar seus Cloud de Confiance by S3NS recursos.
Configurar uma política de armazenamento de mensagens ao criar um tópico
Console
Ao usar o Cloud de Confiance console, não é possível configurar uma política de armazenamento de mensagens ao criar um tópico. Em vez disso, todos os novos tópicos herdam automaticamente a política da organização Restrição de localização de recursos.
No entanto, depois de criar um tópico, é possível mudar a política de armazenamento de mensagens dele no console com uma operação de atualização.
CLI gcloud
Para criar um tópico com uma política de armazenamento de mensagens específica, use o
gcloud pubsub topics create
comando com a --message-storage-policy-allowed-regions flag:
gcloud pubsub topics create TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
Substitua:
TOPIC_ID: o ID ou nome do novo tópico.REGION1, REGION2: uma lista separada por vírgulas de regiões com suporte Cloud de Confiance .
REST
Para criar um tópico com uma política de armazenamento de mensagens, use o
projects.topics.create
método.
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization. Para conseguir um token de acesso para o Application Default Credentials atual: gcloud auth application-default print-access-token.
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Especifique os campos a seguir no corpo da solicitação:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"],
"enforceInTransit": true
}
}
Em que:
PROJECT_ID é o ID do projeto;
TOPIC_ID é o ID do tópico.
REGION é a região especificada.
Exemplo de resposta:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Consulte as referências da API a seguir para mais informações sobre como configurar políticas de armazenamento de mensagens.
Atualizar políticas de armazenamento de mensagens
Console
No Cloud de Confiance console, abra a página Detalhes do tópico.
Selecione um tópico para atualizar.
É possível selecionar vários tópicos.
No painel de informações, selecione a guia Política de armazenamento.
Esse painel pode ser recolhido por padrão. Se ele estiver recolhido, clique em Mostrar painel de informações.
Selecione ou desmarque quantas regiões forem necessárias.
Clique em Atualizar.
CLI gcloud
Para enviar a política de armazenamento de mensagens definida na
política de restrição de localização de recursos da sua organização para um tópico, execute o seguinte
gcloud pubsub topics update
comando:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
Para atualizar a política de armazenamento de mensagens de um tópico com regiões específicas, execute o comando gcloud pubsub topics update com a flag --message-storage-policy-allowed-regions:
gcloud pubsub topics update TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
Substitua:
TOPIC_ID: o ID do tópico que você está atualizando.REGION1, REGION2: uma lista separada por vírgulas de regiões com suporte Cloud de Confiance .
REST
Para atualizar um tópico com uma política de armazenamento de mensagens, use o
projects.topics.patch
método.
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization. Para conseguir um token de acesso para o Application Default Credentials atual: gcloud auth application-default print-access-token.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Especifique os campos a seguir no corpo da solicitação:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"], // Replace with your required region
"enforceInTransit": true
}
}
Em que:
PROJECT_ID é o ID do projeto;
TOPIC_ID é o ID do tópico.
REGION é a região especificada.
Exemplo de resposta:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Consulte as referências da API a seguir para mais informações sobre como atualizar políticas de armazenamento de mensagens.
Gerenciar diferenças entre políticas da organização e de tópicos
Conferir diferenças entre políticas da organização e de tópicos
Console
O Cloud de Confiance console mostra as diferenças entre a política da organização e as políticas de armazenamento de mensagens de tópicos individuais.
Para verificar se algum tópico está fora de sincronia com a política da organização:
Acesse a página Detalhes do tópico.
Selecione um tópico.
No painel de informações, selecione a guia Política de armazenamento.
Esse painel pode ser recolhido por padrão. Se ele estiver recolhido, clique em Mostrar painel de informações.
As políticas de armazenamento são mostradas no painel, juntamente com as diferenças entre as políticas da organização e de tópicos.
CLI gcloud
Para examinar a política atual atribuída a um tópico, execute o seguinte comando:
gcloud pubsub topics describe TOPIC_ID
Substitua:
TOPIC_ID: o ID do tópico que você está examinando.
Resolver diferenças entre políticas da organização e de tópicos
Console
No Cloud de Confiance console, abra a página Detalhes do tópico.
Selecione um tópico.
No painel de informações, selecione a guia Política de armazenamento.
Esse painel pode ser recolhido por padrão. Se ele estiver recolhido, clique em Mostrar painel de informações.
As políticas de armazenamento são mostradas no painel, juntamente com as discrepâncias.
Se houver discrepâncias, o painel de informações vai mostrar três opções para sincronizar a política de armazenamento do tópico com a política da organização, incluindo:
Os tópicos permitem o armazenamento em locais não permitidos.
Atualize para permitir o armazenamento apenas em locais permitidos pela sua política.
O tópico não permite o armazenamento em alguns locais permitidos.
Atualize para permitir o armazenamento em qualquer lugar permitido pela sua política.
Os tópicos estão desatualizados em locais não permitidos e permitidos.
Atualize para permitir o armazenamento em um lugar permitido pela sua política.
Selecione a opção apropriada para resolver os problemas.
Clique em Atualizar tópico.
A caixa de diálogo Sincronizar com a política de armazenamento da organização será aberta.
Clique em Atualizar tópico.
Monitoramento e solução de problemas
Para ajudar você a entender onde os dados de mensagens são armazenados, o Pub/Sub oferece métricas divididas por região. Cloud de Confiance
Você pode usar essas métricas para:
- entender como seus dados são distribuídos em todo o mundo;
- otimizar o local de implantação de editores e assinantes com base nesses dados.
Métricas de armazenamento de mensagens
Contagens de mensagens armazenadas não confirmadas:
subscription/num_unacked_messages_by_region
Volume de dados armazenados:
subscription/unacked_bytes_by_region
Idade da mensagem mais antiga:
subscription/oldest_unacked_message_age_by_region
Métricas análogas estão disponíveis para tópicos e snapshots. Além disso, as métricas correspondentes estão disponíveis para mensagens confirmadas que são retidas opcionalmente para repetição. Exemplo:
subscription/num_retained_acked_messages_by_region
Consequências de desempenho e disponibilidade
A política de armazenamento de mensagens não afeta o SLA geral, mas introduz uma compensação entre disponibilidade e controle quando editores ou assinantes são executados fora ou em regiões não permitidas pela política. Cloud de Confiance Os usuários que executam clientes editores dentro do conjunto de regiões permitido pela política de armazenamento de mensagens não percebem mudanças na latência ou na disponibilidade do serviço.
Para entender essas compensações, vale a pena considerar como as solicitações de publicação são encaminhadas. Geralmente, o Pub/Sub tenta armazenar as mensagens o mais próximo possível da origem da solicitação. As solicitações originadas no Google Cloud Cloud de Confiance são, em regra, vinculadas às instâncias do Pub/Sub na mesma região. Se um editor estiver localizado em uma única região, simplesmente adicionar mais regiões à política de armazenamento de mensagens não aumentará a disponibilidade. Ao publicar de fora do Cloud de Confiance by S3NS, uma camada adicional de roteamento é envolvida para levar a solicitação a uma região próxima de onde o serviço Pub/Sub está disponível. Cloud de Confiance by S3NS
Considere uma política de armazenamento de mensagens que permita somente a região us-central1.
- Um cliente editor em execução em
us-east1emite uma solicitaçãoPublish. - A solicitação é roteada para um servidor Pub/Sub em
us-east1. - Em vez de armazenar os dados em
us-east1, a solicitação é roteada para a região mais próxima permitida pela política de armazenamento de mensagens, que éus-central1. - O Pub/Sub armazena as mensagens publicadas em
us-central1e as encaminha para os assinantes a partir desse local.
Esse mecanismo tem implicações na latência da solicitação e na disponibilidade geral do sistema. Como a solicitação transfere mais links de rede, a conclusão leva mais tempo e tem uma chance relativamente maior de falha. Isso também significa que os assinantes podem ver a mensagem um pouco mais tarde, porque ela precisa viajar até a região permitida mais próxima antes de ser enviada. Se a política permitir uma única região, mas seus aplicativos editores forem executados em várias regiões, o aplicativo distribuído ficará tão disponível quanto a única região permitida.
A seguir
- Consulte a visão geral das APIs do Pub/Sub para informações sobre como usar endpoints globais ou de localização.