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.
O Pub/Sub permite que os serviços se comuniquem de forma assíncrona, com latências normalmente na ordem de 100 milissegundos.
O Pub/Sub é usado para análise de streaming e pipelines de integração de dados para carregar 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.
O Pub/Sub permite criar sistemas de produtores e consumidores de eventos, chamados de publicadores 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 publicadores enviam eventos ao serviço Pub/Sub sem considerar como ou quando eles vão ser 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 console Google Cloud . Para uma introdução mais abrangente, 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 de usuários finais ou eventos de servidor do seu sistema, encaminhe-os para o 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 vários clientes simultaneamente.
- Distribuição de eventos em tempo real. Os eventos, brutos ou processados, podem ser disponibilizados para vários aplicativos em toda a equipe e organização para processamento em tempo real. O Pub/Sub é compatível com um "barramento de eventos corporativo" 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 é 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 estado no BigQuery e em outros repositórios 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 são compactar arquivos de texto, enviar notificações por e-mail, avaliar modelos de IA e reformatar 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 para o Pub/Sub para uso em outros produtos do Google Cloud por meio de um pipeline de tratamento de dados.
- Atualizar caches distribuídos. 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 assinar um tópico comum. Quando o serviço falha em qualquer zona, as outras podem assumir a carga automaticamente.
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 recursos encontrados em middleware de mensagens, como o Apache ActiveMQ e o RabbitMQ. Exemplos desses recursos são as filas de mensagens inativas e a 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 "concede" mensagens individuais aos clientes assinantes e, em seguida, rastreia se uma determinada mensagem foi processada.
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 de assinante e ajuda a garantir a independência do editor e do 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:
- Cliente-servidor. Para enviar mensagens entre um app para dispositivos móveis ou um app da Web e um serviço, use produtos que incluam o Firebase Realtime Database e o Firebase Cloud Messaging.
- Chamadas de serviço assíncronas. Use o Cloud Tasks.
É 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 tem muitas integrações com outros produtos do Google Cloud para 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 em 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 interfaces do Pub/Sub e do Dataflow no console doGoogle Cloud . A integração com o Apache Spark, principalmente quando gerenciado com o Serviço Gerenciado para Apache Spark, também está disponível. A composição visual de pipelines de integração e processamento em execução no Spark + Serviço Gerenciado para Apache Spark pode ser realizada com o Data Fusion.
- Monitoramento, alertas e geração de registros. Compatível com os 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 é compatível com o IAM granular, permitindo o controle de acesso para recursos individuais.
- APIs. O Pub/Sub usa tecnologias de API de serviço REST e gRPC padrão, além de bibliotecas de cliente para várias linguagens.
- Gatilhos, notificações e webhooks. O Pub/Sub oferece entrega de mensagens baseada em push como solicitações POST HTTP para webhooks. É possível implementar a automação do fluxo de trabalho usando o Cloud Functions ou outros produtos sem servidor.
- Orquestração. O Pub/Sub pode ser integrado a Workflows sem servidor de várias etapas de maneira declarativa. A orquestração de Big Data e análise geralmente é feita com o Airflow Gerenciado, que é compatível com gatilhos do Pub/Sub. Também é possível integrar o Pub/Sub ao Application Integration, 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. Esses conectores permitem que você se conecte a várias fontes de dados. Com os conectores, os serviços doGoogle Cloud 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 um conector do Pub/Sub para usar nas suas integrações.
Próximas etapas
- Comece a usar o guia de início rápido do Pub/Sub.
- Leia os conceitos básicos do serviço Pub/Sub.
- Saiba como criar um sistema de mensagens do Pub/Sub.
- Entenda os preços do Pub/Sub.
- Entenda as cotas e os limites do Pub/Sub.
- Leia as notas de lançamento do Pub/Sub.
- Conheça a engenharia de dados com os serviços do Google Cloud no Qwiklabs.