两大卖点:资源级事务、可靠消息队列;
优点:
1. 系统采用C/C++开发,执行效率高于JAVA,适合于OLTP系统;
2. Tuxedo以API方式屏蔽系统细节,简化编程,以较少的API函数调用即可开发一个应用;
3. 可以多个Server并行处理,提高处理能力,扩充性非常好,可以根据当前负载动态启动停止多个Server;
4. 资源级(Queue,Oracle,Informix...)的全局事务保证交易的完整性;
5. 可靠消息队列(Queue)实现数据的可靠传输,而且可以纳入Tuxedo事务中,可以和数据库操作同时提交或者回退,保证系统级事务的一致性;
6. 数据依赖路由,事先确定数据的流向,人工调整系统的负载;
7. 支持分布式系统, Tuxedo/Domain结构中各个域相互独立,通过信任关系调用对方的Service,可以方便复杂系统的划分,支持跨域事务.
8. 提供易于管理的工具,方便地管理整个应用.
缺点:
1. 速度问题: 作为一个适用于OLTP系统的交易中间件,若不采用XA方式,需要用户自己控制事务;若采用XA方式,由于要记录全局事务日志(TLOG),处理非常慢, 尤其是处理实时任务时,Server是被动的,发起者调用Server,如果结果要记录到数据库,执行的方式为单条提交,速度更是无法忍受 (<100条记录/秒).如果没有数据库,或者文件操作,速度非常快.但是一般情况下结果都是要入库的.
作为Tuxedo一大卖点的可靠队列(Queue)速度更是无法忍受, <50条/秒
BEA建议在实时处理中打包(几十条)处理,速度确实提高很多,但失去了实时的意义,而且要控制打包和拆包,按记录字段路由等Tuxedo优势都丧失了。
2. 增加了开发、调试、测试的复杂度: 开发Server使用C语言(访问数据库嵌入SQL,如
ro*C),实现业务逻辑;前台使用可视化开发环境,用来��入数据和显示数据. 开发任务比两层结构多了很多,如果再使用存储过程,调试需要前台界面、后台Server、存储过程协调进行,大大增加了调试的复杂度,而且一般的开发队伍中都是做前台界面的专门做界面,开发后台的专门做后台,这样组装调试就更加困难了。
3. 事倍功半的查询处理: 交易处理开发复杂还划算,因为毕竟Tuxedo带给了我们并行、可靠、全局事务等好处,但是使用三层结构做查询处理就太亏了,本来就是简单的给一个条件查出结果显示就OK了,现在要前台输入查询条件,传送给Tuxedo Server,Tuxedo Server根据输入的条件查询数据库,再把数据传送给前台。在Tuxedo中一般使用FML传送数据,若结果有很多,还要控制翻页等功能,复杂得一塌糊涂。若使用两层结构(如PB/VB+Oracle),举手之劳!
4. 其它问题:
a. 域Server(GWADM)经常DOWN,不报任何错误,BEA正在解决;
b. 多机的跨域事务经常无法提交,不报任何错误;
c. QUE在网络不是特别好的情况下,居然会不先进先出(设置了FIFO).
其它小的问题多多....
在开发人员眼里,任何工具总是好多缺点,但是Tuxedo毕竟是中间件业界的老大, 它提供给了我们许多优越的特性. 其它中间件问题比Tuxedo还要多.
而且BEA在中间件和应用服务器行业绝对是老大哥, “世界1000强”企业排名中的全部24家电信公司, 世界最大的前40家电信公司中的38家都是BEA的客户
Tuxedo作为TPC-C测试的首选中间件平台(80%以上), IBM,HP都有自己的中间件,但是测试无一例外都选择了Tuxedo. 足以见得TUXEDO的实力.