整理的OSChina 第 38 期高手问答 —— ESB 企业服务总线,嘉宾为@肖俊_David 。
@肖俊_David 恒拓开源架构师,热衷于JAVA开发,有多年的企业级开发经验。曾参和设计和开发基于FuseESB 企业级服务总线系统,对FuseESB企业级服务总线以及内嵌的Camel/ActiveMQ 有深刻的理解。
ESB 全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。
ESB 相关的开源软件:http://www.oschina.net/project/tag/333/esb
主要有价值的问题整理如下:
1、先简单介绍下 ESB 的应用场景吧,相信很多人还是不太了解 。
肖:一般用在企业内部业务系统比较多,相互之间调用比较复杂,接口的维护花费比较大,并且不同的系统采用了不同的开发平台、传输协议、数据格式等,这种情况下就需要考虑使用ESB了 。
2、这么庞大的一个系统,设计时候遇到的难题及解决方法是什么?在系统性能上从那些方面优化?
肖:主要体现在各业务系统数据的整合/ESB路由的安全/流量控制等方面。 性能方面是这些方面的优化:负载均衡/应用服务器集群/缓存/数据库的读写分离/Restful WS/WS接口数据的压缩/消息的异步传输/。具体可以参考此文档http://www.oschina.net/doc/593。
3、对于大并发的实时交易的系统,选用ESB作为数据总线,其性能如何?在线人数100万,并发1000左右的交易,基于WS与ESB进行对接,中间不介入MQ 。
肖:根据我们对Fuse ESB的性能测试情况,直接访问WS与通过ESB来访问WS,性能影响不大,当然具体的性能损耗,还与你采用的ESB产品有关!我们目前做的项目,部署了两台ESB,前面通过LVS做负载均衡,调用WS的TPS可以达到 600-800左右。
4、ESB的具体应用及其担任的角色是什么呢?
肖:中介、路由转发、格式转换、协议转换、安全控制。
追问:您好,针对于您说的路由转发,可否再阐述下,
肖:就是说路由转发的机制,可以是业务人员定义的,由业务人员来定制转发的流程。
5、ActiveMQ 比较适合哪些企业应用场景?能否举个例子简单说明下,体现使用了ActiveMQ的价值。
肖:ActiveMQ主要优势体现在消息的异步/推送上, 提供了多种语言的客户端。它可以用于异构系统的整合,如我需要向其它系统推送一个消息,只需要把消息发送到MQ服务器,便可以去做其它事情,MQ服务器来保证其它系统数据的接收;另外,系统包含大量的业务日志数据,也可以考虑使用MQ来异步处理。
追问:MQ服务器一般采取哪些部署方案呢?对于处理大量业务日志,单台MQ服务器是否足够?
肖:看机器性能, 我这边性能测试 4核/4G内存/linux,MQ的收发大概可以到5000条/秒。如果有高可用的需求,需要做MQ集群。
追问:你是说先把日志内容发给MQ,再由MQ发送给日志系统?
肖