O que são o Pub/Sub e o Pub/Sub Lite?

Esta página ajuda você a entender o Pub/Sub, por que as empresas precisam dele e as vantagens do serviço em comparação com tecnologias semelhantes. Além disso, aprenda sobre os principais conceitos do Pub/Sub, que incluem os termos "tópico", "editor" e "assinante".

O Pub/Sub é um serviço de mensagens assíncrono e escalonável que separa os serviços que produzem mensagens dos serviços que processam essas mensagens.

Com o Pub/Sub, os serviços se comunicam de maneira assíncrona, com latência de aproximadamente 100 milissegundos.

O Pub/Sub é usado na análise de streaming e em pipelines de integração para processar e distribuir dados. Ele é igualmente eficaz como um middleware orientado a mensagens para integração de serviços ou como uma fila para carregar tarefas em paralelo.

Com o Pub/Sub, é possível criar sistemas de produtores e consumidores de eventos, chamados de editores e assinantes. Os editores se comunicam com os assinantes de forma assíncrona transmitindo eventos, em vez de realizar chamadas de procedimento remoto (RPCs) síncronas.

Os editores enviam eventos ao serviço do Pub/Sub, sem considerar como ou quando eles serão processados. Depois o Pub/Sub entrega eventos para todos os serviços que precisam responder a eles. Nos sistemas que se comunicam por RPCs, os publicadores precisam esperar que os assinantes recebam os dados. No entanto, a integração assíncrona no Pub/Sub aumenta a flexibilidade e a robustez do sistema como um todo.

Para começar a usar o Pub/Sub, confira o Guia de início rápido sobre como usar o Google Cloud console. Para uma introdução mais abrangente, consulte Como criar um sistema de mensagens do Pub/Sub.

Casos de uso comuns

  • Eventos do servidor e interação do usuário de processamento. Para usar eventos de interação do usuário de apps de usuário final ou eventos do servidor do seu sistema, encaminhe-os ao Pub/Sub. Em seguida, use uma ferramenta de processamento de stream, como o Dataflow, que entrega os eventos aos bancos de dados. Exemplos desses bancos de dados são o BigQuery, o Bigtable e o Cloud Storage. O Pub/Sub permite coletar eventos de muitos clientes simultaneamente.

  • Distribuição de eventos em tempo real. Eventos, brutos ou processados, podem ser disponibilizados para vários aplicativos em toda a sua equipe e organização para processamento em tempo real. O Pub/Sub oferece suporte a um "barramento de eventos empresariais" e padrões de design de aplicativos orientados a eventos. O Pub/Sub possibilita a integração com muitos sistemas do Google que exportam eventos para ele.

  • Replicação de dados entre bancos de dados. O Pub/Sub é usado com frequência para distribuir eventos de alteração de bancos de dados. Esses eventos podem ser usados para criar uma visualização do estado do banco de dados e do histórico de estados no BigQuery e em outros sistemas de armazenamento.

  • Processamento e fluxos de trabalho paralelos. É possível distribuir muitas tarefas entre vários workers usando mensagens do Pub/Sub para se conectar às funções do Cloud Run. Exemplos dessas tarefas são a compactação de arquivos de texto, o envio de notificações por e-mail, a avaliação de modelos de IA e a reformatação de imagens.

  • Barramento de eventos empresariais. Crie um barramento de compartilhamento de dados em tempo real para toda a empresa. Com ele, você distribui eventos empresariais e de análise e atualizações de bancos de dados por toda a organização.

  • Streaming de dados de aplicativos, serviços ou dispositivos IoT. Por exemplo, um aplicativo SaaS pode publicar um feed de eventos em tempo real. Ou, um sensor residencial pode transmitir dados para o Pub/Sub para uso em outros Google Cloud produtos por meio de um pipeline do Dataflow.

  • Atualizar caches distribuídos. Um aplicativo pode publicar eventos de invalidação para atualizar os códigos de objetos que foram alterados.

  • Balanceamento de carga para aumentar a confiabilidade. Por exemplo, é possível implantar as instâncias de um serviço no Compute Engine em várias zonas, mas assinar um tópico em comum. Quando o serviço falha em uma zona, as outras assumem a carga automaticamente.

Tipos de serviços do Pub/Sub

O Pub/Sub consiste em dois serviços:

  • Serviço do Pub/Sub. Esse serviço de mensagens é a opção padrão para a maioria dos usuários e aplicativos. Ele oferece a mais alta confiabilidade e o maior conjunto de integrações, além do gerenciamento automático de capacidade. O Pub/Sub garante a replicação síncrona de todos os dados em pelo menos duas zonas e a replicação de melhor esforço em uma terceira zona adicional.

  • Serviço do Pub/Sub Lite. Um serviço de mensagens separado, mas com recursos similares e a um custo menor. Ele oferece menor confiabilidade em comparação com o Pub/Sub. Ele oferece armazenamento de tópicos zonais ou regionais. Os tópicos do Lite zonais são armazenados em apenas uma zona. Os tópicos do Lite regionais replicam dados para uma segunda zona de forma assíncrona. Além disso, o Pub/Sub Lite exige que você pré-provisione e gerencie a capacidade de armazenamento e de capacidade de processamento. Escolha o Pub/Sub Lite apenas para aplicativos em que os custos muito baixos justificam o trabalho operacional extra e a menor confiabilidade.

Para mais detalhes sobre as diferenças entre o Pub/Sub e o Pub/Sub Lite, consulte Como escolher o Pub/Sub ou o Pub/Sub Lite.

Comparação entre o Pub/Sub e outras tecnologias de mensagens

O Pub/Sub combina a escalonabilidade horizontal do Apache Kafka e do Pulsar com os recursos de middlewares de mensagens tradicionais, como o Apache ActiveMQ e RabbitMQ. Exemplos desses recursos são as filas de mensagens inativas e a filtragem.

Outro recurso de middleware de mensagens incluído no Pub/Sub é o paralelismo por mensagem, em vez de mensagens baseadas em partição. O Pub/Sub "concede" mensagens individuais aos clientes do assinante e acompanha se alguma delas foi processada com sucesso.

Em comparação, outros sistemas de mensagens usam partições na escalonabilidade horizontal. Isso obriga os assinantes a processar mensagens em cada partição na ordem e limita o número de clientes simultâneos à quantidade de partições. O processamento por mensagem maximiza o paralelismo dos aplicativos do assinante e garante a independência do editor/assinante.

Comparar a comunicação entre serviços e entre serviço e cliente

O Pub/Sub é voltado para a comunicação entre serviços, e não para a comunicação com clientes de IoT ou usuários finais. Outros produtos oferecem um suporte melhor aos demais padrões:

É possível combinar esses serviços para criar padrões "cliente -> serviços -> banco de dados". Por exemplo, consulte o tutorial Como fazer streaming de mensagens do Pub/Sub para WebSockets.

Integrações

O Pub/Sub oferece muitas integrações com outros Google Cloud produtos para você criar um sistema de mensagens completo:

  • Integração de dados e processamento de stream. Compatível com o Dataflow, incluindo os modelos dessa ferramenta e o SQL. Eles permitem o processamento e a integração de dados no BigQuery e data lakes no Cloud Storage. Os modelos do Dataflow para mover dados do Pub/Sub ao Cloud Storage, BigQuery e outros produtos estão disponíveis nas IUs do Pub/Sub e do Dataflow no Google Cloud console. A integração com o Apache Spark, principalmente quando gerenciada com o Serviço Gerenciado para Apache Spark, também está disponível. Com o Data Fusion, você visualiza os pipelines de integração e processamento executados no Spark e no Serviço Gerenciado para Apache Spark .
  • Monitoramento, alertas e geração de registros. Compatível com os produtos Monitoring e Logging.
  • Autenticação e IAM. O Pub/Sub inclui a autenticação OAuth padrão usada pelos outros Google Cloud produtos e é compatível com o IAM granular, o que possibilita o controle de acesso de recursos individuais.
  • APIs. O Pub/Sub usa tecnologias padrão da API REST e gRPC com bibliotecas de cliente em várias linguagens.
  • Gatilhos, notificações e webhooks. O Pub/Sub entrega mensagens por push como solicitações POST HTTP feitas para webhooks. É possível implementar a automação do fluxo de trabalho usando Cloud Functions ou outros produtos sem servidor.
  • Orquestração. O Pub/Sub pode ser integrado de maneira declarativa a fluxos de trabalho sem servidor com várias etapas. A orquestração de Big Data e análise de dados geralmente é feita com o Airflow Gerenciado, que é compatível com os gatilhos do Pub/Sub. Também é possível integrar o Pub/Sub com a Application Integration (prévia), que é uma solução de plataforma de integração como serviço (iPaaS). A Application Integration fornece um gatilho do Pub/Sub para acionar ou iniciar integrações.
  • Integration Connectors(prévia). Esses conectores permitem que você se conecte a várias fontes de dados. Com os conectores, os Google Cloud serviços e os aplicativos empresariais de terceiros são expostos às suas integrações por uma interface padrão e transparente. Para o Pub/Sub, é possível criar uma conexão do Pub/Sub para uso nas integrações.

Principais conceitos

  • Tópico. Um recurso nomeado para o qual os editores enviam mensagens.
  • Assinatura. Um recurso nomeado que representa o fluxo de mensagens de um determinado tópico a ser entregue para o aplicativo assinante. Para ver mais detalhes sobre assinaturas e a semântica da entrega de mensagens, consulte o Guia do assinante.
  • Mensagem. A combinação de dados e atributos (opcionais) que um editor envia para um tópico, sendo posteriormente entregue aos assinantes.
  • Atributo da mensagem. Um par de chave-valor que um editor pode definir para uma mensagem. Por exemplo, a chave iana.org/language_tag e o valor en podem ser adicionados às mensagens para marcá-las como legíveis por um assinante que fala inglês.
  • Editor. Um aplicativo que cria e envia mensagens para um ou vários tópicos.
  • Assinante. Um aplicativo com assinatura em um ou vários tópicos para receber as mensagens dele.
  • Confirmação. Um sinal enviado por um assinante ao Pub/Sub depois de receber uma mensagem com sucesso. As mensagens confirmadas são removidas da fila de mensagens da assinatura.
  • Push e pull. Os dois métodos de entrega de mensagem. O assinante recebe as mensagens por meio de um push do Pub/Sub para o endpoint escolhido ou de um pull realizado no serviço.

A relação entre editor e assinante pode ser de um para muitos (distribuição de dados), de muitos para um (fan-in) e de muitos para muitos. É o que mostra o diagrama a seguir:

Relacionamentos entre editor e assinante

O diagrama a seguir mostra como uma mensagem é transmitida de um editor a um assinante. Na entrega por push, a confirmação é implícita na resposta à solicitação, enquanto a entrega por pull requer uma RPC separada.

Ciclo de vida das mensagens

Próximas etapas