Mule技术架构

一.需求

  • 简化不同数据源之间的数据交互
  • 简化不同应用之间的服务交互
  • 可扩展、轻量级、可嵌入、可定制、简单易用

二.架构风格选择

Mule使用的是基于消息的架构风格(如上图所示),消息具有程序语言无关系、组件无关性、数据格式灵活性、消息无状态等特征,基于消息的服务也同样具有无状态的特征,此外,消息风格有非常成熟的应用模式,能够满足当前遇到的大部分数据应用需求以及SOA的需要。因而能够很好的满足需求中的前2个和第三个的可扩展、可定制的需求。

  • Application:可以是程序段、外部系统。
  • Channel:连接任何2个应用点(计算点),通过消息进行沟通,可参考《EIP - Message Channel (60)
  • Message Receiver:用来从应用节点中读取、写入消息。
  • Inbound Router:进入计算组件(component)之前的控制和处理,例如:过滤、聚合、排序等。
  • Connector:在Channel上建立链路层,Message Receiver绑定在connector上监听数据、派发数据。
  • Transformers:转换消息格式。
  • Endpoint:把channel抽象为服务的一种配置组件,这些被配置的元素有connector, endpoint URI, transformers, filters and transactional。
  • Outbound Router:消息从计算组件(component)流出后的控制和处理,例如:过滤、Pub/Sub、拆分、路由等。

三. 技术框架和领域对象介绍

  1. The Model:提供框架的运行时环境,管理配置、组件实例,提供运行模式;用户甚至可以定制自己的运行模式(很强大)。Model模型包含如下内容 Descriptors、UMO components、 An endpoint resolver、A lifecycle-adapter factory、A component resolver、A pool factory、An exception strategy。
  2. Entry Point Resolver:与应用组件(POJO等)的交互。
  3. Lifecycle Adapter:将MULE实例的生命周期映射到应用组件,间接接管应用组件。
  4. Component Pool Factory:应用组件管理,提供pool能力。
  5. Transport Providers:使Mule组件发送和接收消息的部件。
  6. Connectors:对Connector的实现。
  7. Endpoints Address:资源标识的一种方法。例如,pop3://user:password@mail.mycompany.com ,file:///tmp/data/in,vm://MyUMO,axis:http://mycompany.com/mule/services/MyUMO等
  8. Endpoint Resolution:对附加在Endpoint的配置进行解析,例如,jms://topic:myTopic?durable=true。
  9. Message Receivers:消息接收者或监听者,不同类型的协议实现方式不同。例如TCP协议,只需要监听端口即可,File协议,需要定制一个线程去扫描文件系统,VM协议,可以不做任何事。
  10. Message Adapters:负责消息的转换。
  11. Transactions:提供事务支持。(没敢用,实际中,都是通过其它方式实现事务)
  12. Container Contexts:嵌入式的时候使用,能够把Mule容器和外部容器打通。与Spring整合的已经非常完美。
  13. UMO Components:mule的核心抽象之一,主要用来包装应用组件(POJO等)。
  14. Component Lifecycle:组件的生命周期。
  15. Events:Mule框架采用事件(SEDA,强烈推荐阅读Using SEDA to Ensure Service Availability )架构来实现。
  16. Inbound Routers、Outbound Routers:对应于消息架构中的2个部件。
  17. Event Processing:Mule提供三种事件处理方式,(1)Asynchronously,(2)Synchronously ,(3)Request-Response相当于用异步实现的同步。 (具体使用模式,请参考原文
  18. Interceptors:Mule框架提供拦截器模式,以方便用户扩展组件整体行为。
  19. Exception Management:提供异常管理的机制,默认的异常粗略很糟糕,最好自己定制。
  20. Agents:为运维人员提供的管理接口。
  21. Thread Pool:线程池管理,Mule的线程池和池策略需要仔细配置,否则很容易出现错误。Mule提供共用线程池和独立线程池模式,建议使用共用线程池模式。
posted @ 2011-03-23 22:54  六不朽  阅读(4223)  评论(0编辑  收藏  举报