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 |
|
| Assinatura de push |
|
|
| Exportar assinatura |
|
|
| 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 |
|
|
| 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: