ESB 在实际项目中的应用(WebSphere Message Broker )
提纲:
1、 WebSphere Message Broker Introduction
a) ESB Overview
b) Message Broker Overview
c) Message Broker Performance Report
2、 ESB Project Sharing
内容:
1、 Message Broker是建立在MQ基础之上的。【说明消息中间件对于MB是何等的重要,可靠的传输是前提、是基础。】
2、 Business Integration Reference Architecture
上面是IBM的业务集成参考架构,而下面的图则用IBM的产品充满了整个架构。
3、 ESB所处的位置,作为连接层,组织服务请求方和服务提供方之间的信息
4、 ESB解决连接性问题
a) Decouple interfaces from application.【ESB可以从应用中解耦接口。注意:当前的项目中,总是在对付接口】
b) Enable all applications to communicate with each other regardless of
i. Programming languages
ii. System Platforms
iii. Programming models
iv. Protocols
v. Data formats
可以在以上5层无关性的前提下,应用程序互相通讯。
5、 What is Enterprise Service Bus (ESB)?
c) A flexible connectivity infrastructure for integrating applications and services.【一个柔性联通基础架构,用于集成应用程序和服务。】
d) Used to reduce the number, size, and complexity of interfaces.【用于减少接口的数量、大小、复杂性】
6、 ESB的功能
e) Matches & routes (message between services)【原来应用系统是直连的,相互之间是知道对方存在的,是依赖于接口的】
f) Converts (transport protocols between requestor and service)【协议转换】
g) Transforms (message format between requestor and service)【消息格式转换】
h) Distributes (business events from/to disparate sources)【分发事件】
7、 ESB提供的通讯服务
i) 传输 (包括JMS消息和异步协议)
j) 事件
k) 中转
8、 什么是Brokering ? (注意:数据的格式不一样)
Broker愿意是经纪人的意思,在这里可以理解为代理。
使用Message Broker之后,还可以很方便连接新的应用。
9、 Message Broker 产品家族
IBM划分基础产品和高端产品的方式可以学习。
10、 Message Broker核心概念
l) 消息处理(Message processing)
i. 处理消息中的独立项
ii. 物理和逻辑消息模型
m) 转换和路由(Transformation and Routing)
i. 消息操纵(Message Manipulation)【我理解为各种处理,类似于handle】
ii. 基于内容的路由(Content based routing)
n) 简单的,清晰的编程模式
i. 可视化编程模式:消息流
11、 Message Broker概况
从这个处理流程中,可以看出MB的基本功能:
1) 收到并路由消息
2) 转换消息到另一格式,或者到多个其他格式
3) 给订阅者发布一个消息
4) 访问外部数据库处理增量消息或存储
5) 应答事件和错误
12、 MB的组件――部署时
Broker 有Domain的概念,另外Message sets和Message flow都运行在Broker之内,多个Broker部署在同一个Broker Domain内,在同一个Domain内通过Configuration来进行配置。
13、 MB的组件――运行时
1) Broker(消息代理):是MB的消息处理引擎,它提供MB的所有运行时服务。
2) Configuration Manager(配置管理器):CM是工作台,配置存储库和Broker之间的一个接口,它维护Broker Domain的配置信息,向Broker提供初始化配置信息以及之后的变化信息。配置管理器是MB用于管理那些组成Broker Domain的全部部件和资源的核心运行时部件。
3) Broker Domain(消息代理域):共享相同配置的若干Broker组成一个消息代理域,每个消息代理域由一个唯一的配置管理器来控制,在一个消息代理域中,可以创建、启动一个或多个Broker,和一个可选的User Name Server。
4) Execution Group(执行组):执行组是若干消息流的组合,是消息流运行引擎。每个执行组是一个独立的进程,这样,在同一个执行组中的消息流可以做到在运行时相互独立。在一个执行组内部,消息流在不同的线程池内运行,为了提高性能,我们可以通过设置每个消息流的运行实例的个数来指定每个消息流的线程池的大小。
5) User Name Server(用户名称服务器):任何关键系统的一个重要的组成部分就是通过提供一个有效的安全机制来确保资产安全的能力。用户名称服务器是可选的运行时组件,它提供Publish/Subscribe操作相关的用户和组的安全控制。
6) Message Flow(消息流):在MB中对消息的运算处理、格式转换和路由等功能是通过消息流实现的,每个消息从输入MB到从MB中输出,都将被一个消息流处理,然后发往目的应用系统。消息流由各种消息处理节点(Message Processing Node)组成,消息处理节点可对消息进行各种处理操作,节点与节点相连,便组成了一个消息流。
7) Message Processing Node(消息处理节点):在MB中,对消息的所有计算和处理是通过消息节点实现的,消息节点实际上是被Broker运行环境调用的动态链接库(DLL),通过ESQL语句对消息进行操作,通过对消息节点属性的客户华处理,将使节点能够对流经自己的消息执行特定的功能。
8) ESQL:在MB中,消息流开发使用的使ESQL语言。ESQL是对SQL V3的扩展,除了用于数据库的操作之外,它还可以操作消息数据,包括Generic XML和MRM格式的消息。
14、 Message Flows【简直就是针对消息的工作流】
15、 Message Processing Nodes (6.0在此基础上又有增加)
从我的观点来分析,最重要的节点:
a) MQInput & MQOutput
b) HttpInput 可以做WS服务,HttpRequest可以去访问WS
c) Publication 用于发布
d) ESQL语句节点,可以用于手工写ESQL,属于万能的节点。
e) Mapping,消息到消息和消息到DB的映射
f) Filter, 实现if-else。返回4种状态:failer,true,false,unknow。
g) RouteToLaber配合Label,相当与case语句。
h) TryCatch 和Throw
i) Trace,用于打印调试信息。MB也提供命令行调试方式。
j) Aggregate Request、Reply、Control,聚合
新版本中增加了
a) Timer节点
b) JMS节点
16、 MB Toolkit
17、 ESQL editor
18、 Message Set Development
19、 Mapping editor
20、 Deployment
MB需要打包成bar包,这具有更强的灵活性,更高的性能,当然要稍微麻烦一些。自己开发的产品,打包、部署一定要简单,最好能支持热部署。
21、 mqsideploy 命令行部署工具,较大型的项目,需要做开发环境、测试环境、联调环境、生产环境等。生成脚本可以多次执行。这就是大型软件和一般软件的区别之一。
22、 MB性能报告
4160 个 1KB的包/秒,建议交易用的包在1—2K。
MQ消息持久,是指写文件,保证服务宕机的情况下消息的完整性。而非持久性能更高。
比如:银行ATM最大等待时间60妙,超时后消息本身就没有意义,可以选择非持久。
23、 MQInput/MQOutput消息流的基准值
24、 Parallel Processing Option
MB可以通过多instance或者多执行组来并行,具体哪个效果更好,看具体应用的情况。