O que é um sistema Pub/Sub?
Visite systemdesign.us para perguntas de entrevista de design de sistema marcadas por empresas e suas soluções. Siga-nos no YouTube , LinkedIn , Twitter , Medium .
O sistema Pub/Sub é um sistema de mensagens que permite aos usuários se inscrever em tópicos específicos e receber mensagens apenas dos tópicos em que estão inscritos. Isso pode ser útil para uma variedade de aplicativos, como redes sociais, feeds de notícias e jogos.
Como funciona o pub/sub?
O editor (ou remetente da mensagem) envia uma mensagem para um tópico específico. A mensagem é então recebida por todos os assinantes (ou destinatários da mensagem) daquele tópico. Os assinantes podem optar por cancelar a assinatura de um tópico a qualquer momento.
Componentes Pub/Sub

Existem três componentes principais em um sistema pub/sub:
tópicos : as mensagens são organizadas em tópicos e os usuários podem se inscrever em tópicos específicos para receber as mensagens.
editores : os editores são os remetentes da mensagem e enviam mensagens para tópicos específicos.
assinantes : os assinantes são os destinatários da mensagem e recebem todas as mensagens dos tópicos nos quais estão inscritos.
Por que usar pub/sub?
Pub/sub pode ser útil para aplicativos que exigem atualizações em tempo real de várias fontes. Por exemplo, um aplicativo de rede social pode precisar mostrar aos usuários atualizações de seus amigos, bem como notícias e outros conteúdos. Ao usar o pub/sub, o aplicativo pode receber todas essas mensagens em tempo real, sem precisar pesquisar constantemente novos dados.
Quais são os benefícios do pub/sub?
Existem vários benefícios de usar o pub/sub:
- Atualizações em tempo real: os assinantes podem receber mensagens assim que são publicadas, sem ter que esperar por um intervalo de votação regular.
- Assinaturas flexíveis: os assinantes podem optar por se inscrever apenas nos tópicos de seu interesse e podem cancelar a assinatura a qualquer momento.
- Escalabilidade: o sistema pub/sub pode facilmente escalar para lidar com um grande número de tópicos e assinantes.
- Ele permite a comunicação em tempo real entre editores e assinantes.
- É um sistema escalável que pode lidar com um grande número de tópicos e assinantes.
- É flexível, pois os assinantes podem escolher de quais tópicos desejam receber mensagens.
Existem algumas desvantagens potenciais em usar o pub/sub:
- A entrega da mensagem não é garantida: como as mensagens são enviadas de forma assíncrona, não há garantia de que serão recebidas por todos os assinantes. Isso significa que algumas mensagens podem ser perdidas se o assinante estiver offline ou a mensagem for atrasada por algum motivo.
- Latência mais alta: a entrega de mensagens assíncronas pode resultar em latência mais alta do que a entrega de mensagens síncronas (como em um sistema de mensagens tradicional).
- Histórico de mensagens limitado: a maioria dos sistemas de publicação/assinatura acompanha apenas as mensagens mais recentes para cada tópico, o que significa que os assinantes só receberão novas mensagens depois de se inscreverem. Isso pode ser um problema para aplicativos que requerem um histórico completo de mensagens.
- O editor deve conhecer o tópico da mensagem para enviá-la aos assinantes corretos.
- Os assinantes podem receber mensagens nas quais não estão interessados se assinarem muitos tópicos.
- Não há garantia de que as mensagens serão entregues em ordem ou de todo.
Lista de tecnologias Pub/Sub
- Apache Kafka
- Amazon Simple Notification Service (SNS)
- Google Cloud Pub/Sub
- Grade de Eventos do Microsoft Azure
- IBM Cloud Pub/Sub
- Servidor de Transmissão NATS
- CloudEvents
- MQTT
- STOMP
- Webhooks
- Apache ActiveMQ Artemis
- RabbitMQGenericName