O que é o Pub/Sub?

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

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

O Pub/Sub permite criar sistemas de produtores e consumidores de eventos, chamados de editores e inscritos. Os editores se comunicam de modo assíncrono com os assinantes por meio da transmissão de eventos, não de chamadas de procedimento remoto (RPCs, na sigla em inglês) síncronas.

Os editores enviam eventos para o serviço do Pub/Sub, sem considerar como ou quando esses eventos serão processados. O Pub/Sub entrega os eventos a todos os serviços que precisam reagir a eles. Em comparação com os sistemas que se comunicam por meio de RPCs, em que os editores precisam esperar que os assinantes recebam os dados, essa integração assíncrona aumenta a flexibilidade e a robustez do sistema.

Para começar a usar o Pub/Sub, confira 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 de mensagens do Pub/Sub.

Casos de uso comuns

  • Ingestão de eventos do usuário e eventos do servidor Para usar eventos de interação do usuário de aplicativos do usuário final ou eventos do servidor no seu sistema, encaminhe-os para o Pub/Sub e use uma ferramenta de processamento de stream, como o Dataflow, que os entrega ao BigQuery, ao Bigtable, ao Cloud Storage e a outros bancos de dados. O Pub/Sub permite reunir eventos de muitos clientes simultaneamente.
  • A distribuição de eventos em tempo real Eventos, brutos ou processados, podem ser disponibilizados para vários aplicativos na sua equipe e organização para processamento em tempo real. Isso é compatível com um padrão de design de aplicativo corporativo e padrões de aplicativo orientados por eventos. Pub/Sub e permite a integração com muitos sistemas do Google que exportam eventos para o Pub/Sub.
  • Replicação de dados entre bancos de dados O Pub/Sub é normalmente 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 estado no BigQuery e em outros sistemas de armazenamento de dados.
  • Processamento paralelo e fluxos de trabalho É possível distribuir com eficiência um grande número de tarefas entre vários workers, como compactar arquivos de texto, enviar notificações por e-mail, avaliar modelos de IA ou reformatar imagens, usando mensagens do Pub/Sub para se conectar. Cloud Functions
  • busnibus de eventos empresariais. É possível criar um barramento de compartilhamento de dados em tempo real entre empresas, distribuindo eventos de negócios, atualizações de bancos de dados e eventos de análise em toda a organização.
  • Streaming de dados de dispositivos de IoT. Por exemplo, um sensor presidencial pode fazer streaming de dados para servidores de back-end hospedados na nuvem.
  • Atualizar caches distribuídos. Por exemplo, um aplicativo pode publicar eventos de invalidação para atualizar os IDs dos objetos que foram alterados.
  • Balanceamento de carga para confiabilidade. Por exemplo, as instâncias de um serviço podem ser implantadas no Compute Engine em várias zonas, mas se inscrever em um tópico comum. Quando o serviço falha em qualquer zona, os outros podem pegar a carga automaticamente.

Pub/Sub ou Pub/Sub Lite

O Pub/Sub consiste em dois serviços:

  • Serviço Pub/Sub: precisa ser a opção 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.

  • Serviço Pub/Sub Lite: um serviço de mensagens separado, mas semelhante, criado para baixo custo. Ele oferece armazenamento zonal e exige que você pré-provisione e gerencie a capacidade de armazenamento e capacidade.

Considere o Pub/Sub Lite apenas para aplicativos que tenham um custo extremamente baixo justificam algum trabalho operacional adicional e menor disponibilidade.

Para mais detalhes, consulte Como escolher o Pub/Sub ou o Pub/Sub Lite. Para conhecer o Pub/Sub Lite, consulte Primeiros passos com o Pub/Sub Lite.

Como comparar o Pub/Sub com outras tecnologias de mensagens

O Pub/Sub combina a escalonabilidade horizontal do Apache Kafka e do Pular com recursos encontrados no middleware de mensagens tradicionais, como Apache ActiveMQ e RabbitMQ, como mensagens mortas filas e filtragem.

Outro recurso que o Pub/Sub adota no middleware de mensagens é o paralelismo por mensagem (em vez de baseado em partição). O Pub/Sub "aloca" mensagens individuais para os assinantes e, em seguida, monitora se uma determinada mensagem foi processada com êxito.

Por outro lado, outros sistemas de mensagens escalonáveis horizontalmente usam partições para escalonamento horizontal. Isso força os assinantes a processar mensagens em cada partição na ordem e limita o número de clientes simultâneos ao número de partições. O processamento por mensagem maximiza o paralelismo de aplicativos de assinantes e ajuda a garantir a independência de editor/assinante.

Comunicação de serviço a serviço versus comunicação entre serviço

O Pub/Sub destina-se à comunicação de serviço a serviço, em vez da comunicação com usuários finais ou clientes de IoT. Outros padrões são melhores compatíveis com outros produtos:

Use uma combinação desses serviços para criar padrões de cliente -> serviços -> banco de dados. Por exemplo, consulte o tutorial Como fazer streaming de mensagens do Pub/Sub por 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: Com suporteDataflow , incluindo o Dataflowmodelos quantoSQL que permitem o processamento e a integração de dados para o BigQuery e os 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 IUs do Pub/Sub e do Dataflow no Console do Cloud. A integração com o Apache Spark, especialmente quando gerenciada com o Dataproc também está disponível. A composição visual de pipelines de integração e processamento em execução no Spark + Dataproc pode ser realizada com a Datafusion.
  • Monitoramento, alertas e registros: compatíveis com os produtos do Monitoring e do 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 de recursos individuais.
  • APIs: o Pub/Sub usa as tecnologias gRPC e REST da API Service padrão com bibliotecas de cliente para várias linguagens.
  • Gatilhos, notificações e webhooks: o Pub/Sub oferece a entrega baseada em push das mensagens como solicitações HTTP POST para webhooks. Dessa forma, é possível implementar facilmente a automação do fluxo de trabalho usando o Cloud Functions ou outros produtos sem servidor.
  • Orquestração: o Pub/Sub pode ser integrado aos fluxos de trabalho de fluxos de trabalho sem servidor de várias etapas, declarativamente. Geralmente, a orquestração de Big Data e orquestração analítica é feita com o Cloud Composer, que é compatível com os acionadores do Pub/Sub.

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.
  • Editor: um aplicativo que cria e envia mensagens para um tópico.
  • Assinante: um aplicativo com uma assinatura de um tópico para receber mensagens dele.
  • Confirmação (ou "ack"): um sinal enviado por um assinante para o Pub/Sub depois que ele tiver recebido uma mensagem. As mensagens fixadas são removidas da fila de mensagens da assinatura.
  • Push e pull: os dois métodos de entrega de mensagens. Um assinante recebe mensagens do Pub/Subempurrando para o endpoint escolhido pelo assinante oupuxando do serviço.

Os relacionamentos de assinante/assinante podem ser de um para muitos, de muitos para um (fan-in) e de muitos para muitos, conforme mostrado no diagrama a seguir:

Relacionamentos entre editor e assinante

O diagrama a seguir ilustra como uma mensagem passa de um editor para um assinante. Observe que, para a entrega por push, o ack é implícito na resposta à solicitação de push, enquanto a entrega pull requer uma RPC separada.

Ciclo de vida das mensagens

Próximas etapas