Enfileiramento de Mensagens vs. Balanceamento de Carga. Eu realmente não entendo a diferença [fechada]

2

Ajude-me a entender alguma coisa. Eu olhei para várias arquiteturas de aplicativos corporativos e notei que vários deles usam um serviço Message Queue, como ActiveMQ ou RabbitMQ. Tenho conhecimento em nível de superfície do que os servidores de enfileiramento de mensagens fazem, mas realmente não entendo por que escolheria criar uma infraestrutura de aplicativos que use uma tecnologia de balanceamento de carga padrão, como HAProxy ou algo semelhante.

Qual é a diferença real entre os dois? Ambos parecem rotear tráfego e / ou mensagens para nós que se inscrevem na fila ou no pool. Existem prós / contras para cada um deles?

    
por Jason Clark 18.07.2013 / 22:35

1 resposta

12

Como afirma Michael, esses dois são muito diferentes em função e capacidade.

Sistemas de enfileiramento de mensagens

A principal função dos serviços de enfileiramento de mensagens é permitir a comunicação assíncrona entre diferentes partes de um aplicativo. Os servidores MQ normalmente permitem configurar um número arbitrário de regras de roteamento, filas, etc., para as quais as mensagens são publicadas por partes de um aplicativo e assinadas por outras partes do aplicativo.

Tome, por exemplo, um aplicativo de transcodificação de vídeo. As funções básicas necessárias são:

  1. o usuário faz o upload de um arquivo de vídeo
  2. sistema transcodifica vídeo em um formato diferente
  3. O
  4. sistema disponibiliza vídeos transcodificados para download

Após a conclusão da etapa 1, você realmente deseja que a sessão do navegador do usuário seja interrompida por 45 minutos enquanto a transcodificação ocorre? Não, não pense assim. Portanto, em vez de executar a transcodificação de forma síncrona, você despeja uma mensagem em uma fila de mensagens que há trabalho a fazer. Em seguida, essa mensagem é capturada pela parte de processamento de back-end de seu aplicativo, que realiza a transcodificação e, quando concluída, publica uma mensagem "Estou pronto!" mensagem para uma fila diferente, que aciona uma terceira parte do seu aplicativo para enviar por e-mail ao usuário que o trabalho está concluído.

Além de separar partes diferentes de seu aplicativo, os sistemas MQ permitem que os jobs fiquem bem filados. Digamos que seu hardware permita que você processe um vídeo a cada 30 minutos, mas, durante o pico de carga, seus usuários enviam mais do que isso. O uso de um MQ permite que esses trabalhos sejam enfileirados normalmente e sejam manipulados em sequência, já que o backend pode fazê-lo.

Sistemas de balanceamento de carga

A principal função do balanceamento de carga é fornecer solicitações recebidas dos clientes e distribuir essas solicitações a um ou mais servidores de aplicativos de back-end.

Conclusão

Para colocar as coisas de outra forma, os serviços de enfileiramento de mensagens se concentram na comunicação assíncrona entre partes de aplicativos distintos, enquanto os serviços de balanceamento de carga se concentram na comunicação síncrona entre clientes e um ou mais um pool de servidores back-end.

    
por 18.07.2013 / 22:40