ESB(Enterprise service bus)-----企业服务总线的简写。
目前使用的是openESB,Sun公司的开源社区提供的,集成在netbean中,使用glassFish服务器。
先来说一下我自己对ESB的认知:我更喜欢把ESB从webservice的角度去理解,webservice是使用SOAP、XML、UUID、WSDL相结合的方式来解决不同应用间通信的,属于一种系统与系统直接的直接关联,而ESB则可以看作一个中转站,用于接收上一层发送的信息,然后处理并转发到下一层。而这样做的好处是: 若多个系统间通讯时,使用传统的webservice,将可能会出现如下情况。
而是用ESB的方式,则会更加的清晰:
并且,由于两个系统之间不需要直接进行交互,也避免了因为两个系统之间的接口不一致而需要在两个系统之中进行协调的尴尬,在ESB中A系统传输的内容可以和B系统所接收的内容形式上不一致,但可以通过ESB中间的逻辑进行修改赋值,这样一来两个系统只需要关注自身的业务和暴露的接口就可以了,而不用去考虑接收信息或发送信息的系统。
今天出去面试了,面试的公司做的开发也有ESB部分,他们的ESB部分是自己开发的,我跟愿意称之为EAI(Enterprise Application Integration)企业应用集成。他们分为外网和内网两个模块,内网使用的是xml的webservice方式实现,而外网的访问则是通过他们自己开发的ESB部分进行分发,在这里ESB部分还包括了防火墙的作用。
在OpenESB中,可以方便的使用格式转换、协议转换、代理、编排、安全控制、监控、不支持高并发,类似于路由器维护着一张路由表进行路由转发,其中的编排可以理解为服务编排:原本A、B、C三个服务,A调用B,而B需要C中的东西,则会形成一个A-->B-->C的访问串,而在ESB中则不会形成串。
阿里的dubbo,使用的是服务注册的方式,注册中心即dubbo内部只保存了接口的地址,A应用通过dubbo获得地址信息进行直接访问,其优点是适用于压力较大的系统,但不利于服务编排和协议转换,这两方面还是需要各个业务系统各自实现。
ESB和dubbo两者之间的侧重不同,前者更注重于服务编排,并且内部使用的是xml的形式,所以效率不高,不利于高并发,而后者注重服务的治理,提高服务之间访问的效率,而服务的编排则需要服务自身实现。
这是我找到的一篇介绍ESB和dubbo的博客。