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 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 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.
  • Ambientes em que as dependências do Google Cloud (como credenciais e a biblioteca de cliente) não são viáveis de configurar.
Exportar assinatura
  • Grande volume de mensagens que pode ser escalonado 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 da Internet com credenciais autorizadas pode para chamar a API Pub/Sub.

Assinatura de push
  • Um servidor HTTPS com certificado não autoassinado acessível em 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 Assinatura do BigQuery.
  • Um bucket do Cloud Storage para uma instância assinatura.
Balanceamento de carga Assinatura 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
  • Nenhuma configuração é necessária para aplicativos do App Engine no no mesmo projeto que o assinante.
  • Não é necessária a verificação de endpoints de push 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 pull

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

Assinatura de push

O servidor do Pub/Sub implementa automaticamente o controle de fluxo. Não há necessidade de lidar com 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 pull

Alcança uma alta capacidade com CPU e largura de banda baixas ao permitir a entrega em lote, as confirmações e os modelos e consumo. 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 escalonabilidade é processada dinamicamente pelo Pub/Sub servidores.

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 é necessário quando as mensagens não exigir mais processamento antes de serem armazenados.

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

  • Implantação simples. Você pode configurar uma assinatura de exportação com um um único fluxo de trabalho no console, a Google Cloud CLI, a biblioteca de cliente, ou a API Pub/Sub.

  • Baixo custo. Reduz o custo e a latência adicionais 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. A exportação de assinaturas faz parte do processo serviço do Pub/Sub e não exigem que você execute jobs de monitoramento.

  • 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 aprender a transmitir dados do Pub/Sub para BigQuery com transformação usando o Dataflow consulte Fazer streaming do Pub/Sub para o BigQuery.

Para aprender a transmitir dados do Pub/Sub para Cloud Storage com transformação usando no Dataflow, consulte Faça streaming de mensagens do Pub/Sub usando o Dataflow.

A seguir

Entenda o fluxo de trabalho de cada tipo de assinatura: