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 App Engine Standard e do Cloud Run functions.
  • Ambientes em que não é viável configurar as dependências do Google Cloud, como credenciais e biblioteca de cliente.
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 paralelo massivo. 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 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 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 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 os dados 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: