企业服务总线—性能
马永光
2015-05-18
ESES
BB
简介
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
一:ESB性能简介
二:ESB测试用例
三:ESB部署调优
企业服务总线—性能ESESBB
天津联怡科技有限公司
信息交换平台作为信息“高速公路”,承担报文转换、协议适
配、服务路由等重要的工作,它的性能处理能力从整体IT架构
层面将影响到全行的业务处理能力,采用什么样的部署模式、
硬件设备成为下一步选择的关键点。
企业服务总线—性能ESESBB
天津联怡科技有限公司
从硬件方面,如何进行硬件选型以满足预计性能指标,是否
便于部署、管理将是测试过程中需要考虑的重要内容。
因此,测试的目标总结如下:
•通过各种场景测试信息交换平台在不同硬件上的性能表现,为
硬件选型提供依据;
•通过测试,为下一步核心系统调整的方案选择提供数据支持。
•考察硬件方案平台在部署、管理方面的能力。
性能测试过程中的指标:
•系统的执行效率
测试在各种负载压力情况下,获取典型事务的平均交易响应时
间、每秒通过事务数等效率指标。
•资源利用率
在性能测试中,对应用和数据库服务器硬件资源进行监控,以
了解在不同并发用户数下系统平台的硬件资源使用情况。
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
工具名称 说明
第三方测试工具 LoadRunner 压力测试工具
自行开发的测试程
序
Tuxedo模拟Server 模拟核心交易处理
Web Service模 拟
Server
模拟支付系统服务
处理
Tuxedo模拟客户端 使 用 Tuxedo访 问
信息交换平台
测试工具
除使用LoadRunner作为测试工具之外,还需要使用如下自己
开发的测试程序:
企业服务总线—性能ESESBB
天津联怡科技有限公司
一:ESB性能简介
二:ESB测试用例
三:ESB部署调优
企业服务总线—性能ESESBB
天津联怡科技有限公司
系
统
间
交
互
企业服务总线—性能ESESBB
天津联怡科技有限公司
SOAP
WTC
SOCKET
WEBSERVICE
FTP
EMAIL
EJB
T3
HTTP
TCP
UDP
TUXEDO
MQ
JMS
ES
B
常
用
测
试
场
景
企业服务总线—性能ESESBB
天津联怡科技有限公司
标准XML到标准XML,不做报文格式校验
测试出基准值;
请求端Soap协议,服务端WTC协议
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
</SOAP:Body>
</SOAP-
ENV:Envelope>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
ES
B
测
试
场
景
一
企业服务总线—性能ESESBB
天津联怡科技有限公司
标准XML到标准XML,不做报文格式校验
测试标准XML到标准XML,做报文拆组包,做报文格式校验,正
确的上送报文
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
ES
B
测
试
场
景
二
<note>
<to>George</to>
<from>John</from>
<heading>Reminder
</heading>
<body>
Don't forget the meeting!
</body>
</note>
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
转
换
MFL
JAVA CALL
XMLQUERY
企业服务总线—性能ESESBB
天津联怡科技有限公司
交易码 180027
服务码 0500300040
交易名称 根据帐号查找客户信息 服务名称 客户信息查询
原始接口 服务规范
英文名称 中文名称 数据类型 数据长度 英文名称 中文名称 数据类型 数据长度 备注
输入
1 AcctNo 账号、卡号 CHAR 32
AcctNo 账号、卡号 CHAR 32
2 FrntNo 前置机编号 CHAR 8 FrtSerNo 前置机编号 CHAR
8
3 TermSeq 终端流水 CHAR 8 TmnSeqNo 前置流水 CHAR 8
4 TermDate 终端日期 DATE 10 TmnTranDate 前置日期 DATE 10
5 TermTime 终端时间 CHAR 6 TmnTime 终端时间 CHAR 6
6 TranCode 交易代码 CHAR 6
7 Brc 交易机构代码 CHAR 9
8 Teller 交易柜员代码 CHAR 6
9 ChannelId 交易渠道 CHAR 2
10 TranDate 交易日期 DATE 10
11 TranTime 交易时间 CHAR 6
12 TermId 终端号 CHAR 15
13 TermIp 终端IP CHAR 15
输出
1 CustomName 客户名称 CHAR 70 CltName
客户名称 CHAR 60
2 CustomId 客户号 CHAR 21 CltNo
客户号 CHAR 20
3 IdType 证件类型 CHAR 2 CdtlType
证件类型 CHAR 2
4 IdNo 证件号码 CHAR 20 CdtlNo
证件号码 CHAR 18
5 CustomType 客户类别 CHAR 1 CltType
客户类别 CHAR 1
6 Sex 性别 CHAR 1 Sex
性别 CHAR 1
7 TranCode 交易代码 CHAR 6
8 RspCode 响应代码 CHAR 6
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
定
义(
原)
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
定
义(
标)
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
转
换
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
转
换
企业服务总线—性能ESESBB
天津联怡科技有限公司
报
文
字
段
转
换
企业服务总线—性能ESESBB
天津联怡科技有限公司
标准XML到标准XML,做报文拆组包,做校验
测试消费方和请求方都通过WTC协议
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
ES
B
<note>
<to>George</to>
<from>John</from>
<heading>Reminder
</heading>
<body>
Don't forget the meeting!
</body>
</note> 测
试
场
景
三
企业服务总线—性能ESESBB
天津联怡科技有限公司
Wtc(weblogic tuxedo connection)连接是weblogic tuxedo的域
间通信的连接,wtc是调用tuxedo服务的基础。
企业服务总线—性能ESESBB
天津联怡科技有限公司
测试标准XML到标准XML,做报文拆组包,做报文格式校验
消费方和请求方都通过Soap协议
<SOAP-ENV:Envelope
各种属性><!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>提供方返回
</SOAP:Body>
</SOAP-ENV:Envelope>
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope> 测
试
场
景
四
企业服务总线—性能ESESBB
天津联怡科技有限公司
Abstract
SOAP 为在一个松散的、分布的环境中使用XML对等地交换
结构化的和类型化的信息提供了一个简单且轻量级的机制。这是
一个基于XML的协议,同时它由四部分组成: 一个作为描述在消
息中的内容以及如何处理消息的信息框架的信封(envelope),一
组用于表示应用定义的数据类型的编码规则(encoding rules),一
个用于表示远程过程调用和返回的约定以及一个使用底层协议进
行消息交换的绑定(binding)约定。潜在地,SOAP可以与很多其
他的协议绑定使用;不过,在本文档中,只定义了SOAP与
HTTP已经SOAP与HTTP Extension Framework的绑定。
Simple Object Access Protocol
企业服务总线—性能ESESBB
天津联怡科技有限公司
SOAP的这项能力使得它可被很多类型的系统用于从消息系统到
RPC(Remote Procedure Call)的延伸。
SOAP由四部分组成:
SOAP envelop (SOAP信封),它构造定义了一个整体的表示
框架,可用于表示在消息(message)中的是什么,谁应当处理
它,以及这是可选的 还是强制的。
SOAP encoding rules (SOAP编码规则),定义了一个编序机
制用于交换应用程序定义的数据类型的实例。
SOAP RPC representation (SOAP RPC表示),定义了一个
用于表示远端过程调用和响应的约定。
SOAP binding (SOAP绑定) 定义了一个使用底层传输协议来
完成在结点间交换SOAP信封的约定。
企业服务总线—性能ESESBB
测试标准XML到非标准XML,做报文拆组包和格式校验,不
做字段映射
消费方使用Soap协议,服务方使用WTC协议
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope> 测
试
场
景
五
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
测试标准XML到非标准XML,做报文拆组包和格式校验,做
字段映射
消费方使用Soap协议,服务方使用WTC协议
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope> 测
试
场
景
六
天津联怡科技有限公司
企业服务总线—性能ESESBB
6的场景下增加Report—跟踪
消费方使用Soap协议,服务方使用WTC协议
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope> 测
试
场
景
七
天津联怡科技有限公司
REPORT JMS SERVER
FILE
STORE DATABASE MONITOR
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
组合交易测试 一个上送报文中通过信息交换平台分别调用
两个系统的服务,系统中需要添加逻辑判断和路由
消费方使用Soap上送标准报文,通过WTC和SOAP分别调用不
同服务系统的服务,至少包含三个调用,可考虑冲正交易。
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
Combination
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope>
测
试
场
景
八
天津联怡科技有限公司
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
组合交易测试 一个上送报文中通过信息交换平台分别调用
两个系统的服务,系统中需要添加逻辑判断和路由
消费方使用Soap上送标准报文,通过WTC和SOAP分别调用不
同服务系统的服务,至少包含三个调用,可考虑冲正交易。
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
Combination
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope>
测
试
场
景
八
天津联怡科技有限公司
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
企业服务总线—性能ESESBB
交易分发功能测试,一个上送报文到达交换平台,交换平台
同时发送报文到多个系统。
交易处理过程中,需要消息通知,给多个业务系统发送通知报
文。
00000493165017RS0 tp165017
<RspCode>TLS824</><RspMsg>柜
员密码不符
</><FrontCtrlFlag>0</><ChannelId>9
4</><TellerFlag>1</><AuthCode>0</
><TellerName>阿丽亚·乌斯曼
</><TranName>检查柜员密码</>
ES
B
<SOAP-ENV:Envelope
各种属性>
<!--百度百科示例-->
<SOAP:HEADER>
</SOAP:HEADER>
<SOAP:Body>
消费方请求
</SOAP:Body>
</SOAP-ENV:Envelope>
测
试
场
景
九
天津联怡科技有限公司
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
Radio broadcast
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
一:ESB性能简介
二:ESB测试用例
三:ESB部署调优
企业服务总线—性能ESESBB
天津联怡科技有限公司
通过Workmanager进行流量控制
我们假设有转账交易A和查询交易B,我们希望在遇到ESB繁忙的时候A能够得到优
先处理,而当系统不繁忙的时候A和B都能够尽可能的得到处理。
为了能够比较容易的看到效果,我们让A,B交易的处理过程完全相同,这样便于看
到因为请求数量变化所带来的影响。
当没有流量控制时:如果让A,B的初始请求数量完全1:1,可以看到AB交易的处
理能力和响应时间的曲线是基本重叠的,并且随着达到系统处理能力的上限,响应
时间会随并发请求数量的增长而增长。
企业服务总线—性能ESESBB
天津联怡科技有限公司
通过Workmanager进行流量控制
如果这个时候增加低优先的B交易的并发数量,B的TPS会上升,高优先的A会下降,
同时响应时间会增长,这并不符合高优先的控制原则。
企业服务总线—性能ESESBB
天津联怡科技有限公司
Oracle在测试中使用的流量控制机制可以达到如下的效果:
如果只有低优先的业务,系统可以使用全部的资源进行处理,
当出现高优先的业务时,按照比例让位给高优先业务。
企业服务总线—性能ESESBB
天津联怡科技有限公司
如果高低优先的业务同时在ESB上处理,并且并发数量相同,
OSB可以直接控制高优先的处理多,低优先的处理少。
传统厂商的产品中也可以设置处理的优先级,但以消息优先级
居多,通过控制消息的处理频率和密度,间接实现对处理资源
的使用。Oracle除了设置消息的优先级之外,更重要的是可以
调控不同级别的请求在ESB上所占用CPU的时间开销比例,
真正实现了处理资源上的分配和管理。
企业服务总线—性能ESESBB
天津联怡科技有限公司
流量控制实现机制
企业服务总线—性能ESESBB
天津联怡科技有限公司
LocalProxy调用时会使用前面ProxyService的线程模型继续执
行,因此前面ProxyService上的Dispatch Policy会一直作用到
LocalProxy的处理过程之中。
Business Service会使用新的线程去执行,因此如果在Pipeline
中routing到了其他的非LocalProxy,前端的流量控制就到此结
束了。
Business Service如果是JMS等异步的方式,Biz上的流量控制
效果会差一些,因为本身的处理过程太短,消息实际上都被堆
在了队列里。
Oracle的OSB产品在前端接入和后端调用业务系统两个层面提
供流量控制的能力,在配置前端接入的ProxyService和后端业
务系统调用的BusinessService时可以指定相应的
DispatchPolicy实现流量控制。
企业服务总线—性能ESESBB
天津联怡科技有限公司
ProxyService中的流量控制策略
企业服务总线—性能ESESBB
天津联怡科技有限公司
B
usinessS
ervice
中
的
流
量
控
制
策
略
企业服务总线—性能ESESBB
天津联怡科技有限公司
OSB底层通过使用WebLogic中的workmanager为流量控制提
供最大并行执行数量、最大排队等待的请求数量、以及在所有
请求超过系统处理能力的情况下按比例分配OSB的执行资源。
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
基于消息队列的联邦
基于消息队列的联邦,是通过消息队列异步的可靠传输和高吞
吐,实现ESB处理过程与数据传输相分离,以减少处理资源在
长时间传输上的等待。但是因为消息队列所具有的单向传输特
性,因此一个同步调用过程需要有请求和响应的两个队列才能
完成处理,并且需要ESB根据消息中的关键字进行返回结果的
匹配。因此对于双向调用的系统需要建立至少4个消息队列。
使用JMS或MQ建立联邦通道,除了需要在OSB上配置
Business Service和ProxyService之外,还需要单独建立JMS
的消息队列和配置每一组MQ的通讯连接。
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业级范围的服务网络
OSB 1
Domain A
OSB 2
Domain B
OSB 3
Domain C
跨越多个SOA域的复合应用
在多个ESB实例见使用
JMS/SAF和 WS-RM 进行服
务中介和路由跨服务网络,确
保一致的安全、策略和从整个
服务网络重用资产
构建可跨域边界运行的复合应
用,以提供更高价值
企业服务总线—性能ESESBB
天津联怡科技有限公司
JMS/MQ
JMS是OSB产品的内置通讯协议,可用于XML、文本或二进制任意一种格式
报文的传输,使用JMS可以实现异步或同异步匹配的消息传输。在导入MQ
的支持包后,OSB同时也支持基于IBM MQ作为异步传输通道。
队列方式的优势:
可以进行报文的持久化,在OSB服务器宕机后依然可以保证消息可被处理
由服务提供方根据自己的处理能力主动获取消息
可以提供单向无返回的报文传输
队列方式的不足:
为了实现两个联邦节点的双向调用,需要配置2对InQ和OutQ的队列集群。
大规模集群情况下,需要维护和监控大量的队列。
如果在联邦的所有节点之间都允许互相调用,因为不可能为每一对联邦成员
都建立2对InQ和OutQ集群,因此只能让所有的访问端使用共享方式的队列
集群,当出现队列拥堵时将造成应用间的相互影响。
企业服务总线—性能ESESBB
天津联怡科技有限公司
JMS可以很好的支持同异步结构的转换,将前端系统发起的同步
请求转换为总线内部的异步处理,或者将前端的异步请求转换为
总线对后端系统的同步调用。解决前后端系统在调用模式上的差
异。
企业服务总线—性能ESESBB
天津联怡科技有限公司
ESB集群下基于消息队列的总行调用分行的联邦架构:
在服务方ESB实例上建立一个请求队列InQ集群和一个响应队列
OutQ集群,分行ESB上建立一个通用的服务方接收的
ProxyService,该服务会自动邦定本节点上的消息队列实例,监
听并响应消息,自动从消息头中获取CorrelationID或
MessageID(在通道配置中可指定),并将该信息自动填充到响
应的消息头中。客户端的ESB即根据该字段从异步返回的消息中
识别对应的结果。
企业服务总线—性能ESESBB
天津联怡科技有限公司
该通道同时存在另一种配置形式,当服务端希望响应的消息被准
确无误的送达到请求端时,可以将响应队列OutQ配置在调用一方,
通过在服务方配置SAF(store and forward)确保响应的消息一定被
传送到发起端。
企业服务总线—性能ESESBB
天津联怡科技有限公司
联邦的集群化部署简单。只需要在服务调用者一方创建一个对服
务提供者集群的JNDI Provider资源,无论服务提供者上存在多少
物理上的调用通道,都可以通过JNDI Provider获得。同时系统自
动将调用者对后端的通道定义部署到调用者集群中的所有节点,
并自动将服务提供者定义的服务通道发布到服务提供者的集群。
企业服务总线—性能ESESBB
天津联怡科技有限公司
企业服务总线—性能ESESBB
天津联怡科技有限公司
谢谢!