Tuxedo应用设计的经验(1)

Tuxedo为用户开发应用程序提供了一个高性能、高稳定性的框架。用户可以在这个框架内做任意想做的工作。但是为了提高整个系统的性能和稳定性,也需要遵循一些基本原则。在本章中,我们把在帮助客户构建系统时积累的经验进行总结,系统整理出来,供客户设计应用系统时候参考。

负载均衡

包括负载均衡的概念,如何设置负载均衡,LOAD/NETLOAD,队列的优先级,MSSQ的使用,SPINCOUNT, CMPLIMT,负载均衡的例子

如何划分Tuxedo的Server和Service?

在Tuxedo中,Server可以理解成为Unix的一个进程,Service可以理解成为应用进程Server中的一个函数。在Tuxedo 7.1以后版本中增加了对线程的支持,Server可以理解成为线程,但是这无关大局,我们依然用上面的理解来讨论下面的问题。

用户可以任意划分Server和Service:既可以把所有的Service放在一个单一的Server中,也可以采用“一个Service一个Server”的方式。Tuxedo对此没有任何限制。如果一个Service可以理解成独立的工作单元,每个Service负责一个独立、完整的商业业务流程,那么我们可以讨论一下关于如何划分Server和Service来提高整个系统的性能和可管理性。

一个最基本的原则就是尽量将“类似的Service”捆绑在一个Server之内。所谓“类似的Service”是指这些函数有相似的大小、执行时间、复杂度或者功能(例如:都是查询数据库或者都是进行计算)。为什么要这样呢,我们来考虑一个极端的例子:假设一个Service A是完成非常简单工作的,它的平均执行时间是100毫秒。另一个Service B进行数据库的查询,它的执行时间可能长达20秒。如果将这两个Service捆绑在一起,会出现什么现象呢?大家知道,操作系统的基本调度单位是进程(或者线程)。在一个进程中的Service执行是串行的。Tuxedo把发往同一个Server的请求交易包放在同一个消息队列中。当Service B在执行的时候,Service A的请求包必须在队列里面等待20秒以上才可能被执行,虽然它的执行时间仅仅100毫秒。这显然是不能容忍和应该避免的。


原载于:联动北方

全文:http://bbs.landingbj.com/t-0-248696-1.html


你可能感兴趣的:(开发,应用程序,优先级,基本原则,稳定性)