Escolher um tipo de assinatura

Este documento ajuda você a escolher o tipo de assinatura do Pub/Sub adequado às suas necessidades comerciais.

O Pub/Sub oferece os seguintes tipos de assinaturas:

  • Assinaturas de pull usam um cliente assinante para solicitar mensagens do servidor do Pub/Sub.

  • Assinaturas de push usam o servidor do Pub/Sub para iniciar solicitações ao aplicativo do assinante para entregar mensagens.

  • Assinaturas de exportação exportam suas mensagens diretamente para um Google Cloud recurso. Essas assinaturas incluem:

    • Assinaturas do BigQuery exportam dados para uma tabela do BigQuery.

    • Assinaturas do Bigtable (visualização) exportam dados para uma tabela do Bigtable.

    • Assinaturas do Cloud Storage exportam dados para um bucket do Cloud Storage.

Tabela de comparação de assinaturas do Pub/Sub

A tabela a seguir oferece uma orientação para escolher o mecanismo de entrega adequado para seu aplicativo:

Recursos com suporte nas assinaturas do Pub/Sub
Caso de uso Assinatura por pull
  • Grande volume de mensagens (GBs por segundo).
  • A eficiência e a capacidade de processamento da mensagem são fundamentais.
  • Ambientes em que não é viável configurar um endpoint HTTPS público com um certificado SSL não autoassinado.
Assinatura por push
Assinatura de exportação
  • Grande volume de mensagens que podem ser escalonar verticalmente para vários milhões de mensagens por segundo.
  • Envio de mensagens diretamente para um Google Cloud recurso sem processamento adicional.
Endpoints Assinatura por pull Qualquer dispositivo da Internet que tem credenciais autorizadas pode chamar a API Pub/Sub.
Assinatura por push

Um servidor HTTPS com certificado não autoassinado acessível na Web pública.

O endpoint de recebimento pode ser separado da assinatura do Pub/Sub, para que as mensagens de várias assinaturas sejam enviadas para um único endpoint.

Assinatura de exportação A assinatura grava em um Google Cloud recurso, como uma tabela do BigQuery ou um bucket do Cloud Storage.
Balanceamento de carga Assinatura por pull Vários inscritos podem fazer chamadas de pull para a mesma assinatura. Cada inscrito recebe um subconjunto de mensagens.
Assinatura por push

Os endpoints de push podem ser balanceadores de carga.

Assinatura de exportação

O serviço Pub/Sub equilibra automaticamente a carga.

Configuração Assinatura por pull

Não é necessário configurar.

Assinatura por push
  • Nenhuma configuração é necessária para aplicativos do App Engine no mesmo projeto que o assinante.
  • A verificação de endpoints de push não é necessária no Google Cloud console.
  • Os endpoints precisam ser acessíveis usando nomes DNS e ter certificados SSL instalados.
Assinatura de exportação O Google Cloud recurso para o qual a assinatura é exportada precisa existir e ser configurado com as permissões adequadas.
Controle de fluxo Assinatura por pull O cliente do inscrito controla a taxa de entrega. O inscrito pode modificar dinamicamente o prazo de confirmação, o que permite que o processamento da mensagem leve um tempo arbitrariamente longo.
Assinatura por push O servidor do Pub/Sub implementa automaticamente o controle de fluxo. Os clientes não precisam processar o fluxo de mensagens. No entanto, é possível indicar que o cliente não pode processar a carga de mensagens atual, transmitindo um erro HTTP.
Assinatura de exportação O Pub/Sub implementa automaticamente o controle de fluxo para otimizar a gravação de mensagens no recurso de destino Google Cloud resource.
Eficiência e capacidade de processamento Assinatura por pull Consegue alta capacidade de processamento com baixo uso de CPU e largura de banda. Para isso, permite a entrega e a confirmação de mensagens em lote, assim como o consumo paralelo massivo. Pode não ser eficaz se a pesquisa frequente for usada para minimizar o tempo de entrega da mensagem.
Assinatura por push Entrega uma mensagem por solicitação e limita o número máximo de mensagens pendentes.
Assinatura de exportação O Pub/Sub processa a escalonabilidade de forma dinâmica.

Quando usar uma assinatura de exportação

Sem uma assinatura de exportação, você precisa de uma assinatura de pull ou push e de um assinante (como o Dataflow) para ler mensagens e gravá-las em um Google Cloud recurso. A sobrecarga de executar um job do Dataflow não é necessária quando as mensagens não exigem processamento adicional antes de serem armazenadas.

As assinaturas de exportação têm as seguintes vantagens:

  • Implantação simples. É possível configurar uma assinatura de exportação em um único fluxo de trabalho no console, Google Cloud na CLI, na biblioteca de cliente ou na API Pub/Sub.

  • Custos baixos. Reduz o custo adicional e a latência de pipelines semelhantes do Pub/Sub que incluem jobs do Dataflow. Essa otimização de custos é útil para sistemas de mensagens que não exigem processamento adicional antes do armazenamento.

  • Monitoramento mínimo. As assinaturas de exportação fazem parte do serviço multitenant do Pub/Sub e não exigem que você execute jobs de monitoramento separados.

  • Flexibilidade. As assinaturas de exportação oferecem recursos que não estão disponíveis nos modelos do Dataflow fornecidos pelo Google. Exemplo:

    • Uma assinatura do BigQuery pode usar o esquema do tópico ao qual está anexada.

    • Uma assinatura de Cloud Storage oferece opções configuráveis de lote de arquivos com base no tamanho do arquivo e no tempo decorrido.

    • Uma assinatura do Bigtable (visualização) tem uma opção integrada para gravar metadados de mensagens em um grupo de colunas dedicado.

No entanto, se o aplicativo precisar realizar transformações de dados que não podem ser implementadas usando transformações de mensagem única (SMTs, na sigla em inglês) antes de gravar as mensagens em um destino, recomendamos o uso de um pipeline do Dataflow.

Para saber como transmitir dados do Pub/Sub para o BigQuery com transformação usando o Dataflow, consulte Transmitir do Pub/Sub para o BigQuery.

Para saber como transmitir dados do Pub/Sub para o Cloud Storage com transformação usando o Dataflow, consulte Transmitir mensagens do Pub/Sub usando o Dataflow.

A seguir

Entenda o fluxo de trabalho de cada tipo de assinatura: