Pergunta

Quais são as motivações para o uso de uma mensagem com base no sistema?

Eu estou vendo um monte sobre o serviço de autocarros, tais como NServiceBus e Transporte De Massa e eu estou querendo saber quais os benefícios da subjacentes metodologia.

Foi útil?

Solução

Existem várias vantagens no uso de sistemas baseados em mensagens.

  1. As mensagens formam uma interface neutra bem definida entre aplicativos.
  2. Permite o acoplamento solto de aplicações.
  3. Muitas opções para desempenho, ajuste e escala:
    • Implante de solicitação e processo de serviço em hardware diferente
    • Vários solicitantes compartilhando servidor único
    • Vários solicitantes compartilhando vários servidores
  4. As várias mensagens Middlewares implementam os padrões de mensagens comuns independentemente do seu aplicativo.
    • Solicitação/resposta
    • Fogo e esqueça as atualizações offline
    • Publicar/assinar
  5. Muitos dos produtos de middleware lidam com a transformação da mensagem (por exemplo, Swift para Swiftxml).
  6. Muitos dos produtos do middleware podem decompor uma única solicitação grande em várias solicitações menores.
  7. Eles quase todos suportam várias plataformas.

Aliás, os dois líderes de mercado nessa área são a IBM com o WebSphere MQ e os produtos relacionados e, o TIBCO com seu ônibus de serviço corporativo.

Outras dicas

Uma arquitetura baseada em mensagens descreve produtores e consumidores de mensagens, tanto no tempo quanto no espaço. Isso tem muitos benefícios:

  • Produtores e consumidores podem funcionar em diferentes máquinas
  • Produtores e consumidores podem correr em momentos diferentes.
  • Produtores e consumidores podem ser executados em diferentes plataformas de hardware/software (eles só precisam entender o mesmo protocolo de mensagem)
  • É fácil coordenar vários produtores / consumidores (por exemplo, para empregos com uso intensivo de computação que precisam de várias máquinas, como Dave Markle descreveu)
  • maior estabilidade quando os serviços são temporariamente inúteis (por exemplo, ao fazer processamento de pedidos, o uso de um sistema de mensagens pode ajudar a evitar pedidos de "soltar")

Você perde a maior parte desses benefícios quando faz comunicação no estilo RPC (ou seja, quando você bloqueia enquanto aguarda as respostas do serviço)

Um caso de uso é quando você tem um conjunto de recursos que podem funcionar em um determinado item e uma lista de trabalho que precisa ser distribuída de maneira escalável.

Certa vez, tive um projeto em que tive que fazer a integração de mainframe com vários 3270 raspadores de tela (todos lentos). Eu poderia ter no máximo 10 desses processos abertos em uma caixa de cada vez. Eu tinha milhares de contas para raspar e atualizar, então coloquei o trabalho em uma fila, e minhas máquinas (eu tinha cerca de 3 deles) acabou de pegar itens de trabalho na fila de mensagens (MSMQ) e fiz o raspagem da tela, E foi isso. Eu poderia facilmente girar uma nova máquina ou desativar os antigos sem interromper o fluxo de trabalho, o que foi bom.

Os benefícios estão realmente desacoplando as partes do seu aplicativo. Depois de configurar o barramento e os aplicativos são adicionados, você pode estender seu aplicativo facilmente adicionando novas peças que você pode garantir que não afetarão as outras peças. É uma maneira muito boa de adicionar continuamente a um sistema ao longo do tempo.

por exemplo. Temos um sistema como esse, cada comando é implementado como parte da GUI geral, se quisermos adicionar um novo recurso ou modificar um existente, apenas escrevemos uma nova peça e a adicionamos ao sistema. Quando é chamado, não tem dependências do resto. Isso significa que podemos estender nosso aplicativo com muita facilidade. Além disso, temos uma mensagem passando entre nós em nossa rede - quando algo é alterado em 1 computador, uma mensagem é enviada a todos os outros para que eles possam se atualizar. Temos cem mensagens diferentes para eventos diferentes, para que possamos estender o sistema soltando um novo serviço que reage às mensagens apropriadas.

As arquiteturas de passagem de mensagens normalmente têm os mesmos recursos que os serviços da Web, você possui serviços discretos que você pode ligar, pode adicionar novos facilmente.

Não pense que as arquiteturas que passam por mensagem exigem produtos de middleware sofisticados (e caros! Exemplo da arquitetura - nenhuma parte de um sistema precisa saber sobre qualquer outra parte, você pode estendê -la infinitamente, pois pode lidar com quantos controles quiser em qualquer caixa de diálogo, etc.

A passagem de mensagens é uma arquitetura fabulosa, embora possa ser mais lenta do que unir firmemente seu aplicativo, isso não é motivo para não usá -lo hoje em dia, especialmente se você já está usando aplicativos de script ou .NET.

O sistema orientado a mensagens é geralmente bom para certas classes de problemas de integração. Outras alternativas estão tendo um armazenamento de dados compartilhado (talvez baseado em arquivo ou banco de dados) para que os aplicativos se comuniquem ou os aplicativos integrando via RPC.

As vantagens das mensagens sobre esses padrões de integração são que você não está acoplando os dois aplicativos ao mesmo esquema do armazenamento de dados e não está vinculando aplicativos a um ponto a ponto de apontar o cenário de integração RPC (que fica mais complexo quanto mais aplicativos estão envolvidos).

Há também os benefícios da comunicação assíncrona (como email versus chat online) e possibilidades de roteamento e transformação de mensagens.

Eu ajudei a desenvolver para um sistema que usasse o C# e o sistema de interacção remota, o cliente (um serviço ou GUI) pode enviar uma mensagem completa, com alguns dados personalizados e o destinatário(s) receberia, quando eles seguinte ligado ou imediatamente).Eles poderiam, então, processar a mensagem (tendo propriedades do mesmo, no caso dos serviços de balanceamento de carga).Era também usado para atualizar o GUIs quando processos de execução demorada tinha terminado.

O próprio sistema de mensagens tinha configurável condutas que processou a cada mensagem, aqui estão alguns exemplos de algumas das condutas que desenvolvemos:

  • De armazenamento (criada/ salva a mensagem para o banco de dados)
  • (Roteamento trabalhou fora, onde a mensagem precisa ser enviada)
  • De segurança (resolvido se o cliente foi autorizada a recebê-lo)
  • Excluir (funciona se a mensagem precisa ser excluído do sistema, o que significa que os clientes precisam para ser notificado e a mensagem removida do cache e assinalados em DB).
  • TakeOwnership (lida com certificando-se de apenas um cliente pode modificar o estado de uma mensagem em um momento como apenas as mensagens que são de propriedade pode ser alterado)

Assim, em resposta à sua pergunta, os sistemas de mensagens são uma brilhante meio de envio de informações sobre quando você não saber ou se importar com o que o cliente está.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top