Escolher um tipo de assinatura

Este documento ajuda você a escolher o tipo adequado de assinatura do Pub/Sub para os requisitos da sua empresa.

O Pub/Sub oferece os seguintes tipos de assinaturas:

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

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

  • A opção Exportar assinaturas exporta suas mensagens diretamente para um recurso Google Cloud. Essas assinaturas incluem o seguinte:

    • As assinaturas do BigQuery exportam dados para uma tabela do BigQuery.

    • As 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 compatíveis com 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 endpoint HTTPS público com um certificado SSL não autoassinado.
Assinatura de push
  • Diversos tópicos precisam ser processados pelo mesmo webhook.
  • Assinantes do App Engine Standard ou do Cloud Run functions.
  • Ambientes em que não é viável configurar dependências do Google Cloud, como credenciais e a biblioteca de cliente.
Exportar assinatura
  • Grande volume de mensagens que podem ser escalonar verticalmente para vários milhões de mensagens por segundo.
  • Enviar mensagens diretamente para um Google Cloud recurso sem processamento adicional.
Endpoints Assinatura de pull Qualquer dispositivo da 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 A assinatura grava em um recurso Google Cloud , como uma tabela do BigQuery ou um bucket do Cloud Storage.
Balanceamento de carga Assinatura de pull Vários assinantes podem fazer chamadas de pull para a mesma assinatura. 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 equilibra automaticamente a carga.

Configuração Assinatura de pull

Não é necessário configurar.

Assinatura de 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.
Exportar assinatura O recurso Google Cloud para onde a assinatura exporta precisa existir e ser configurado 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, permitindo que o processamento de mensagens leve um tempo arbitrariamente longo.
Assinatura de 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 com a transmissão de um erro de HTTP.
Exportar assinatura O Pub/Sub implementa automaticamente o controle de fluxo para otimizar a gravação de mensagens no recurso de destino Google Cloud.
Eficiência e capacidade Assinatura de pull Consegue alta capacidade 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 eficiente se a pesquisa frequente 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 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 recurso Google Cloud . 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 com um único fluxo de trabalho no console, na CLI Google Cloud , 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 Pub/Sub multitenant 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á anexada, o 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 configuráveis de agrupamento 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 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 recursoGoogle 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 Transmitir 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: