浅谈Mule ESB架构设计

(http://express.ruanko.com/ruanko-express_70/tech-overnight2.html)


一、简介

Mule是一个基于Java的轻量级企业服务总线和集成平台。它的主要特性包括:

  1. 基于J2EE1.4的企业消息总线(ESB)和消息代理(broker);
  2. 可插入的连接性,支持20多种传输协议,比如:jms、jdbc、tcp、udp、multicast、http、servlet、smtp、pop3、file、xmpp等;
  3. 支持任何传输之上的异步,同步和请求响应事件处理机制;
  4. 支持Axis或者Glue的Web Service;
  5. 灵活的部署结构,包括Client/Server, P2P, ESB 和Enterprise Service Network;
  6. 与Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring应用中;
  7. 使用基于SEDA处理模型的高度可伸缩的企业服务器;
  8. 强大的基于EIP模式的事件路由机制等。

二、整体结构


浅谈Mule ESB架构设计_第1张图片

图1 整体结构

从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、Transaction Management(事务管理)、Transformation(转换)、Message Broker(消息代理)、Transportation Management(传输管理)、Security(安全)等核心模块。Mule可以单独使用,也可以架设在常用的应用服务器上。

浅谈Mule ESB架构设计_第2张图片

图2 架构简图(1)

外围系统的服务请求通过Mule ESB的Transport接入,Mule通过Transformer进行数据的格式转换,然后经过Inbound Router进行消息过滤(内部通过配置filter实现)后交给Mule的Component进行业务逻辑处理,处理后的结果通过Outbound Router确定传递给哪个接收方,然后通过Transformer进行数据格式转换,通过Transport连接至接收方,传递信息。

此图描述的是Mule中的一个典型场景的处理过程,涵盖了Mule中的各个关键组件。其中某些处理步骤不是必须的,如Inbound Router、Transformer。

浅谈Mule ESB架构设计_第3张图片

图3 架构简图(2)

浅谈Mule ESB架构设计_第4张图片

图4 架构简图(3)

三、功能
a) 服务中介
将业务逻辑和消息发送分离;
屏蔽服务的消息格式和协议;
提供任意位置的服务调用;
提供协议桥接。
b) 数据转换
在应用间交换不同格式的信息;
操作消息的负载内容,包括加密、压缩和编码转换;
在异构的传输协议的数据类型间格式化消息。
c) 消息路由
基于消息内容和复杂规则路由消息;
消息的过滤、聚合以及重新排列序号。
d) 服务创建和托管
暴露端点、EJB、Spring Bean以及POJO作为服务;
作为轻量级的服务容器进行服务托管。
四、基本概念
Mule ESB中有一些基本的概念,理解这些基本概念后才能理解Mule的内部机制。从中也可以看到Mule解决问题的基本思路。
4.1 Mode
Model表示托管各个服务的运行时环境。

浅谈Mule ESB架构设计_第5张图片

图5 Model

4.2 Service
Service是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。

浅谈Mule ESB架构设计_第6张图片

图6 Service

4.3 Transport
Transport管理消息的接收和发送,数据转换的过程也是在Transport中通过调用Transformer完成的。

浅谈Mule ESB架构设计_第7张图片

图7 Transport

4.3.1 Connector
Connector用于管控特定协议的使用,如HTTP Connector、JMS Connector等。
4.3.2 End-Point
Endpoint用于表示一种协议的特定使用方式,如listening/polling、从中读取、向指定地址写入等,定义了发送和接收消息的通道。Endpoint控制的是底层的实体在Connector中如何被使用。
Endpoint定义于Inbound和Outbound Router中。
4.4 Transformer
Transformer用于转换消息的内容。


图8 Transformer

4.5 Router
Router使用Filter基于消息中的属性信息进行消息的分发。

浅谈Mule ESB架构设计_第8张图片

图9 Router

Router在Service中的位置决定了Router的性质(inbound、outbound和response)和担任的角色(pass-through、aggregator等)。
4.6 Component
Component是Service的核心部件,是Service的业务逻辑的实现。

浅谈Mule ESB架构设计_第9张图片

图10 Component: implicit bridge component

Component可以是Java Class(POJO、Spring Bean)、Web Service、Script等。
Component可定义自己的生命周期:initialise、start、stop、dispose,不过需要实现Mule的LifeCycle接口。Mule 3.0版本开始提供@PostConstruct和@PreDestroy的注解,对应生命周期的initialise和dispose阶段,不需要实现Mule的LifeCycle接口了。
4.7 Flow
Flow是Mule 3.0新引入的,包含一个消息源(Message Source)和多个消息处理器组成的处理器链。

浅谈Mule ESB架构设计_第10张图片

图11 Flow

以上仅为我总结的一些Mule ESB相关知识(其中有些截图取自网上资料),大家还可以通过官网进行深入了解:
官网地址: http://www.mulesoft.com
官方博客:http://blogs.mulesoft.org
社区版下载链接:http://www.mulesoft.org/download-mule-esb-community-edition

你可能感兴趣的:(ESB)