O que é o Pub/Sub e o Pub/Sub Lite?

Nesta página, você vai entender o Pub/Sub, por que as empresas usam o Pub/Sub e as vantagens do Pub/Sub em comparação a tecnologias semelhantes. Além disso, aprenda sobre os 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 e serviços que produzem mensagens a partir dos serviços que processam essas mensagens.

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

O Pub/Sub é usado na análise de streaming e em pipelines de integração para processar e distribuir dados. É igualmente eficaz 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 Pub/Sub, sem considerar como ou quando esses eventos serão processados. Depois, o Pub/Sub entrega eventos a todos os serviços que reagem a eles. Nos sistemas de comunicação por RPCs, os editores 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 a Guia de início rápido sobre como usar o 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

  • Fazer a ingestão de eventos do servidor e de interação do usuário. Para usar o eventos de interação de apps do usuário final ou eventos de servidor do seu sistema, e encaminhá-los ao Pub/Sub. Depois, é possível usar uma camada de processamento como o Dataflow, que entrega eventos a bancos de dados. Exemplos desses bancos de dados são BigQuery, Bigtable e Cloud Storage. O Pub/Sub permite que você colete eventos de vários clientes simultaneamente.

  • Distribuição de eventos em tempo real. Eventos, brutos ou processados, podem ser para vários aplicativos na sua equipe e organização com tempo de processamento. O Pub/Sub é compatível com um "barramento de eventos empresarial" e padrões de design de aplicativos orientados a eventos. Com o Pub/Sub, você pode se integrar a vários sistemas do Google que exportam eventos para o Pub/Sub.

  • Replicação de dados entre bancos de dados. O Pub/Sub é muito 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 do estado BigQuery e outros sistemas de armazenamento de dados.

  • Processamento e fluxos de trabalho paralelos. É possível distribuir com eficiência entre vários workers usando mensagens do Pub/Sub para se conectar ao Cloud Functions. Exemplos dessas tarefas são a compactação de textos enviar notificações por e-mail, avaliar modelos de IA e reformatar arquivos de imagens de contêiner.

  • Barramento de eventos empresariais. É possível criar uma tabela de dados em tempo real ônibus de compartilhamento, distribuição de eventos de negócios, atualizações de banco de dados e análises eventos em toda a organização.

  • Streaming de dados de aplicativos, serviços ou dispositivos de IoT. Por exemplo, 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 um pipeline do Dataflow.

  • Atualizar caches distribuídos. Por exemplo, um aplicativo pode publicar de invalidação para atualizar os IDs de objetos que foram alterados.

  • Balanceamento de carga para aumentar a confiabilidade. Por exemplo, instâncias de um serviço podem ser implantados no Compute Engine em várias zonas, mas assinam um tópico comum. Quando o serviço falha em qualquer zona, os outros podem continuar com 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 é o padrão para a maioria dos usuários e aplicativos. Ele oferece a mais alta confiabilidade e maior conjunto de integrações, além de gerenciamento automático de capacidade. O Pub/Sub garante a replicação síncrona de todos os dados até pelo menos duas zonas e replicação de melhor esforço para uma terceira zona adicional.

  • Serviço Pub/Sub Lite. Uma mensagem separada, mas semelhante serviço criado por um custo menor. Ele oferece menos confiabilidade em comparação Pub/Sub Ele oferece armazenamento de tópicos zonal ou regional. Os tópicos zonais do Lite são armazenados em apenas zona. Os tópicos regionais do Lite replicam dados em um segundo zona de forma assíncrona. Além disso, o Pub/Sub Lite exige que você pré-provisione e gerencie o armazenamento e a capacidade de processamento. Considere o Pub/Sub Lite apenas para aplicativos em que alcançar um custo baixo justifica algum trabalho operacional adicional e diminui a 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 Apache Kafka e Pulsar com recursos encontrados no middleware de mensagens tradicional, como Apache ActiveMQ e o RabbitMQ. Exemplos desse tipo de recurso são filas de mensagens inativas e filtragem.

Outro recurso do middleware de mensagens que o Pub/Sub adotou paralelismo por mensagem, em vez de mensagens baseadas em partição. "leases" do Pub/Sub mensagens individuais para clientes assinantes e, em seguida, rastreia se uma determinada mensagem é 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. Processamento por mensagem maximiza o paralelismo dos aplicativos do assinante e ajuda a garantir independência de editor/assinante.

Compare a comunicação serviço a serviço e de serviço ao 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. Suportado pelo Dataflow, incluindo modelos e SQL do Dataflow, que permitem o processamento e integração de dados com o BigQuery e data lakes no Cloud Storage. Dataflow. modelos para mover dados do Pub/Sub para O Cloud Storage, o BigQuery e outros produtos estão disponíveis no as IUs do Pub/Sub e do Dataflow na console do Google Cloud. A integração com o Apache Spark, principalmente quando gerenciada com o Dataproc, também está disponível. Composição visual de integração e pipelines de processamento em execução no Spark + Dataproc podem ser realizados com Data Fusion.
  • Monitoramento, alertas e geração de registros. Com suporte do Monitoring e do Logging.
  • Autenticação e IAM. O Pub/Sub depende de um padrão OAuth usada por outros produtos do Google Cloud e oferece suporte a IAM granular, e ativar o controle de acesso para recursos individuais.
  • APIs. O Pub/Sub usa as APIs de serviço gRPC e REST padrão do Google e bibliotecas de cliente em várias linguagens.
  • Gatilhos, notificações e webhooks. O Pub/Sub oferece modelos de entrega de mensagens 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 aplicativos sem servidor Fluxos de trabalho de maneira declarativa. O big data e a orquestração analítica geralmente são feitos com Cloud Composer, compatível com gatilhos do Pub/Sub. Também é possível integrar o Pub/Sub Integração de aplicativos (Pré-lançamento), que é uma solução de integração de plataforma como serviço (iPaaS). Aplicação A integração oferece Gatilho do Pub/Sub para acionar ou iniciar integrações.
  • Conectores de integração(pré-lançamento) Esses connectors permitem que você se conecte a várias fontes de dados. Com os conectores, os serviços do Google Cloud e os aplicativos comerciais de terceiros são expostos às suas integrações por uma interface padrão transparente. Para o Pub/Sub, você pode criar uma conexão com o Pub/Sub para uso nas suas 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 tópico único e específico, para ser entregue ao 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 o editor envia para um tópico e é entregue aos assinantes.
  • Atributo da mensagem. Um par de chave-valor que um editor pode definir para um 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 de um ou vários tópicos para receber mensagens dele.
  • Reconhecimento (ou "confirmação"). Um sinal enviado por um assinante ao Pub/Sub depois recebeu uma mensagem. As mensagens confirmadas são removidas da fila de mensagens de inscrição.
  • Empurrar e puxar. Os dois métodos de entrega de mensagens. Um assinante recebe as mensagens enviando-as pelo Pub/Sub ao assinante o endpoint escolhido ou pelo assinante que os pulling do serviço.

A relação entre editor e assinante pode ser de um para muitos (fan-out), 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. Para entrega por push, a confirmação está implícita na resposta ao a solicitação de push, enquanto que, para entrega por pull, ela requer uma RPC separada.

Ciclo de vida das mensagens

Próximas etapas