Escolher um tipo de assinatura

Este documento ajuda você a escolher o tipo de assinatura do Pub/Sub adequado aos requisitos de negócios.

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

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

Assinatura de 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.
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 de pull
  • Vários assinantes podem fazer chamadas de pull para a mesma assinatura "compartilhada".
  • Cada assinante recebe um subconjunto de mensagens.
Assinatura de push

Os endpoints de push podem ser balanceadores de carga.

Exportar assinatura

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

Configuração Assinatura de pull

Não é necessário configurar.

Assinatura de push
  • Não é necessário configurar aplicativos do App Engine 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
  • Um conjunto de dados e uma tabela do BigQuery precisam existir para a assinatura do BigQuery, configurada com as permissões adequadas.
  • Um bucket do Cloud Storage precisa existir para a assinatura do Cloud Storage, configurada com as permissões adequadas.
Controle de fluxo Assinatura de pull

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

Assinatura de push

O servidor do Pub/Sub implementa automaticamente o controle de fluxo. Não é necessário processar o fluxo de mensagens no lado do cliente. No entanto, é possível indicar que o cliente não pode processar a carga 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 de pull

Consegue alta capacidade com baixo uso de CPU e largura de banda. Para isso, permite entrega em lote, confirmações e consumo massivo paralelo. Pode não ser eficaz se a pesquisa agressiva for usada para minimizar o tempo de entrega da mensagem.

Assinatura de push

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

Exportar assinatura

A capacidade de escalonamento é processada 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 as mensagens e gravá-las em um recurso do Google Cloud . O overhead da execução de um job do Dataflow não é necessário quando as mensagens não precisam de 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 CLI, biblioteca de cliente ou API Pub/Sub.

  • Custos baixos. Reduz o custo e a latência adicionais de pipelines semelhantes do Pub/Sub que incluem jobs do Dataflow. Essa otimização de custo é ú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 Pub/Sub multiusuá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á vinculada, que não está disponível com o modelo básico do Dataflow para gravação do Pub/Sub no BigQuery. Da mesma forma, uma assinatura do Cloud Storage oferece opções de lote de arquivos configuráveis com base no tamanho do arquivo e no tempo decorrido, que não são configuráveis no modelo básico do Dataflow para gravação do Pub/Sub no Cloud Storage.

No entanto, um pipeline do Dataflow ainda é recomendado para sistemas do 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 transmitir dados do Pub/Sub para o BigQuery com transformação usando o Dataflow, consulte Stream 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 de cada tipo de assinatura: