Escolher um tipo de assinatura

Este documento ajuda você a escolher o tipo apropriado de assinatura do Pub/Sub mais adequado aos seus requisitos comerciais.

Antes de começar

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 compatíveis com as assinaturas do Pub/Sub
Caso de uso Assinatura pull
  • Grande volume de mensagens (GB por segundo).
  • A eficiência e a capacidade do 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 push
  • Vários tópicos que precisam ser processados pelo mesmo webhook.
  • Assinantes do Cloud Functions e do ambiente padrão do Google App Engine.
  • Ambientes em que não é viável configurar as dependências do Google Cloud, como credenciais e a biblioteca de cliente.
Exportar assinatura
  • Grande volume de mensagens que pode ser escalonar verticalmente para vários milhões de mensagens por segundo.
  • As mensagens são enviadas diretamente para um recurso do Google Cloud sem nenhum processamento adicional.
Endpoints Assinatura pull

Qualquer dispositivo da Internet que tenha credenciais autorizadas pode chamar a API Pub/Sub.

Assinatura push
  • Um servidor HTTPS com certificado não autoassinado acessível na Web pública.
  • O endpoint de recebimento pode ser dissociado da assinatura do Pub/Sub para que as mensagens de várias assinaturas sejam enviadas para um único endpoint.
Exportar assinatura
  • Um conjunto de dados e uma tabela do BigQuery para uma assinatura do BigQuery.
  • Um bucket do Cloud Storage para uma assinatura do Cloud Storage.
Balanceamento de carga Assinatura pull
  • Vários assinantes podem fazer chamadas de envio para a mesma assinatura "compartilhada".
  • Cada assinante recebe um subconjunto de mensagens.
Assinatura push

Os endpoints de push podem ser balanceadores de carga.

Exportar assinatura

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

Configuração Assinatura pull

Não é necessário configurar.

Assinatura push
  • Nenhuma configuração é necessária para aplicativos do App Engine que estão no mesmo projeto que o assinante.
  • A verificação de endpoints de push não é necessária no console do Google Cloud.
  • Os endpoints precisam ser acessíveis usando nomes DNS e ter certificados SSL instalados.
Exportar assinatura
  • É necessário que exista um conjunto de dados e uma tabela do BigQuery para a assinatura do BigQuery, configurados com as permissões apropriadas.
  • É necessário que exista um bucket do Cloud Storage para a assinatura do Cloud Storage, configurado com as permissões apropriadas.
Controle de fluxo Assinatura pull

O cliente do assinante controla a taxa de entrega. O assinante pode modificar dinamicamente o prazo de confirmação, permitindo que o processamento da mensagem seja arbitrariamente longo.

Assinatura push

O servidor do Pub/Sub implementa automaticamente o controle de fluxo. Não é necessário lidar com o fluxo de mensagens no lado do cliente. No entanto, é possível indicar que o cliente não consegue processar o carregamento de mensagens atual com a transmissão de um erro HTTP.

Exportar assinatura

O servidor do Pub/Sub implementa automaticamente o controle de fluxo para otimizar a gravação de mensagens em um recurso do Google Cloud.

Eficiência e capacidade Assinatura pull

Alcança alta capacidade com pouca CPU e largura de banda, permitindo a entrega em lote, as confirmações e o consumo paralelo massivo. Pode ser ineficiente se a pesquisa agressiva for usada para minimizar o tempo de entrega da mensagem.

Assinatura push

entrega uma mensagem por solicitação e limita o número máximo de mensagens pendentes.

Exportar assinatura

A escalonabilidade é gerenciada dinamicamente pelos servidores do Pub/Sub.

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 recurso do Google Cloud. A sobrecarga da execução de um job do Dataflow não é necessária quando as mensagens não exigem processamento extra 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 usando um único fluxo de trabalho no console, na Google Cloud CLI, na biblioteca de cliente ou na API Pub/Sub.

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

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

  • Flexibilidade. Uma assinatura do BigQuery pode usar o esquema do tópico a que está anexado, que não está disponível com o modelo básico do Dataflow para gravar do Pub/Sub para o BigQuery. Da mesma forma, uma assinatura do Cloud Storage oferece opções configuráveis de lote de arquivos com base no tamanho do arquivo e no tempo decorrido, que não são configuráveis no modelo básico do Dataflow para gravar do Pub/Sub no Cloud Storage.

No entanto, um pipeline do Dataflow ainda é recomendado para sistemas Pub/Sub em que alguma transformação de dados é necessária antes que eles sejam armazenados em um recurso do Google Cloud, como uma tabela do BigQuery ou um bucket do Cloud Storage.

Para saber como fazer streaming de dados do Pub/Sub para o BigQuery com transformação usando o Dataflow, consulte Fazer streaming do Pub/Sub para o BigQuery.

Para saber como fazer streaming de dados do Pub/Sub para o Cloud Storage com transformação usando o Dataflow, consulte Fazer streaming de mensagens do Pub/Sub usando o Dataflow.

A seguir

Entenda o fluxo de trabalho para cada tipo de assinatura: