了解ESB

bob*_*ina 10 java integration soa web-services jms

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

我做了一些研究,但我仍然没有得到它.我通过实例而不是理论更好地工作.

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

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

所有回复都非常感谢.

谢谢,鲍勃

Wil*_*ung 9

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

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

在一个简单的情况下:

tail -F server.log | grep SEVERE >> severe.log
Run Code Online (Sandbox Code Playgroud)

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

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

对,就是这样.

"ESB"部分是"|" 和">>"

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

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

但大多数人通常做的是:

input -> DO_STUFF -> output
Run Code Online (Sandbox Code Playgroud)

通过ESB,他们得到:

ESB[input -> DO_STUFF -> output]
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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

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

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