Esta página ajuda a compreender o Pub/Sub, o motivo pelo qual as empresas precisam do Pub/Sub e as vantagens do Pub/Sub em comparação com tecnologias semelhantes. Além disso, saiba mais sobre os conceitos principais do Pub/Sub, que incluem os termos tópico, publicador e subscritor.
O Pub/Sub é um serviço de mensagens assíncrono e escalável que desassocia os serviços que produzem mensagens dos serviços que processam essas mensagens.
O Pub/Sub permite que os serviços comuniquem de forma assíncrona, com latências na ordem dos 100 milissegundos.
O Pub/Sub é usado para pipelines de análise de streaming e integração de dados para carregar e distribuir dados. É igualmente eficaz como um middleware orientado para mensagens para integração de serviços ou como uma fila para paralelizar tarefas.
O Pub/Sub permite-lhe criar sistemas de produtores e consumidores de eventos, denominados publicadores e subscritores. Os publicadores comunicam com os subscritores de forma assíncrona através da transmissão de eventos, em vez de chamadas de procedimentos remotos (RPCs) síncronas.
Os publicadores enviam eventos para o serviço Pub/Sub, independentemente de como ou quando estes eventos devem ser processados. Em seguida, o Pub/Sub envia eventos a todos os serviços que reagem a eles. Nos sistemas que comunicam através de RPCs, os publicadores têm de aguardar que os subscritores recebam os dados. No entanto, a integração assíncrona no Pub/Sub aumenta a flexibilidade e a robustez do sistema geral.
Para começar a usar o Pub/Sub, consulte o Início rápido com a Google Cloud consola. Para uma introdução mais abrangente, consulte o artigo Criar um sistema de mensagens Pub/Sub.
Exemplos de utilização comuns
Registo da interação do utilizador e dos eventos do servidor. Para usar eventos de interação do utilizador de apps de utilizadores finais ou eventos de servidor do seu sistema, pode encaminhá-los para o Pub/Sub. Em seguida, pode usar uma ferramenta de processamento de streams, como o Dataflow, que envia os eventos para bases de dados. Exemplos de bases de dados deste tipo são o BigQuery, o Bigtable e o Cloud Storage. O Pub/Sub permite-lhe recolher eventos de muitos clientes em simultâneo.
Distribuição de eventos em tempo real. Os eventos, brutos ou processados, podem ser disponibilizados a várias aplicações na sua equipa e organização para processamento em tempo real. O Pub/Sub suporta um "barramento de eventos empresarial" e padrões de design de aplicações orientados por eventos. O Pub/Sub permite-lhe integrar-se com muitos sistemas Google que exportam eventos para o Pub/Sub.
Replicar dados entre bases de dados. O Pub/Sub é usado frequentemente para distribuir eventos de alteração de bases de dados. Estes eventos podem ser usados para construir uma vista do estado da base de dados e do histórico de estados no BigQuery e noutros sistemas de armazenamento de dados.
Processamento e fluxos de trabalho paralelos. Pode distribuir eficientemente muitas tarefas entre vários trabalhadores através de mensagens do Pub/Sub para se ligar a funções do Cloud Run. Alguns exemplos destas tarefas são a compressão de ficheiros de texto, o envio de notificações por email, a avaliação de modelos de IA e a reformatação de imagens.
Barramento de eventos empresarial. Pode criar um barramento de partilha de dados em tempo real ao nível da empresa, distribuindo eventos empresariais, atualizações de bases de dados e eventos de estatísticas em toda a sua organização.
Streaming de dados a partir de aplicações, serviços ou dispositivos de IoT. Por exemplo, uma aplicação SaaS pode publicar um feed de eventos em tempo real. Em alternativa, um sensor residencial pode transmitir dados para o Pub/Sub para utilização noutros Google Cloud produtos através de um pipeline do Dataflow.
Atualizar caches distribuídas. Por exemplo, uma aplicação pode publicar eventos de invalidação para atualizar os IDs dos objetos que foram alterados.
Balanceamento de carga para fiabilidade. Por exemplo, as instâncias de um serviço podem ser implementadas no Compute Engine em várias zonas, mas subscrever um tópico comum. Quando o serviço falha numa zona, as outras podem assumir a carga automaticamente.
Tipos de serviços Pub/Sub
O Pub/Sub consiste em dois serviços:
Serviço Pub/Sub. Este serviço de mensagens é a escolha predefinida para a maioria dos utilizadores e aplicações. Oferece a fiabilidade mais elevada e o maior conjunto de integrações, juntamente com a gestão automática da capacidade. O Pub/Sub garante a replicação síncrona de todos os dados para, pelo menos, duas zonas e a replicação de melhor esforço para uma terceira zona adicional.
Serviço Pub/Sub Lite. Um serviço de mensagens separado, mas semelhante, criado para ter um custo inferior. Oferece uma fiabilidade inferior em comparação com o Pub/Sub. Oferece armazenamento de tópicos zonal ou regional. Os tópicos do Zonal Lite são armazenados apenas numa zona. Os tópicos Lite regionais replicam dados para uma segunda zona de forma assíncrona. Além disso, o Pub/Sub Lite requer o aprovisionamento prévio e a gestão da capacidade de armazenamento e débito. Considere o Pub/Sub Lite apenas para aplicações em que alcançar um custo baixo justifica algum trabalho operacional adicional e uma fiabilidade inferior.
Para mais detalhes sobre as diferenças entre o Pub/Sub e o Pub/Sub Lite, consulte o artigo Escolher o Pub/Sub ou o Pub/Sub Lite.
Comparar o Pub/Sub com outras tecnologias de mensagens
O Pub/Sub combina a escalabilidade horizontal do Apache Kafka e do Pulsar com funcionalidades encontradas no middleware de mensagens tradicional, como o Apache ActiveMQ e o RabbitMQ. Alguns exemplos destas funcionalidades são as filas de mensagens não entregues e a filtragem.
Outra funcionalidade que o Pub/Sub adota do middleware de mensagens é o paralelismo por mensagem, em vez de mensagens baseadas em partições. O Pub/Sub "aluga" mensagens individuais a clientes subscritores e, em seguida, monitoriza se uma determinada mensagem é processada com êxito.
Por outro lado, outros sistemas de mensagens escaláveis horizontalmente usam partições para a escalabilidade horizontal. Isto força os subscritores a processarem as mensagens em cada partição por ordem e limita o número de clientes concorrentes ao número de partições. O processamento por mensagem maximiza o paralelismo das aplicações de subscrição e ajuda a garantir a independência do publicador/subscritor.
Compare a comunicação entre serviços e entre serviços e clientes
O Pub/Sub destina-se à comunicação entre serviços e não à comunicação com clientes de utilizadores finais ou de IoT. Outros padrões são mais bem suportados por outros produtos:
- Cliente-servidor. Para enviar mensagens entre uma app Web/para dispositivos móveis e um serviço, use produtos que incluam a Firebase Realtime Database e o Firebase Cloud Messaging.
- Chamadas de serviço assíncronas. Use o Cloud Tasks.
Pode usar uma combinação destes serviços para criar padrões de cliente -> serviços -> base de dados. Por exemplo, consulte o tutorial Streaming de mensagens Pub/Sub através de WebSockets.
Integrações
O Pub/Sub tem muitas integrações com outros Google Cloud produtos para criar um sistema de mensagens com todas as funcionalidades:
- Processamento de streams e integração de dados. Suportado pelo Dataflow, incluindo modelos do Dataflow e SQL, que permitem o processamento e a integração de dados no BigQuery e nos data lakes no Cloud Storage. Os modelos do Dataflow para mover dados do Pub/Sub para o Cloud Storage, o BigQuery e outros produtos estão disponíveis nas IU do Pub/Sub e do Dataflow naGoogle Cloud consola. A integração com o Apache Spark, particularmente quando gerido com o Dataproc, também está disponível. A composição visual de pipelines de integração e processamento executados no Spark + Dataproc pode ser realizada com o Data Fusion.
- Monitorizar, alertar e registar. Apoiado por produtos de monitorização e registo.
- Autenticação e IAM. O Pub/Sub baseia-se numa autenticação OAuth padrão usada por outros Google Cloud produtos e suporta o IAM detalhado, o que permite o controlo de acesso para recursos individuais.
- APIs. O Pub/Sub usa tecnologias de API de serviço gRPC e REST padrão, juntamente com bibliotecas cliente para vários idiomas.
- Acionadores, notificações e webhooks. O Pub/Sub oferece o fornecimento de mensagens baseado em push como pedidos HTTP POST para webhooks. Pode implementar a automatização do fluxo de trabalho através das Cloud Functions ou de outros produtos sem servidor.
- Orquestração. O Pub/Sub pode ser integrado em fluxos de trabalho sem servidor de vários passos de forma declarativa. A orquestração de grandes volumes de dados e estatísticas é frequentemente feita com o Cloud Composer, que suporta acionadores do Pub/Sub. Também pode integrar o Pub/Sub com a integração de aplicações (pré-visualização), que é uma solução de plataforma de integração como serviço (iPaaS). A integração de aplicações fornece um acionador do Pub/Sub para acionar ou iniciar integrações.
- Conetores de integração.(Pré-visualização) Estes conetores permitem-lhe estabelecer ligação a várias origens de dados. Com os conetores, os Google Cloud serviços e as aplicações empresariais de terceiros são expostos às suas integrações através de uma interface transparente e padrão. Para o Pub/Sub, pode criar uma ligação do Pub/Sub para utilização nas suas integrações.
Conceitos principais
- Tópico. Um recurso com nome para o qual as mensagens são enviadas pelos publicadores.
- Subscrição. Um recurso denominado que representa a stream de mensagens de um único tópico específico a ser entregue à aplicação subscrita. Para mais detalhes sobre as subscrições e a semântica de entrega de mensagens, consulte o guia do subscritor.
- Mensagem. A combinação de dados e atributos (opcionais) que um publicador envia para um tópico e que é, eventualmente, entregue aos subscritores.
- Atributo de mensagem. Um par de chave-valor que um publicador pode definir para uma mensagem. Por exemplo, a chave
iana.org/language_tag
e o valoren
podem ser adicionados às mensagens para as marcar como legíveis por um subscritor de língua inglesa. - Publicador. Uma aplicação que cria e envia mensagens para um ou vários tópicos.
- Subscritor. Uma aplicação com uma subscrição de um ou vários tópicos para receber mensagens dos mesmos.
- Confirmação (ou "ack"). Um sinal enviado por um subscritor para o Pub/Sub depois de ter recebido uma mensagem com êxito. As mensagens acusadas são removidas da fila de mensagens de subscrição.
- Empurrar e puxar. Os dois métodos de envio de mensagens. Um subscritor recebe mensagens através do envio push das mesmas para o ponto final escolhido pelo subscritor, ou através da obtenção pull das mesmas a partir do serviço.
As relações publicador-subscritor podem ser de um para muitos (fan-out), de muitos para um (fan-in) e de muitos para muitos, conforme mostrado no diagrama seguinte:
O diagrama seguinte ilustra como uma mensagem passa de um publicador para um subscritor. Para a entrega push, o reconhecimento está implícito na resposta ao pedido push, enquanto para a entrega pull requer um RPC separado.
Passos seguintes
- Comece com o início rápido do Pub/Sub ou o início rápido do Pub/Sub Lite.
- Leia a vista geral da arquitetura do Pub/Sub.
- Saiba como criar um sistema de mensagens Pub/Sub.
- Compreenda os preços do Pub/Sub.
- Compreenda as quotas e os limites do Pub/Sub e do Pub/Sub Lite.
- Leia as notas de lançamento do Pub/Sub.
- Explore a engenharia de dados com os Google Cloud serviços no Qwiklabs.