Diferença entre um Message Broker e um ESB

126

Passei por diferentes perguntas / artigos sobre Message Brokers e ESBs (mesmo no stackoverflow). Ainda não é uma pista, qual é a diferença de demarcação CLEAR entre um Message Broker e um ESB? Agora, aqui estou tentando comparar produtos, Websphere Broker e Mule ESB !!

Em primeiro lugar, (qualquer versão) o Webshere Broker é um ESB? Nosso pessoal de produtos IBM afirma que é um ESB! (Não estou surpreso com isso).

Minhas informações limitadas informam que um Message Broker funciona em um modelo HUB-SPOKE. No entanto, o ESB trabalha em uma arquitetura de barramento. Agora, o que diabos isso significa? Eu li que se o HUB falhar (indisponível, eu acho), o corretor falhará completamente. O que não é o caso de um ESB (dizem esses caras). O que eu não entendo aqui é "E se o BUS" falhar?

Agora, o material usual sobre ESBs e Brokers é que eles fornecem roteamento, transformação, orquestração etc.

Outra área de conflito está relacionada à TRANSFORMAÇÃO. Os ESBs o facilitam de maneira diferente quando comparados aos Message Brokers? Eu realmente adoraria ter uma ideia sobre isso.

Agora, falando sobre a escala HORIZONTAL. Quem supera quem? Ou ambos são igualmente escalonáveis ​​em termos de complexidade (ou quaisquer outros fatores). É claro que em termos de custo, o Webshpere Broker cobrará por cada caixa (sem falar em cada CPU). Acredito que mesmo o MULE ESB comercial não faça isso. Deixando de lado a parte Custo, quais são as implicações do dimensionamento do ESB e do Message Broker. Por acaso sei que você pode aumentar o nível de serviço no ESB. Isso é possível em um Message Broker?

Franklin
fonte
Na verdade, o Mule também possui licenciamento por CPU / núcleo.
precisa saber é o seguinte

Respostas:

28

Você pode usar um intermediário de transformação sem um barramento de serviço e vice-versa. Em termos de produtos específicos, não acho que um seja puramente um ou outro por causa da maneira como um complementa o outro. Alguns produtos são mais fortes em uma área, outros mais fortes em outra. Talvez seja necessário fazer uma escolha com base em qual função melhor cobre um problema individual.

Um corretor pode ter "blocos lego" incorporados melhores para construir uma cadeia de transformação do que um produto ESB. Um corretor pressionado para o serviço como ESB pode ser esmagado sob carga e não ter uma escala adequada ou pode não ter um diário robusto e ferramentas para lidar com diários.

Alguns ESBs permitem que as atualizações do banco de dados sejam revertidas e as filas sejam reproduzidas em um aplicativo corrigido depois que um erro grave na lógica for descoberto e corrigido. Não acho que a maioria dos corretores integre esse nível de suporte transacional. Para que isso funcione em todas as suas "transações", quase deve haver eventos de negócios (uma venda, uma renovação, uma mudança de propriedade etc.), em vez de algo como "atualizações de banco de dados" do RPCish.

Bob77
fonte
5
Eu escrevi um post descrevendo os elementos de integração muitas vezes atribuída a autocarros de serviço, cobrindo os lados de transformação do mesmo, bem como: udidahan.com/2011/04/08/integration-how-and-where
Udi Dahan
23

Isenção de responsabilidade: Sou consultor da IBM e sou especializado no WebSphere ESB. Este comentário não é deixado em nenhuma capacidade oficial.

Um ESB é mais um padrão ou conceito arquitetural do que um produto - em geral, uma maneira baseada em serviços de engenharia de acoplamentos soltos. Sua definição é discutida e não exatamente imutável. Em geral, um ESB é um conjunto de serviços não relacionados (em um sentido técnico) - eles expõem interfaces e os consomem de outros serviços. Geralmente, não há uma arquitetura de hub e spoke envolvida, embora possa haver.

A IBM certamente comercializa o WebSphere Message Broker e o WebSphere ESB como produtos que facilitam a construção de um ESB (junto com o dispositivo de hardware DataPower). Eles têm raízes tecnológicas diferentes, mas têm alguma sobreposição de propósito. Além disso, isso não significa que você não pode criar um ESB com muitas outras coisas que não são marcadas como um 'produto ESB'.

Isso não responde a todas as suas perguntas, mas espero abordar a parte da IBM.

Andrew Ferrier
fonte
Obrigado Andrew.Estou feliz em saber que você é um especialista no WebSphere ESB.Eu tenho uma coisa clara.ESB não é um produto e é uma visão arquitetônica fundamental: um BUS.Agora, se o ESB estiver em vigor apenas a partir de 2002, por que foi cunhado? Acredito que haja muito debate sobre quem "inventou o ESB". Se o Websphere Broker pode "ser feito" fazer "todas as coisas" que um ESB faz, então por que reivindicá-lo como um produto ESB? Livro vermelho que mostra "Como implementar" um ESB com o Websphere Broker.
23411 Franklin
7
Realmente não sei se essa é uma boa analogia. Nossa empregada doméstica cozinha para mim. Minha mãe também cozinhava para mim. No entanto, não posso chamar minha mãe de empregada doméstica, pois ela desempenha os deveres de uma empregada doméstica, posso (se o fiz, isso é o fim do jantar)? Existe uma diferença fundamental que não pode ser superada?
23415 Franklin
O analista de middleware mais antigo do Gartner, Roy Schulte, afirmou que: "O ancestral mais direto do ESB foi o produto Roma da Candle, de 1998, mais tarde denominado Candle Pathwai". O Candle foi adquirido pela IBM em abril de 2004 - uma ironia que não será perdida na Tibco ou na Sonic Software, já que a IBM apenas recentemente começou a afirmar que também possui um ESB próprio - Steve Mills, da IBM, disse à ComputerWire que: "Eu sei que [temos um ESB], na verdade, venho fornecendo funcionalidade ESB há muitos anos. "
Franklin
1
Leia a coisa de quem está aqui "ESB Inventor" RESOLVIDO COM RIDDLE businessreviewonline.com/blog/archives/2005/08/…
Franklin
19

A diferença entre um Message Broker e um ESB (Enterprise Service Bus) é principalmente a palavra 'bus'.

Para mim, um Message Broker é um processo (geralmente grande) que transforma dados de uma estrutura para outra ou modifica o conteúdo.

Um ESB é um MOM (middleware orientado a mensagens) mais serviços adicionais, um dos quais pode ser um Message Broker. Portanto, um ESB pode incluir um Message Broker como um de seus componentes. Um barramento consiste em mais de um processo, caso contrário, não o chamaria de 'barramento'. A natureza de um barramento é que existem vários componentes que atendem a tarefas diferentes, cada um se comunicando através de um MOM e aderindo a alguma forma de 'formato de dados comum'. Um barramento consistiria em: aplicativos que enviam dados para o MOM, adaptadores de banco de dados, Message Brokers, pontes do MOM, etc.

A separação é um pouco gradual, mas a maior diferença entre uma arquitetura do Message Broker e um Bus é a da granularidade . Se sua tarefa é integrar os aplicativos A, B, .., Z e alguns bancos de dados, você pode fazer isso com um grande Message Broker conectando todos e cada um. Ou com um ESB onde vários componentes pequenos assumem apenas pequenas tarefas. Por exemplo, um adaptador se conecta a A, outro a B (mas eles não fazem a transformação), e cada um envia suas coisas para um (ou mais) Message Broker, cada um dos quais deve ser mantido o mais simples possível - por exemplo, não ter que saber sobre o modelo de dados de 'A' ou 'B'. Um bom ESB deve ter uma definição de dados comum no barramento, abstraindo da 'diferença' de aplicativos individuais.

TRANSFORMAÇÃO: um ESB não ajuda na transformação, a menos que seja fornecido com um Message Broker. Mas cada ESB bom deve incluir um Message Broker de qualquer maneira. O Message Broker deve ser o especialista do seu barramento para transformações, mas nada mais.

Escala HORIZONTAL: se você tiver apenas três coisas para conectar (agora e para sempre), provavelmente não vale a pena o esforço para obter um ESB completo. Um Message Broker tem a vantagem de ser apenas um grande processo. Você pode configurar tudo lá dentro e ter uma localização central para todos os seus mapeamentos de dados, filtragem e roteamento.

Mas se você tiver 30 aplicativos para se conectar, um Message Broker provavelmente chegará ao fim. Claro que você pode comprar mais instâncias, executar coisas redundantes etc., mas deve alterar sua estratégia para 'localizar' tarefas. O adaptador de cada aplicativo (pode ser uma pequena instância do Message Broker) deve ser capaz de gerar e / ou receber um modelo de dados comum abstraído (por exemplo, XML com um XSD compartilhado). Também pode haver um Message Broker central para tarefas de transformação, mas essa instância deve desconhecer o modelo de dados A ou B. Portanto, um ESB deve mover o processamento para o componente especialista em vez de manter tudo em um local central.

Axel Podehl
fonte
15

Acabei de ler este artigo de Udi Dahan há alguns dias, o que pode lhe dar uma visão mais clara do que considero uma diferença fundamental.

http://www.udidahan.com/2011/03/24/bus-and-broker-pubsub-differences

Citação:

A regra de que só pode haver um único editor para um determinado tipo de evento é uma das coisas que diferencia os ônibus dos corretores, embora ambos obviamente permitam que você tenha vários assinantes

...

Infelizmente, existem muitas tecnologias do tipo corretor disponíveis no mercado sob a bandeira do Enterprise Service Bus. Embora alguns produtos possam ser implantados de maneira centralizada e distribuída (às vezes chamado de modo "federado" ou "incorporado"), muitos não impõem a regra "ponto de extremidade de publicação único por tipo de evento".

Sem essa restrição, é muito fácil cometer erros.

Espero que ajude.

GR7
fonte
Este é um ótimo artigo, mas não aborda o ESB, exceto nos comentários.
NealWalters
6

Um barramento de serviço corporativo fornece três valores-chave para o negócio:

  1. Roteamento de transações por contexto ou por conteúdo;
  2. Transformação de um domínio ou transporte de mensagem para outro domínio ou transporte de mensagem;
  3. conectividade de serviços muitos para muitos.

Os ESBs fornecem acoplamentos frouxos de serviços, permitem que os serviços sejam reconstituídos em contextos de aplicativos completamente diferentes dos quando os serviços foram concebidos ou desenvolvidos pela primeira vez e promovem a reutilização de aplicativos sem a necessidade de recodificá-los. O WebSphere Message Broker (ou agora é chamado IBM Integration Bus) é um excelente exemplo de um Enterprise Service Bus. Para um exemplo de simplicidade de código que exerce grande poder em algumas linhas, você pode ver minha postagem aqui: http://soabus.org/viewtopic.php?f=3&t=13 . A construção fundamental dentro do tempo de execução do IIB é chamada de Árvore de Mensagens Lógicas(LMT). Tudo o que o desenvolvedor deseja fazer é algum tipo de operação no LMT. ESQL é a linguagem mais eficiente que um desenvolvedor pode usar para executar essas operações no LMT, embora muitas outras linguagens sejam suportadas (por exemplo, Java, PHP, Python, etc.) Nenhum outro produto se aproxima da eficiência e facilidade do desenvolvimento do ESB aplicativos que o IBM Integration Bus, já que 90% da codificação desses aplicativos é feita arrastando e soltando nós em um palete. Isso deixa apenas 10% da codificação a ser feita pelo desenvolvedor do Message Flow. A propósito, o WebSphere ESB foi descontinuado pela IBM e muitos dos produtos concorrentes do IBM Integration Bus não veem nenhum novo desenvolvimento neles há vários anos. Uma lista de várias ofertas de produtos ESB pode ser vista em soabus.org.

user3223466
fonte
Os links nesta resposta que apontam para soabus.org não são mais resolvidos - eles são redirecionados para archmule.com.
tatlar
2

Desde então, a IBM alterou os nomes de suas ofertas de ESB, então eu não iria entrar nos nomes ou fornecedores.

O ESB permite que as informações comerciais fluam entre aplicativos diferentes em várias plataformas de hardware e software. O ESB é mais uma camada de middleware que mantém a lógica de conectividade de aplicativos e uma lógica de negócios mínima ou nenhuma. Isso permite que os aplicativos façam o que fazem de melhor, sem se preocupar em incorporar nenhuma lógica de conectividade sobre como interagir com outros N números de aplicativos que requerem os dados. A arquitetura ESB tenta resolver o ponto a ponto da bagunça de espaguete em uma empresa.

O ESB e o Message Broker são um tipo de sinônimo entre si, no entanto, como uma das respostas acima destacou que o padrão do Message Broker é uma parte do domínio maior do ESB. A letra "B" no ESB é análoga ao barramento (hardware) na arquitetura do computador. O barramento na placa-mãe ou no computador conecta vários componentes para o funcionamento do computador. ESB é um barramento baseado em software que conecta vários serviços em uma empresa. Hub and spoke é um dos padrões suportados pela arquitetura ESB. No mundo monolítico, cada fornecedor tem sua própria arquitetura de implantação de alta disponibilidade para garantir que o ESB esteja disponível. As ofertas recentes de qualquer fornecedor de ESB são em termos de modelo de implantação baseado em microsserviços ou hospedadas em sua própria nuvem, conhecida como iPAAS. Portanto, isso garante que o barramento nunca falhe ou falhe temporariamente com autocorreção com base no modelo de implantação selecionado. Com a implantação baseada em microsserviços ou o iPAAS, os ESB agora têm recursos de dimensionamento automático (horizontal ou verticalmente), com recursos variando de acordo com o fornecedor selecionado.

Para recursos de nível muito alto que o ESB fornece, você pode acessar o seguinte link => https://en.wikipedia.org/wiki/Enterprise_service_bus

Rohan
fonte