GoConqr has a new look! Let us know what you think.

Mind map

Publish-Subscribe (Pub/Sub)

Heithor Urquiza Silva Portuguese

Map content

Publish-Subscribe (Pub/Sub)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Views
0
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?