Configure as políticas de armazenamento de mensagens

Se publicar mensagens no ponto final global do Pub/Sub, o Pub/Sub armazena automaticamente as mensagens na Trusted Cloud by S3NS região mais próxima. Se quiser controlar as regiões nas quais as suas mensagens são armazenadas e processadas, pode configurar uma política de armazenamento de mensagens no seu tópico.

Vista geral da política de armazenamento de mensagens

Pode definir uma política de armazenamento de mensagens quando cria um novo tópico ou quando atualiza um tópico através da consola, da Google Cloud CLI ou das APIs REST.

A política de armazenamento de mensagens aplica-se apenas ao conteúdo das mensagens. A política não se aplica a outros dados, como nomes de tópicos, etiquetas ou definições de gestão de identidade e de acesso (IAM).

O Pub/Sub armazena mensagens quando um cliente publica as mensagens no Pub/Sub. Uma política de armazenamento de mensagens garante que o Pub/Sub armazena e processa mensagens apenas no conjunto deTrusted Cloud by S3NS regiões que especificar, independentemente da origem dos pedidos de publicação ou subscrição. Se a política permitir várias regiões para operações de publicação, o Pub/Sub armazena a mensagem numa região permitida mais próxima do local onde a mensagem publicada entra na Trusted Cloud rede.

Quando especifica uma política de armazenamento de mensagens, pode definir enforceInTransit como True. Esta flag rege o seguinte:

  • As solicitações de publicação, obtenção e streaming recebidas numa região não permitida na política de armazenamento de mensagens são rejeitadas com um erro FAILED_PRECONDITION.

  • A entrega de subscrições push é processada apenas nas regiões da nuvem permitidas. Em alguns casos, esta restrição pode pausar completamente a entrega de mensagens para subscrições push. Quando uma subscrição push entra num estado deste tipo devido às localizações push estarem demasiado restritas por uma combinação de fatores, como a localização de armazenamento de mensagens, as regiões permitidas e a localização do recurso de exportação, este estado torna-se visível no Stackdriver.

Políticas de armazenamento de mensagens para novos tópicos

  • Se não especificar uma política de armazenamento de mensagens quando cria um tópico, a política de armazenamento de mensagens é determinada automaticamente com base na política da organização Restrição de localização de recursos em vigor. Quando não existe nenhuma política organizacional 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 organizacional Aplicar regiões em trânsito para mensagens do Pub/Sub em vigor. Para mais informações acerca desta política de organização, consulte as Restrições da política de organização.

  • Se especificar uma política de armazenamento de mensagens quando cria um tópico, a política de armazenamento de mensagens só pode conter as regiões permitidas pela política organizacional de restrição de localização de recursos eficaz. Quando não existe uma política da organização em vigor, a política de armazenamento de mensagens pode conter qualquer região.

Políticas de armazenamento de mensagens para tópicos existentes

  • Quando uma política organizacional é atualizada, as alterações não são propagadas automaticamenteaos tópicos existentes. Como tal, a política de armazenamento de mensagens de um tópico existente pode ficar dessincronizada com a política da organização mais recente. Para mais informações, consulte o artigo Faça a gestão das diferenças entre as políticas de organização e de tópicos.

  • Quando a política de armazenamento de mensagens de um tópico é atualizada, as alterações não são propagadas às mensagens já publicadas. As mensagens já armazenadas com base numa política mais antiga não são movidas para serem consistentes com a nova política. Em vez disso, as alterações aplicam-se apenas às mensagens publicadas após a atualização.

Exceções

A política especifica uma lista de Trusted Cloud nomes de regiões permitidos. Como tal, os seguintes itens não são suportados:

  • Listas de exclusões
  • Zonas ou localizações multirregionais

Se publicar uma mensagem com uma chave de ordenação e a política de armazenamento de mensagens excluir a região mais próxima, o serviço Pub/Sub devolve um erro.

Configure as políticas de armazenamento de mensagens

Existem duas formas de configurar políticas de armazenamento de mensagens para tópicos, incluindo:

  • Defina uma política de armazenamento de mensagens através de uma política da organização.
  • Configure uma política de armazenamento de mensagens quando criar um tópico.

Defina uma política de armazenamento de mensagens através de uma política da organização

Consola

Para configurar uma política de armazenamento de mensagens que se aplica a vários tópicos, defina uma política organizacional de restrição de localização de recursos.

  1. Aceda à página Políticas da organização na consola de gestão de identidade e de acesso.

    Aceda às políticas da organização

  2. Selecione o nó da hierarquia de recursos (organização, pasta ou projeto) ao qual quer definir uma política de organização.

  3. No filtro, introduza Restrição de localização do recurso.

  4. Clique em Trusted Cloud by S3NS - Restrição de localização do recurso.

  5. Clique em EDITAR.

  6. Adicione ou remova regiões conforme necessário.

    Todos os novos tópicos que criar herdam estas definições. As alterações não são propagadas automaticamente para os tópicos existentes. Para atualizar tópicos existentes, tem de executar uma operação de atualização.

Para mais informações sobre as políticas da organização, consulte o artigo Faça a gestão dos seus Trusted Cloud by S3NS recursos.

Configure uma política de armazenamento de mensagens quando criar um tópico

Consola

Quando usa a Trusted Cloud consola, não pode configurar uma política de armazenamento de mensagens quando cria um tópico. Em alternativa, todos os novos tópicos herdam automaticamente a política da organização Resource Location Restriction.

No entanto, depois de criar um tópico, pode alterar a respetiva política de armazenamento de mensagens na consola 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 comando gcloud pubsub topics create com a flag --message-storage-policy-allowed-regions:

gcloud pubsub topics create TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1,REGION2

Substitua o seguinte:

  • TOPIC_ID: o ID ou o nome do seu novo tópico.
  • REGION1, REGION2: uma lista separada por vírgulas das regiões suportadas Trusted Cloud .

REST

Para criar um tópico com uma política de armazenamento de mensagens, use o método projects.topics.create.

O pedido tem de ser autenticado com um token de acesso no cabeçalho.Authorization Para obter uma chave de acesso para as Credenciais padrão da aplicação atuais: 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 seguintes campos no corpo do pedido:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"],
    "enforceInTransit": true
  }
}

Onde:

  • PROJECT_ID é o ID do seu projeto.

  • TOPIC_ID é o ID do seu tópico.

  • REGION é a região especificada.

Exemplo de resposta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Consulte as seguintes referências da API para mais informações sobre a configuração das políticas de armazenamento de mensagens.

Atualize as políticas de armazenamento de mensagens

Consola

  1. Na Trusted Cloud consola, abra a página Detalhes do tópico.

    Aceda aos detalhes do tópico

  2. Selecione um tópico para atualizar.

    Pode selecionar vários tópicos.

  3. No Painel de informações, selecione o separador Política de armazenamento.

    Este painel pode estar reduzido por predefinição. Se estiver reduzido, clique em Mostrar painel de informações.

  4. Selecione ou desmarque as regiões necessárias.

  5. Clique em Atualizar.

CLI gcloud

Para aplicar a política de armazenamento de mensagens definida na política de restrição de localização de recursos da sua organização a um tópico, execute o seguinte comando:gcloud pubsub topics update

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 o seguinte:

  • TOPIC_ID: o ID do tópico que está a atualizar.
  • REGION1, REGION2: uma lista separada por vírgulas das regiões suportadas Trusted Cloud .

REST

Para atualizar um tópico com uma política de armazenamento de mensagens, use o método projects.topics.patch.

O pedido tem de ser autenticado com um token de acesso no cabeçalho.Authorization Para obter uma chave de acesso para as Credenciais padrão da aplicação atuais: 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 seguintes campos no corpo do pedido:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"], // Replace with your required region
    "enforceInTransit": true
  }
}

Onde:

  • PROJECT_ID é o ID do seu projeto.

  • TOPIC_ID é o ID do seu tópico.

  • REGION é a região especificada.

Exemplo de resposta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Consulte as seguintes referências da API para mais informações sobre a atualização das políticas de armazenamento de mensagens.

Faça a gestão das diferenças entre as políticas da organização e as políticas de tópicos

Veja as diferenças entre as políticas de organização e de tópicos

Consola

A Trusted Cloud consola apresenta quaisquer diferenças entre a política da organização e as políticas de armazenamento de mensagens dos tópicos individuais.

Para ver se algum tópico está dessincronizado com a política da sua organização:

  1. Aceda à página Detalhes do tópico.

    Aceda aos detalhes do tópico

  2. Selecione um tópico.

  3. No Painel de informações, selecione o separador Política de armazenamento.

    Este painel pode estar reduzido por predefinição. Se estiver reduzido, clique em Mostrar painel de informações.

    As suas políticas de armazenamento são apresentadas no painel, juntamente com as diferenças entre as políticas da organização e as políticas 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 o seguinte:

  • TOPIC_ID: o ID do tópico que está a analisar.

Resolva as diferenças entre as políticas de organização e de tópicos

Consola

  1. Na Trusted Cloud consola, abra a página Detalhes do tópico.

    Aceda ao Pub/Sub

  2. Selecione um tópico.

  3. No Painel de informações, selecione o separador Política de armazenamento.

    Este painel pode estar reduzido por predefinição. Se estiver reduzido, clique em Mostrar painel de informações.

    As suas políticas de armazenamento são apresentadas no painel, juntamente com quaisquer discrepâncias.

    Se existirem discrepâncias, o painel de informações apresenta três opções para sincronizar a política de armazenamento do tópico com a política da sua organização, incluindo:

    • Os tópicos permitem o armazenamento em localizações não permitidas.

      Atualize para permitir o armazenamento apenas onde a sua política o permite.

    • O tópico não permite o armazenamento em algumas localizações permitidas.

      Atualize para permitir o armazenamento em todos os locais permitidos pela sua política.

    • Os tópicos estão desatualizados com localizações permitidas e não permitidas.

      Atualize para permitir o armazenamento onde a sua política o permite.

  4. Selecione a opção adequada para resolver os seus problemas.

  5. Clique em Atualizar tópico.

    É apresentada a caixa de diálogo Sincronizar com a política de armazenamento da organização.

  6. Clique em Atualizar tópico.

Monitorização e resolução de problemas

Para ajudar a compreender onde os dados das mensagens são armazenados, o Pub/Sub oferece métricas discriminadas por cada Trusted Cloud região.

Pode usar estas métricas para:

  • Compreenda como os seus dados são distribuídos em todo o mundo.
  • Otimizar a localização de implementação do publicador e do subscritor com base nesses dados.

Métricas de armazenamento de mensagens

Contagens de mensagens armazenadas não reconhecidas:

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

Estão disponíveis métricas análogas para tópicos e momentos. Além disso, as métricas correspondentes estão disponíveis para mensagens reconhecidas que são opcionalmente retidas para repetição. Por exemplo:

subscription/num_retained_acked_messages_by_region

Implicações no desempenho e na disponibilidade

A política de armazenamento de mensagens não afeta o SLA geral, mas introduz uma compensação de controlo de disponibilidade quando os publicadores ou os subscritores são executados fora Trusted Cloud ou em regiões não permitidas pela política. Os utilizadores que executam clientes publicadores no conjunto de regiões permitidas pela política de armazenamento de mensagens não veem alterações na latência nem na disponibilidade do serviço.

Para compreender estas concessões, vale a pena considerar como os pedidos de publicação são encaminhados. Geralmente, o Pub/Sub tenta armazenar as suas mensagens o mais perto possível da origem do pedido. Os pedidos originados em Trusted Cloud estão, por norma, associados às instâncias do Pub/Sub na mesma região. Se uma editora estiver localizada numa única região, a adição de mais regiões à política de armazenamento de mensagens não aumenta a disponibilidade. Quando publica a partir de fora de Trusted Cloud by S3NS, é envolvida uma camada adicional de encaminhamento para enviar o pedido para uma região Trusted Cloud by S3NS próxima onde o serviço Pub/Sub está disponível.

Considere uma política de armazenamento de mensagens que permita apenas a região us-central1.

  1. Um cliente publicador em execução no us-east1 emite um pedido Publish.
  2. O pedido é encaminhado para um servidor do Pub/Sub em us-east1.
  3. Em vez de armazenar os dados em us-east1, o pedido é encaminhado para a região mais próxima permitida pela política de armazenamento de mensagens, que é us-central1.
  4. O Pub/Sub armazena as mensagens publicadas em us-central1 e encaminha as mensagens para os subscritores a partir dessa localização.

Este mecanismo tem implicações para a latência dos pedidos e a disponibilidade geral do sistema. Uma vez que o pedido atravessa mais associações de rede, demora mais tempo a ser concluído e tem uma probabilidade relativamente maior de falhar.Isto também significa que os subscritores podem ver a mensagem um pouco mais tarde, uma vez que tem de viajar para a região permitida mais próxima antes de ser enviada. Se a política permitir uma única região, mas as suas aplicações de publicador forem executadas em várias regiões, a aplicação distribuída fica disponível apenas na região permitida.

O que se segue?