O que é o Pub/Sub?

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 as processam.

O Pub/Sub permite que os serviços se comuniquem de maneira assíncrona, com latências de 100 milissegundos.

O Pub/Sub é usado para análises de streaming e pipelines de integração de dados para carregar e distribuir dados. É igualmente eficaz como um middleware voltado para mensagens para integração de serviços ou como uma fila para carregar tarefas em paralelo.

O Pub/Sub permite criar sistemas de produtores e consumidores de eventos, chamados editores e inscritos. 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 Pub/Sub, sem considerar como ou quando esses eventos serão processados. Em seguida, o Pub/Sub envia eventos para todos os serviços que reagem a eles. Nos sistemas que se comunicam por RPCs, os editores precisam esperar os assinantes receberem 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, confira o Guia de início rápido sobre o uso do console do Google Cloud. Para ver uma introdução mais completa, consulte Como criar um sistema de mensagens do Pub/Sub.

Casos de uso comuns

  • Ingestão de eventos do servidor e interação do usuário. Para usar eventos de interação do usuário de apps do usuário final ou eventos de servidor do seu sistema, encaminhe-os para o Pub/Sub. Em seguida, é possível usar uma ferramenta de processamento de stream, como o Dataflow, que envia os eventos para bancos de dados. Exemplos desses bancos de dados são BigQuery, Bigtable e Cloud Storage. O Pub/Sub permite coletar eventos de vários clientes simultaneamente.
  • Distribuição de eventos em tempo real. Os eventos, brutos ou processados, podem ser disponibilizados a vários aplicativos da sua equipe e organização para processamento em tempo real. O Pub/Sub é compatível com um "barramento de eventos empresarial" e padrões de design de aplicativos orientados a eventos. O Pub/Sub permite a integração com muitos sistemas que exportam eventos para o Pub/Sub.
  • Replicação de dados entre bancos de dados. O Pub/Sub costuma ser usado 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 de dados.
  • Processamento e fluxos de trabalho paralelos. É possível distribuir com eficiência muitas tarefas entre vários workers usando mensagens do Pub/Sub para se comunicar com eles. Exemplos dessas tarefas incluem compactação de arquivos de texto, envio de notificações por e-mail, avaliação de modelos de IA e reformatação de imagens.
  • Barramento de eventos empresariais. É possível criar um barramento de compartilhamento de dados em tempo real para toda a empresa, distribuindo eventos de negócios, atualizações de banco de dados e eventos de análise em 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 ao Pub/Sub para uso em outros produtos do Google Cloud por meio de um pipeline de processamento de dados.
  • Atualizar caches distribuídos. Por exemplo, um aplicativo pode publicar eventos de invalidação para atualizar os IDs de objetos que foram alterados.
  • Balanceamento de carga para aumentar a confiabilidade. Por exemplo, as instâncias de um serviço podem ser implantadas no Compute Engine em várias zonas, mas são inscritas em um tópico comum. Quando o serviço falha em qualquer zona, os outros podem pegar a carga automaticamente.

Tipos de serviços do Pub/Sub

O Pub/Sub consiste em dois serviços:

  • Serviço Pub/Sub. Esse serviço de mensagens é a escolha padrão para a maioria dos usuários e aplicativos. Ele oferece a maior confiabilidade e o maior conjunto de integrações, além do gerenciamento automático de capacidade. O Pub/Sub é compatível com 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 por um custo menor. Ele oferece menor confiabilidade em comparação com o Pub/Sub. Ele oferece armazenamento de tópicos zonal ou regional. Os tópicos do Lite zonal são armazenados em apenas uma zona. Os tópicos regionais do Lite replicam dados de forma assíncrona em uma segunda zona. Além disso, o Pub/Sub Lite exige que você pré-provisione e gerencie o armazenamento e a capacidade de processamento. Considere usar o Pub/Sub Lite apenas para aplicativos em que um custo baixo justifica mais algum trabalho operacional e 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 (links em inglês) com recursos encontrados no middleware de mensagens, como Apache ActiveMQ e RabbitMQ. Exemplos desses recursos são filas de mensagens inativas e filtragem.

Outro recurso que o Pub/Sub adota do middleware de mensagens é o paralelismo por mensagem, em vez de mensagens baseadas em partição. O Pub/Sub "aloca" mensagens individuais para clientes assinantes e controla se uma determinada mensagem foi processada com êxito.

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 ajuda a garantir a independência do editor e do assinante.

Comparar a comunicação entre serviços e serviço a 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 produtos do Google Cloud para você criar um sistema de mensagens completo:

  • Processamento de stream e integração de dados. Compatível com o Dataflow, incluindo modelos e SQL do Dataflow, que 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 para o Cloud Storage, BigQuery e outros produtos estão disponíveis nas IUs do Pub/Sub e do Dataflow no console do Google Cloud. A integração com o Apache Spark, principalmente quando gerenciada com o Dataproc, também está disponível. A composição visual dos pipelines de integração e processamento em execução no Spark + Dataproc pode ser realizada com o Data Fusion.
  • Monitoramento, alertas e geração de registros. Com suporte dos produtos Monitoring e Logging.
  • Autenticação e IAM. O Pub/Sub depende de uma autenticação OAuth padrão usada por outros produtos do Google Cloud e oferece suporte ao IAM granular, permitindo o controle de acesso de recursos individuais.
  • APIs. O Pub/Sub usa tecnologias de API de serviço REST e gRPC padrão com bibliotecas de cliente para várias linguagens.
  • Acionadores, notificações e webhooks. O Pub/Sub oferece entrega baseada em push de mensagens como solicitações HTTP POST para webhooks. Implemente a automação do fluxo de trabalho usando o Cloud Functions ou outros produtos sem servidor.
  • Orquestração. O Pub/Sub pode ser integrado de maneira declarativa a fluxos de trabalho sem servidor de várias etapas. Big Data e orquestração analítica geralmente realizadas com o Cloud Composer, que é compatível com os acionadores do Pub/Sub. Também é possível integrar o Pub/Sub com a Integração de aplicativos (Prévia), que é uma solução de integração de plataforma como serviço (iPaaS). A Application Integration oferece um acionador do Pub/Sub para acionar ou iniciar integrações.
  • Conectores de integração. (Prévia) Com estes connectors, é possível se conectar a várias fontes de dados. Com os conectores, os serviços do Google Cloud e aplicativos comerciais de terceiros são expostos às suas integrações por meio de uma interface padrão e transparente. Para o Pub/Sub, você pode criar uma conexão Pub/Sub para uso nas suas integrações.

Próximas etapas