O que é o Pub/Sub?

O Pub/Sub é um serviço de mensagens assíncronas. Ele separa serviços que produzem daqueles que processam eventos.

É possível usar o Pub/Sub como middleware orientado a mensagens ou entrega e ingestão de eventos para pipelines de análise de streaming.

O Pub/Sub oferece armazenamento de mensagens durável e entrega de mensagens em tempo real com alta disponibilidade e desempenho consistente em grande escala. Os servidores do Pub/Sub são executados em todas as regiões do Google Cloud no mundo todo.

Para começar imediatamente, acesse o Guia de início rápido sobre como usar o Console do Cloud. Para uma introdução mais abrangente, consulte Como criar um sistema Pub/Sub funcional.

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 tópico específico a ser entregue para o aplicativo assinante. Para 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 a um tópico e que é entregue aos assinantes.
  • Atributo de 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 poderiam ser adicionados às mensagens para marcá-las como legíveis por um assinante que fala inglês.

Relacionamentos entre editor e assinante

O aplicativo de um editor cria e envia mensagens para um tópico. Para receber essas mensagens, os aplicativos do assinante criam uma assinatura de um tópico. A comunicação pode ser de um para muitos (distribuição de dados), de muitos para um (coleta de dados) e de muitos para muitos, conforme mostrado no diagrama a seguir.

Os editores A e B entregam mensagens para o mesmo assinante, enquanto o editor C entrega as mensagens a vários assinantes.

Fluxo de mensagens do Pub/Sub

Veja no diagrama a seguir uma visão geral dos componentes do sistema do Pub/Sub e também veja como é o fluxo de mensagens entre eles:

Os principais componentes do sistema do Pub/Sub incluem mensagens, tópicos e assinaturas.
  1. Um aplicativo editor cria um tópico no serviço do Pub/Sub e envia mensagens para o tópico. Uma mensagem contém um payload e atributos opcionais que descrevem o conteúdo dele.
  2. O serviço garante que as mensagens publicadas sejam retidas em nome de assinaturas. Uma mensagem publicada é retida para uma assinatura até que seja reconhecida por qualquer assinante que consuma mensagens dessa assinatura.
  3. O Pub/Sub encaminha mensagens de um tópico para todas as inscrições individualmente.
  4. Um assinante recebe mensagens por Pub/Sub enviando por push para o endpoint escolhido pelo assinante, ou pelo assinante enviando-as por pull do serviço.
  5. O assinante envia uma confirmação para o serviço Pub/Sub para cada mensagem recebida.
  6. O serviço remove as mensagens de confirmção da fila de mensagens da assinatura.

Endpoints do editor e do assinante

Os editores podem ser qualquer aplicativo que possa fazer solicitações HTTPS para pubsub.googleapis.com: um aplicativo do App Engine, um serviço da web hospedado no Google Compute Engine ou qualquer outra rede de terceiros, um app instalado em um computador ou dispositivo móvel ou até um navegador.

As solicitações HTTP são feitas por editores como dispositivos de serviços, apps ou IoT, e assinantes como microsserviços ou apps de dados.

Assinantes de pull também podem ser qualquer aplicativo que faça solicitações HTTPS para googleapis.com.

Atualmente, os assinantes de push precisam ser endpoints do Webhook que consigam aceitar solicitações POST por HTTPS.

Casos comuns de uso

  • Equilibrar cargas de trabalho em clusters de rede. Por exemplo, uma fila grande de tarefas pode ser distribuída com eficiência entre vários funcionários, como instâncias do Google Compute Engine.
  • Implementar fluxos de trabalho assíncronos. Por exemplo, um aplicativo de processamento de pedidos pode incluir um pedido em um tópico, a partir do qual ele pode ser processado por um ou mais funcionários.
  • Distribuir notificações de eventos. Por exemplo, um serviço que aceita assinaturas de usuários pode enviar notificações sempre que um novo usuário for registrado, e serviços de downstream podem assinar para receber notificações sobre o evento.
  • Atualizar caches distribuídos. Por exemplo, um aplicativo pode publicar eventos de invalidação para atualizar os códigos de objetos que foram alterados.
  • Login em vários sistemas. Por exemplo, uma instância do Google Compute Engine pode gravar registros no sistema de monitoramento, em um banco de dados para consultas futuras e assim por diante.
  • Streaming de dados de vários processos ou dispositivos. Por exemplo, um sensor residencial pode enviar dados para servidores de back-end hospedados na nuvem.
  • Melhora da confiabilidade. Por exemplo, um serviço do Compute Engine de uma única zona pode operar em outras ao assinar um tópico em comum para se recuperar de falhas em uma zona ou região.

Integrações do Pub/Sub

O diagrama a seguir mostra como o Pub/Sub pode integrar muitos componentes do Google Cloud.

O Pub/Sub pode integrar entradas do Cloud Logging e do Compute Engine com endpoints como Dataflow e App Engine.