O que são mensagens pub/sub?

As mensagens de publicação/assinatura, ou mensagens pub/sub, são um modelo de comunicação assíncrona que facilita para os desenvolvedores a criação de aplicações altamente funcionais e arquitetonicamente complexas na nuvem. Na arquitetura de nuvem moderna, as aplicações são desacopladas em blocos de construção menores e independentes chamados de serviços. As mensagens pub/sub fornecem notificações instantâneas de eventos para esses sistemas distribuídos. Elas oferecem suporte a comunicação escalável e confiável entre módulos de software independentes.

Como funcionam as mensagens pub/sub?

O sistema de publicação/assinatura (pub/sub) tem quatro componentes principais.

Mensagens

Mensagens são dados de comunicação enviados do remetente ao destinatário. Os tipos de dados de mensagens podem ser qualquer coisa, desde strings de caracteres a objetos complexos representando texto, vídeo, dados de sensores, áudio ou outro conteúdo digital.

Tópicos

Cada mensagem tem um tópico associado. Esse tópico funciona como um canal intermediário entre emissores e receptores. Ele mantém uma lista de destinatários interessados em mensagens sobre esse tópico.

Assinantes

Um assinante é o destinatário da mensagem. Os assinantes precisam se registrar (ou assinar) em tópicos de interesse. Eles podem executar funções diferentes ou fazer algo diferente com a mensagem em paralelo.

Publicador

O publicador é o componente que envia mensagens. Ele cria mensagens sobre um tópico e as envia apenas uma vez a todos os assinantes desse tópico. Essa interação entre o editor e os assinantes é uma relação de um para muitos. O editor não precisa saber quem está usando as informações que está transmitindo, e os assinantes não precisam saber de onde vem a mensagem.

Quais são os recursos de um sistema de mensagens pub/sub?

As aplicações desenvolvidas com um padrão de publicação-assinatura (pub/sub) têm uma lógica separada de aplicação e comunicação. A infraestrutura das mensagens dissocia a entrega de mensagens entre publicadores e assinantes e transmite para diferentes assinantes de maneira assíncrona.

O sistema de comunicação pub/sub tem os seguintes recursos principais.

Entrega por push

As mensagens pub/sub enviam instantaneamente notificações assíncronas de eventos quando as mensagens são publicadas no tópico da mensagem. Os assinantes são notificados quando uma mensagem está disponível.

Vários protocolos de entrega

Tópicos se conectam a vários tipos de endpoints, como filas de mensagens, funções sem servidor, servidores HTTP e endereços de e-mail.

Leia sobre o enfileiramento de mensagens com a AWS »

Fanout

Esse cenário acontece quando uma mensagem é enviada para um tópico e depois replicada e enviada para vários endpoints. O fanout fornece notificações de eventos assíncronas, que, por sua vez, permitem o processamento paralelo.

Filtragem

O recurso de filtragem permite que o assinante crie uma política de filtragem de mensagens. Portanto, eles receberão apenas as notificações nas quais estão interessados, em vez de receberem todas as mensagens postadas no tópico.

Multiplexação

Em alguns casos, publicadores também podem ser assinantes. Você pode multiplexar fluxos de mensagens e criar sistemas que se conectam de maneira internamente consistente.

Quais são os benefícios das mensagens pub/sub?

O modelo de publicação/assinatura (pub/sub) permite uma arquitetura orientada por eventos, que é necessária em várias aplicações modernas. Você pode usar eventos para acionar e se comunicar entre serviços desacoplados. Um evento é uma mudança de estado ou uma atualização, como um item sendo colocado em um carrinho de compras.

As mensagens pub/sub oferecem vantagens significativas para desenvolvedores que criam aplicações que dependem de eventos em tempo real. Descrevemos algumas das vantagens abaixo.

Eliminar sondagem

Os tópicos de mensagens permitem a entrega instantânea baseada em push, eliminando a necessidade de os consumidores de mensagens verificarem ou pesquisarem periodicamente novas informações e atualizações. Isso promove um tempo de resposta mais rápido e reduz a latência de entrega, o que pode ser particularmente problemático em sistemas em que atrasos são intoleráveis.

Segmentação dinâmica

O padrão pub/sub torna a descoberta de serviços mais fácil, mais natural e menos propensa a erros. Em vez de manter uma lista de colegas para que uma aplicação possa enviar mensagens, um editor simplesmente publicará mensagens em um tópico. Em seguida, qualquer parte interessada assinará seu endpoint no tópico e começará a receber essas mensagens. Vários assinantes podem mudar, atualizar ou desaparecer, e o sistema se ajusta dinamicamente.

Desacoplar e escalar de maneira independente

O pub/sub torna o software mais flexível. Editores e assinantes são separados e trabalham de forma independente uns dos outros, o que permite desenvolvê-los e escalá-los de maneira independente. Você pode optar por lidar com os pedidos de uma forma neste mês e depois de outra no mês seguinte. Adicionar ou alterar a funcionalidade não causará efeitos em cascata em todo o sistema, porque o pub/sub permite que você flexibilize a forma como tudo funciona em conjunto.

Simplificar a comunicação

O código para comunicação e integração é um dos mais difíceis de escrever. O modelo de publicação/assinatura reduz a complexidade ao remover todas as conexões ponto a ponto com uma única conexão com um tópico de mensagem. O tópico gerenciará assinaturas para decidir quais mensagens devem ser entregues em quais endpoints. Menos retornos de chamada resultam em um acoplamento mais fraco, além de um código mais fácil de manter e estender.

Durabilidade

Os serviços de mensagens pub/sub geralmente oferecem durabilidade muito alta e entrega pelo menos uma vez, armazenando cópias da mesma mensagem em vários servidores.

Segurança

Os tópicos de mensagens autenticam as aplicações que tentam publicar conteúdo e permitem que você use endpoints criptografados para proteger mensagens em trânsito pela rede.

Quais são os casos de uso de mensagens pub/sub?

Descrevemos abaixo alguns casos de uso populares do sistema de mensagens de publicação/assinatura (pub/sub).

Executar processamento assíncrono paralelo

Eventos publicados em um tópico de mensagem podem fazer com que vários funcionários realizem tarefas necessárias, mas não relacionadas, simultaneamente.

Entregar alertas de aplicações e sistemas

Entregue instantaneamente atualizações críticas e notificações assíncronas de eventos aos componentes afetados da aplicação e aos seus usuários.

Gerenciar fluxos de trabalho assíncronos

Retransmita eventos entre aplicações, mova dados entre armazenamentos de dados, atualize caches distribuídos ou atualize registros em sistemas corporativos.

Equilibrar workloads

Agrupe tarefas para processamento em massa ou divida uma tarefa maior em várias tarefas menores e use o enfileiramento de mensagens para dividir o trabalho entre vários trabalhadores.

Log para vários sistemas

Registre eventos para analisar posteriormente, capture logs para operações e segurança ou arquive para atender a requisitos de backup ou conformidade.

Usar o fanout para replicação

Replique dados entre ambientes de produção e desenvolvimento ou desenvolva e teste com dados em tempo real.

Coordenar aplicações sem servidor

Faça o fanout de notificações de eventos assíncronas para funções distribuídas e filas de mensagens a fim de coordenar os componentes da sua aplicação sem servidor.

Transmitir dados de IoT

O padrão pub/sub é uma forma muito poderosa de interação entre dispositivos da Internet das Coisas (IoT). Os dispositivos podem transmitir dados facilmente para sistemas de backend ou entre si.

Qual é a diferença entre filas de mensagens e mensagens pub/sub?

Uma fila de mensagens é outra forma de comunicação assíncrona usada em arquiteturas sem servidor e de microsserviços. As mensagens são armazenadas na fila até serem processadas e excluídas. Filas de mensagens exigem que o remetente saiba com quem está trocando mensagens. A ordenação das mensagens também pode causar gargalos no sistema.

Em contraste, o padrão de publicação-assinatura (pub/sub) permite mais flexibilidade. Vários assinantes interessados podem receber mensagens de maneira simultânea e assíncrona. Os editores não precisam saber quem são os assinantes. O tratamento de mensagens é mais escalável e confiável e oferece melhor performance.

Leia sobre tecnologias sem servidor na AWS »

Como a AWS pode oferecer suporte aos seus requisitos de mensagens pub/sub?

A Amazon Web Services (AWS) tem dois serviços que você pode usar para diferentes aplicações de publicação/assinatura (pub/sub).

APIs pub/sub

O AWS AppSync é um serviço totalmente gerenciado para criar APIs GraphQL e pub/sub sem servidor que simplificam o desenvolvimento de aplicações. Você pode criar um único endpoint para consultar, atualizar ou publicar dados com segurança.

As APIs pub/sub criadas com o AWS AppSync oferecem a capacidade de publicar atualizações de dados em tempo real para clientes de API inscritos por meio de conexões WebSocket sem servidor. Você pode criar experiências envolventes em tempo real para uma variedade de casos de uso. Por exemplo, você pode fornecer resultados de jogos atualizados, dados financeiros, participação do público, votação ou funcionalidades com reconhecimento de localização, como mapas e marketing de notificação por push.

Aqui estão algumas coisas que você pode realizar com o AWS AppSync:

  • Acessar os dados a partir de uma ou mais fontes ou microsserviços com uma única requisição de rede
  • Interagir e atualizar dados atualizados (mesmo offline) com sincronização de dados offline, versionamento e resolução de conflitos
  • Pagar somente pelas solicitações para sua API e pelas mensagens em tempo real enviadas aos clientes conectados

Mensagens pub/sub

O Amazon Simple Notification Service (SNS) facilita a criação de uma aplicação usando o modelo de mensagens pub/sub. Você pode enviar mensagens das suas aplicações para clientes ou outras aplicações de maneira escalável e econômica.

O Amazon SNS oferece vários recursos:

  • Mensagens de alta throughput com base em push e de muitos para muitos entre sistemas distribuídos, microsserviços e aplicações sem servidor orientadas por eventos
  • Criptografia de mensagens e privacidade de tráfego
  • Recursos de fanout em todas as categorias da AWS, como análise, computação, contêineres, bancos de dados, Internet das Coisas (IoT), machine learning (ML), segurança e armazenamento

Comece hoje mesmo a usar mensagens pub/sub na AWS criando uma conta gratuita da AWS.

Próximas etapas na AWS

Confira recursos adicionais relacionados a produtos
Conheça ofertas gratuitas de Internet das Coisas 
Cadastre-se para obter uma conta gratuita

Obtenha acesso instantâneo ao nível gratuito da AWS.

Cadastre-se 
Comece a criar no console

Comece a criar no Console de Gerenciamento da AWS.

Faça login