Mind map
Publish-Subscribe (Pub/Sub)
Map content
Publish-Subscribe (Pub/Sub)
O que é:
- Trata-se de um padrão arquitetural onde tem-se os Publishers (Publicadores) que enviam as mensagens e os Subscribers (Assinantes) que recebem as mensagens. Em uma maneira mais prática, sempre que houver algum evento, o publicador vai enviar uma mensagem para que seus ouvintes sejam notificados.
Conceitos essenciais:
- • Mensagem: São os dados transferidos por meio do serviço.
- • Tópico: uma entidade nomeada que representa um feed de mensagens.
- • Assinatura: uma entidade nomeada que representa um interesse em receber mensagens sobre um tópico específico.
- • Editor (também chamado de produtor): cria mensagens e as envia (publica) para o serviço de mensagens em um tópico específico.
- • Assinante (também chamado de consumidor): recebe as mensagens relacionadas a uma assinatura específica.
Avaliação de Desempenho:
- Um serviço de mensagens como o Pub/Sub pode ser julgado pelo desempenho em três aspectos: escalonabilidade, disponibilidade e latência. Esses três fatores geralmente entram em conflito e exigem que se façam concessões em um para melhorar os outros dois.
- • Escalonabiliadade: Um serviço escalonável precisa ser capaz de lidar com aumentos de carga sem degradação perceptível de latência ou disponibilidade. "Carga" pode se referir a várias dimensões de uso no Pub/Sub: Número de tópicos; número de editores; número de assinaturas; número de assinantes; número de mensagens; tamanho das mensagens; taxa de mensagens (capacidade) publicadas ou consumidas; tamanho do backlog de qualquer assinatura.
- • Disponibilidade: Em um sistema distribuído, os tipos e a gravidade dos problemas podem variar muito. A disponibilidade de um sistema é medida por como ele lida com diferentes tipos de problemas realizando um failover de maneira imperceptível pelos usuários finais.
- • Latência: Latência é uma medida de desempenho de um sistema baseada no tempo. Geralmente, deve-se minimizar a latência sempre que possível. Para o Pub/Sub, as duas métricas de latência mais importantes são: a quantidade de tempo que ele leva para reconhecer uma mensagem publicada; e a quantidade de tempo que ele leva para entregar uma mensagem publicada para um assinante.
- Um serviço de mensagens como o Pub/Sub pode ser julgado pelo desempenho em três aspectos: escalonabilidade, disponibilidade e latência. Esses três fatores geralmente entram em conflito e exigem que se façam concessões em um para melhorar os outros dois.
Implementação:
- O procedimento de implementação e teste do Pub/Sub foi projetado para minimizar o impacto em potencial. Dentre as etapas típicas destacam-se: 1.Garantir a aprovação de todos os testes de unidade e integração; 2.Criar uma nova versão de todos os servidores; 3.Implantar os novos servidores nos ambientes de teste e montagem; 4.Executar os servidores nos ambientes de teste e montagem por alguns dias; 5.Caso não haja problemas conhecidos, lançar os servidores no Canary, um subconjunto do ambiente de produção que tem uma quantidade pequena de tráfego de clientes; 6.Se nenhum problema for detectado no canário, implementar progressivamente os servidores em mais ambientes de produção durante vários dias até serem lançados em todo o sistema.
Vantagens e Desvantagens:
- Acoplamento solto (Editores são fracamente acoplada para assinantes, e nem precisam saber de sua existência. Com o tópico sendo o foco, editores e assinantes podem permanecer ignorantes sobre a topologia do sistema); Escalabilidade (Pub / sub oferece a oportunidade de melhorar escalabilidade do que o cliente-servidor tradicional, por meio de operação paralela, cache de mensagens, roteamento baseado em árvore ou rede, etc)
- Desacoplamento do editor com o assinante; Problemas de entrega de mensagens (Um sistema pub / subs deve ser projetado com cuidado para fornecer propriedades de sistema mais fortes que um determinado aplicativo pode exigir, como entrega garantida.)
Information
- Description
- Mind Map on Publish-Subscribe (Pub/Sub), created by Heithor Urquiza Silva on 02/08/2021.
- Created by
- Heithor Urquiza Silva
- Views
- 0
- Rating