2009-04-21 22 views
111

He revisado diferentes preguntas/artículos sobre Message Brokers y ESB (incluso en stackoverflow). ¿Todavía no hay una pista de cuál es la diferencia demarcación CLARA entre un intermediario de mensajes y un ESB? ¡Ahora aquí estoy intentando comparar productos, Websphere Broker y Mule ESB!Diferencia entre un intermediario de mensajes y un ESB

En primer lugar, es (cualquier versión) Webshere Broker un ESB? ¡Nuestros tipos de productos de IBM afirman que es un ESB! (No me sorprende).

Mi información limitada me dice que Message Broker funciona en un modelo HUB-SPOKE. Sin embargo, el ESB funciona en una arquitectura de bus. ¿Qué demonios se supone que significa eso? He leído que si el HUB falla (no está disponible, supongo), entonces el intermediario falla por completo. Lo cual no es el caso de un ESB (Entonces esos tipos dicen). Lo que no entiendo aquí es "¿Qué pasa si el BUS" falla?

Ahora, lo habitual sobre un ESBs y Brokers es que proporcionan enrutamiento, transformación, orquestación, etc. Entonces, si ambos proporcionan esto, ¿por qué elegiría uno sobre el otro?

Otra área de conflicto es con respecto a la TRANSFORMACIÓN. ¿Los ESB lo facilitan de una manera diferente en comparación con Message Brokers? Realmente me encantaría conocer algo sobre esto.

Ahora hablando de escalado HORIZONTAL. ¿Quién supera a quién? O ambos son igualmente escalables en términos de complejidad (o cualquier otro factor). Por supuesto, en cuanto a los costos, Webshpere Broker te cobrará por cada caja (sin mencionar cada CPU). Creo que incluso el comercial ESL de MULE no hace eso. Dejando de lado la parte de Costo, ¿cuáles son las implicaciones de la escala de ESB y la escala de Message Broker? Sé que puedes escalar al nivel de servicio en ESB. ¿Es esto posible en un Message Broker?

+11

Heh, su error tipográfico "Mensaje Borkers" es gracioso porque es verdad. – JeeBee

+0

ooops mejor corregir que :) – Franklin

+0

En realidad, Mule tiene licencias por CPU/núcleo también. –

Respuesta

22

Puede utilizar un intermediario de transformación sin un bus de servicio, y viceversa. En términos de productos específicos, no creo que nadie sea puramente uno o el otro debido a la forma en que cada uno complementa al otro. Algunos productos son más fuertes en un área, otros más fuertes en otra. Tal vez se deba hacer una elección basada en qué función cubre mejor un problema individual.

Un intermediario puede tener mejores "bloques de lego" incorporados para construir una cadena de transformación que un producto ESB. Un intermediario presionado en servicio como un ESB puede ser aplastado bajo carga y no escalar bien, o puede carecer de robusto diario y herramientas para manejar diarios.

Algunos ESB permiten que las actualizaciones de la base de datos se retrotraigan y que las colas se reproduzcan en una aplicación corregida una vez que se ha descubierto y solucionado un error grave en la lógica.No creo que la mayoría de los corredores integren ese nivel de soporte transaccional. Para que esto funcione en todas sus "transacciones" casi tiene que haber eventos de negocios (una venta, una renovación, un cambio de propiedad, etc.) en lugar de algo así como "actualizaciones de bases de datos" de RPCish.

+4

Acabo de escribir una publicación de blog que describe los elementos de integración que a menudo se atribuyen a los autobuses de servicio , cubriendo los lados de la transformación también: http://www.udidahan.com/2011/04/08/integration-how-and-where/ –

19

Descargo de responsabilidad: soy un consultor de IBM y me especializo en WebSphere ESB. Este comentario no se deja en ninguna capacidad oficial.

Un ESB es más un patrón o concepto arquitectónico que un producto, en términos generales, una forma de ingeniería basada en el servicio de acoplamiento libre. Su definición se pelea y no exactamente en piedra. En general, un ESB está compuesto de servicios no relacionados (en un sentido técnico): exponen las interfaces y las consumen de otros servicios. Generalmente no hay una arquitectura hub y spoke involucrada, aunque puede haberla.

IBM ciertamente comercializa WebSphere Message Broker y WebSphere ESB como productos que facilitan la creación de un ESB (junto con el dispositivo de hardware DataPower). Tienen diferentes raíces tecnológicas, pero tienen cierta superposición en el propósito. Además, eso no quiere decir que no pueda construir un ESB con muchas otras cosas que no estén marcadas como un 'producto ESB'.

Eso no responde todas sus preguntas, pero con suerte aborda la parte de IBM.

+0

Gracias Andrew. Me complace saber que es especialista en WebSphere ESB. Tengo una cosa clara. ESB no es un producto y es una visión arquitectónica fundamental: UN BUS. Ahora, si ESB ha estado en funcionamiento solo desde 2002 en adelante ¿Por qué fue incluso acuñado? Creo que hay un gran debate sobre quién "inventó ESB". Si Websphere Broker puede "hacerse" hacer "todas las cosas" que hace un ESB, ¿por qué afirmar que es un producto de ESB? Incluso he visto un Libro rojo que muestra "Cómo implementar" un ESB con Websphere Broker. – Franklin

+6

Realmente no sé si esta es una buena analogía. Nuestra doncella doméstica cocina para mí. Mi madre también cocinaba para mí.Sin embargo, no puedo llamar madre a mi madre a pesar de que ella cumple con los deberes de una doncella, ¿podría (si lo hice, que es el final de la cena)? Hay una diferencia fundamental que no se puede superar? – Franklin

+0

El analista de middleware más antiguo de Gartner, Roy Schulte, afirmó que: "El ancestro más directo al ESB fue el producto Roma de Candle de 1998, más tarde llamado Candle Pathwai". Candle fue adquirida por IBM en abril de 2004, una ironía que no se perderá ni en Tibco ni en Sonic Software, ya que IBM acaba de comenzar a afirmar que también tiene un ESB propio: Steve Mills de IBM le dijo a ComputerWire que: "Yo sabemos que sí [tenemos un ESB], de hecho, he estado entregando la funcionalidad de ESB durante muchos años ". – Franklin

13

Acabo de leer este artículo de Udi Dahan hace unos días, que podría darte una visión más clara de lo que creo que es una diferencia fundamental.

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

Citando:

La regla de que sólo puede haber un único editor para un determinado tipo de evento es una de las cosas que diferencia a los autobuses de los corredores, aunque ambos, obviamente, le permiten tener varios suscriptores

.. .

Por desgracia, hay muchas tecnologías de estilo corredor de ahí que están siendo comercializados bajo la bandera de la Enterprise Service Bus. Mientras que algunos productos tienen la capacidad a desplegarse tanto en una forma centralizada y distribuido (a veces llamado “federados” o “incrustado” modo), muchos no hacer cumplir el “solo punto final publicación per-tipo de evento” regla.

Sin esta limitación, es solo demasiado fácil cometer errores.

Espero que ayude.

+0

Este es un gran artículo, pero no aborda ESB excepto en el comentarios – NealWalters

4

Un bus de servicios empresariales ofrece tres valores clave para la actividad:

  1. Contexto- o encaminamiento basado contenido- de las transacciones;
  2. Transformación desde un dominio de mensaje o transporte a otro dominio de mensaje o transporte;
  3. conectividad de servicio many-to-many.

ESB proporcionan acoplamiento débil de los servicios, permiten que los servicios a ser reconstituidos en completamente diferentes contextos de aplicación que cuando los servicios se concibieron o desarrollados primero, y promover la reutilización de aplicaciones sin la necesidad de recodificar aplicaciones. WebSphere Message Broker (o ahora se llama IBM Integration Bus) es un excelente ejemplo de Enterprise Service Bus. Para ver un ejemplo de simplicidad de código que aporta una gran potencia en unas pocas líneas, puede ver mi publicación aquí: http://soabus.org/viewtopic.php?f=3&t=13. La construcción fundamental dentro del tiempo de ejecución IIB se llama Árbol de mensajes lógicos (LMT). Todo lo que el desarrollador quiere hacer es algún tipo de operación en el LMT. ESQL es el lenguaje más eficiente que un desarrollador puede usar para realizar estas operaciones en LMT, aunque se admiten muchos otros lenguajes (por ejemplo, Java, PHP, Python, etc.). Ningún otro producto se acerca a la eficiencia y facilidad de desarrollo de ESB. aplicaciones que IBM Integration Bus ya que el 90 por ciento de la codificación de estas aplicaciones se realiza arrastrando y soltando nodos en una paleta. Eso deja solo el 10% de la codificación a cargo del desarrollador de Message Flow.Por cierto, IBM ha suspendido WebSphere ESB y muchos de los productos competidores de IBM Integration Bus no han visto ningún desarrollo nuevo en ellos desde hace varios años. Se puede ver una lista de varias ofertas de productos de ESB en soabus.org.

+0

Los enlaces en esta respuesta que apuntan a soabus.org ya no se resuelven; se los redirige a archmule.com. – tatlar

13

La diferencia entre un Message Broker y un ESB es principalmente la palabra 'bus'.

Para mí, un Message Broker es un proceso (usualmente grande) que transforma los datos de una estructura a otra estructura o modifica el contenido.

Un ESB es un middleware orientado a mensaje (MOM) más servicios adicionales, uno de los cuales podría ser Message Broker. Entonces, un ESB puede incluir un Message Broker como uno de sus componentes. Un Bus consta de más de un proceso; de lo contrario, no lo llamaría 'bus'. La naturaleza de un bus es que hay múltiples componentes que sirven diferentes tareas, cada uno se comunica a través de un MOM y se adhiere a alguna forma de 'formato de datos común'. Un bus consistiría en: aplicaciones que envían datos a MOM, adaptadores de bases de datos, Message Brokers, puentes MOM, etc.

La separación es un poco gradual, pero la mayor diferencia entre una arquitectura Message Broker y un Bus es la de granularidad. Si su tarea es integrar aplicaciones A, B, ..., Z y un par de bases de datos, puede hacer esto con un gran Message Broker que conecta a todos. O con un ESB donde múltiples componentes pequeños se encargan solo de pequeñas tareas. Por ejemplo, un adaptador se conecta a A, otro a B (pero no hacen la transformación), luego cada uno envía sus cosas a uno (o más) Message Broker, cada uno de los cuales debe mantenerse lo más simple posible, por ejemplo. no tener que saber sobre el modelo de datos de 'A' o 'B'. Un buen ESB debería tener una definición de datos común en el bus, abstrayendo de la 'diferencia' de las aplicaciones individuales.

TRANSFORMACIÓN: un ESB no ayuda con la transformación, a menos que venga con un intermediario de mensajes. Pero cada buen ESB debería incluir un Message Broker de todos modos. The Message Broker debería ser el experto de tu bus para las transformaciones, pero nada más.

escalado HORIZONTAL: si solo tiene 3 cosas para conectar (ahora y para siempre), probablemente no vale la pena el esfuerzo para obtener un ESB completo. Un Message Broker tiene la ventaja de ser solo un gran proceso. Puede configurar todo allí y tener una ubicación central para todas sus asignaciones de datos, filtrado y enrutamiento.

Pero si tiene 30 aplicaciones para conectar, un Message Broker probablemente se detendrá. Por supuesto, puede comprar más instancias, ejecutar cosas redundantes, etc., pero debe cambiar su estrategia para 'localizar' trabajos. El adaptador de cada aplicación (podría ser una pequeña instancia de Message Broker) debería poder generar y/o recibir un modelo de datos común abstraído (por ejemplo, XML con un XSD compartido). También podría haber un Message Broker central para las tareas de transformación, pero esa instancia no debería conocer el modelo de datos A o B. Por lo tanto, un ESB debería mover el procesamiento al componente experto en lugar de mantener todo en un lugar central.

Cuestiones relacionadas