天天看點

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毫秒。這顯然是不能容忍和應該避免的。

繼續閱讀