了解ESB

时间:2012-10-26 22:53:42

标签: java web-services jms integration soa

虽然我了解系统集成是什么,但我对所有最新方法都有点新意。我非常熟悉Web服务和JMS,但我对ESB的概念感到十分困惑。

我做了一些研究,但我仍然没有得到它。我通过榜样而不是理论来做得更好。

那么有人可以说明一个简单的例子来说明为什么人们会使用企业服务总线而不仅仅是队列,Web服务,文件系统还是其他?

我希望这个例子能够放大ESB的功能,这是任何其他常规整合方法都无法实现的,或者至少不能达到相同的效率。

非常感谢所有回复。

谢谢, 鲍勃

5 个答案:

答案 0 :(得分:9)

这听起来有点刺耳,但基本上如果你需要一个ESB,你就会知道你需要一个ESB。

对于大多数用例,ESB是一个寻找问题的解决方案。它是为大多数场景设计的一堆软件。大多数人根本没有做足够多的处理来保证它。 “企业”的“E”在这里值得注意。

在一个简单的案例中:

tail -F server.log | grep SEVERE >> severe.log

这是ESB场景实例的一个简单示例。

“但那只是一个UNIX命令管道!”

是的,确实。

“ESB”部分是“|”和“>>”

ESB是一个运行时间,您可以在其中将模块链接在一起,监控流量,设计各种各样的场景,如扇出和加入等等。

ESB值得注意的是,有一堆连接器可以读取一堆源并写入一堆目的地。他们以编写更复杂的图形和工作流程来处理使用相当粗略的逻辑块而着称。

但大多数人通常做的是:

input -> DO_STUFF -> output

通过ESB,他们得到:

ESB[input -> DO_STUFF -> output]

在野外,大多数管道并不那么复杂。它们倾向于有一个不可重复使用的逻辑,而且人们倾向于将它们整合到一个逻辑模块中。

嗯,哎呀,你可以用Perl脚本做到这一点。

ESB中的长管道往往效率低下。在通用模块中进行大量数据封送(因为您很少使用二进制有效负载)。

因此,比如说,CSV进来,转换为XML,处理它,输出XML作为输入到另一个步骤作为XML,它将其编组,对其进行处理,将其转换回XML以用于又一步。冲洗并重复直到CPU达到400%(多核FTW)。

然后有人提出“嘿,如果我将这些模块拖放到一个例程中,我们会跳过所有这些XML垃圾!”,最后你会得到“输入 - > DO_STUFF - >输出”

对于大型系统,有许多需要进行临时,临时集成的Web服务,它们可以很好。如果你从事的业务很多,他们可以很好地工作。如果您有数十个管道,他们可以帮助管理它们的操作方面。

但是对于复杂的管道,如果你有很多步骤,也许除了原型设计之外它不是一个好主意,特别是如果涉及任何实际量。记住,你可能没有任何选择,取决于你正在整合的系统。

如果没有,如果你有一个界面需要站起来 - 那就去做吧。无论如何,都可以在Perl,Java,C#中完成。不要耗尽并完成一些奇怪的100MB基础设施和复杂性,你现在可以学习,掌握和维护。

所以,再次,如果你需要一个ESB,你就会知道它。真。你有什么系统,你用不同的东西一起构建,你要与它斗争,与同事讨论这些东西是什么样的痛苦,你偶然发现一些链接到一些网站给一些供应商并阅读一张白纸然后去“那就是它!”,但如果你还没有这样做,那么你就不会错过任何东西。

答案 1 :(得分:4)

这将帮助您理解ESB的概念。

A Buyers Guide to an Enterprise Service Bus (ESB) 这将提供关于ESB的清晰的想法。

“在应用程序集成方面,企业服务总线(ESB)是一致的答案。它的解决方案架构利用Web服务,消息传递中间件,智能路由和转换。鉴于其功能的广度,决策您的组织是否将实施ESB,如果是,您应该选择哪一个是至关重要的。

本次会议将概述需要考虑的关键因素,其中包括 -

正确的技术阶段,您应该查看使用ESB的选项 需要适应现有架构 周围的社区“

答案 2 :(得分:3)

ESB适用于您在同一系统中拥有该Web服务和队列及文件系统并需要集成它们的情况。 ESB产品通常解决以下问题

  1. 安全
  2. 邮件路由
  3. 业务流程(高级消息路由)
  4. 协议转换
  5. 消息转换
  6. 监控
  7. 三项赛
  8. 您也可以使用其他工具完成所有这些工作,如果您只需要其中一项或两项功能,那么您可能无需使用ESB(因为它引入了额外的复杂性),但是当您需要其中一些功能时,可以使用其中的一些ESB的形式可以是更好的解决方案。

答案 3 :(得分:1)

正如@WillHartung总结的那样,ESB往往适用于大型复杂情况。这就是为什么它被命名为企业服务总线。

现在,要真正回答您的问题,ESB通常会:

  • 通过多种协议(例如HTTP,Message Queue等)进行通信,用于输入和输出

  • 建立一种通用的邮件格式,并经常将其他格式转换为“规范”格式

  • 提供端点透明度(例如,您向总线发送消息,然后获得回复,但您没有明确知道哪些服务也连接到总线,处理了您的请求。

    < / LI>
  • 提供监控和管理功能

  • 促进服务和消息的版本控制

  • 在需要时强制执行安全措施。

所以,正如你所看到的那样,当进行大量的点对点通信(“只是这样做”)时,这将是一堆巨大的,难以管理的意大利面条。事实上,我见过SOA的大多数地方都在实施,它正在取代已经存在的那堆巨大的意大利面。

答案 4 :(得分:0)

如果您喜欢面向服务的架构,ESB是企业服务总线,基础架构背板。想象一下,数百种服务的混乱令人愉快地重复使用。如何管理这样的环境?您如何在服务之间提供灵活的,分离的路由?你如何避免点对点的意大利面建筑?您如何管理混合技术领域的交易和安全性?如何跟踪多个系统中复杂流中的消息位置?

您使用的是ESB。

ESB通常允许您以XML配置语言设计跨多个系统的流,为您提供大量EIS适配器,转换和中介插件等。有些将提供IDE来帮助您设计流程。有些ESB非常昂贵,有些是开源的。

如果您想了解ESB,请查看Mule或WSO2,两者都是优秀的开源产品,甚至是Spring Integration,它是一种非集群解决方案,但非常适合将Java与底层外部接口点分离。 / p>