小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

性能與可伸縮性的概念及關(guān)鍵影響因素...

 飄飄 2007-08-07

性能與可伸縮性的概念及關(guān)鍵影響因素


時間: 2006-03-27 12:53   類別: 學(xué)習(xí)筆記    前一篇 | 后一篇    作者 qhyou | 1 最新回復(fù) | Trackback (29) | Permalink

性能與可伸縮性常常決定企業(yè)應(yīng)用的成敗,尤其在電信、金融、政府三大行業(yè)里,性能成了客戶選擇中間件平臺的決定性因素。遇到性能問題的應(yīng)用比比皆是,然而往往是等發(fā)現(xiàn)性能問題的時候,已經(jīng)太遲。一個知名的電信合作伙伴的開發(fā)人員告訴我:“我們在性能方面,曾經(jīng)有過血的代價。。。。”。
有人說,性能問題是永恒的,看來一點也不夸張。作為中間件平臺的提供商,尤其需要對性能有更深刻的理解與認識。那么性能的概念是什么?性能需求需要從哪些方面來描述?影響性能的關(guān)鍵因素又有哪些呢?

一、 對性能的誤區(qū)
凡是做企業(yè)級應(yīng)用開發(fā)的人,很少沒有遇到過性能問題的。而很多J2EE應(yīng)用又都是在系統(tǒng)出了性能問題以后,才沒日沒夜的絞盡腦汁,從盤根錯節(jié)的代碼或者日志中查找原因。開發(fā)人員對性能問題存在以下誤區(qū):


1、 性能問題可以通過代碼優(yōu)化來解決
代碼優(yōu)化可以解決局部性能問題,而不能解決整個應(yīng)用的性能問題。治標而不能治本。
2、 性能問題可以通過增加硬件或者用更快的硬件來解決

二、 性能和可伸縮性的概念


需要區(qū)分三個概念:性能(Performance)、吞吐量(Throughout )、可伸縮性(Scalability)
1、 性能與響應(yīng)時間
性能是指執(zhí)行典型操作所花的時間。性能一般用“響應(yīng)時間”來衡量,比如“用戶成功登錄的時間不能超過6秒”。尤其是對于Web應(yīng)用,如果一些常用的操作很慢,用戶就會有可能放棄使用你的應(yīng)用。
響應(yīng)時間是指處理一個請求所花的時間(如一個Http Request)。通常,“平均響應(yīng)時間”更加重要。


2、 吞吐量
“吞吐量”指系統(tǒng)或組件在指定的時間內(nèi),所能執(zhí)行的工作數(shù)。
每秒點擊數(shù):對于Web應(yīng)用,一般用“每秒點擊數(shù)”來衡量吞吐量。
每秒交易數(shù):對于交易型應(yīng)用,一般“每秒交易數(shù)”來衡量吞吐量。


3、 可伸縮性
“可伸縮性”是指隨著并發(fā)用戶數(shù)的增加,系統(tǒng)的處理能力。伸縮性包括“水平伸縮”和“垂直伸縮”。水平伸縮指通過增加服務(wù)器的數(shù)量(如集群)來提高吞吐量,垂直伸縮指在同一個服務(wù)器中運行多個Server。

性能和可伸縮性往往是互相對立的。比如一個應(yīng)用在單服務(wù)器中是高性能的,但是如果在集群部署的模式下,由于要維護大量的Session復(fù)制,有可能導(dǎo)致性能不好。但是在單個服務(wù)器中性能都不好的應(yīng)用,在集群部署下性能也不會好。

三、 性能和可伸縮性的需求


在需求中設(shè)置清晰的性能目標,而不是簡單的說“系統(tǒng)需要高性能和高可伸縮性”:
1、 吞吐量和響應(yīng)時間的指標

2、 哪些操作必須很快,哪些操作是可以慢一點的
不是所有用例都要求高性能的,因此需要區(qū)分不同用例的性能優(yōu)先級
3、 并發(fā)用戶數(shù)或事務(wù)數(shù)

4、 軟件和硬件配置條件
如在什么數(shù)據(jù)庫、應(yīng)用服務(wù)器,以及相應(yīng)的硬件CPU、內(nèi)存等配置。否則就無法驗證這些目標是否達到要求。
5、 是否需要集群運行,如果現(xiàn)在不需要,將來是否需要


四、 影響性能的因素——體系結(jié)構(gòu)是關(guān)鍵


影響性能的關(guān)鍵因素在于體系結(jié)構(gòu)。優(yōu)化單個方法的實現(xiàn)對性能提升起不了太大的作用。如果整個架構(gòu)中充斥著不必要的數(shù)據(jù)訪問,大量的Java對象與XML文檔之間的轉(zhuǎn)換,或者執(zhí)行大量的遠程調(diào)用操作,代碼級的優(yōu)化于事無補。
對于性能和可伸縮性,最重要的架構(gòu)選擇包括三個方面:一是應(yīng)用是否是分布式的,二是如果需要集群那么該如何集群,三是持久數(shù)據(jù)的訪問方法。另外還有表現(xiàn)層也會對性能造成一定的影響。

1、 對象分布、集群與農(nóng)場


企業(yè)級應(yīng)用一般都不可能只在一臺服務(wù)器中運行的,這就涉及到分布式的問題。對于水平伸縮,一般有對象分布、集群兩種選擇。
對象分布
對象分布是指將業(yè)務(wù)邏輯部署在遠程服務(wù)器(如EJB或CORBA),而客戶端則通過遠程調(diào)用(如EJB或CORBA接口)的方式來處理系統(tǒng)的業(yè)務(wù)邏輯。這種方式一般是通過RMI/IIOP 、XML或者WebService調(diào)用。
集群

集群則是指在每個節(jié)點中都部署相同的系統(tǒng)或組件(包括從Web層到數(shù)據(jù)訪問層)。集群模式下,路由分發(fā)往往在請求到達每個節(jié)點之前就已經(jīng)處理好了,而不會在每個組件之間進行路由選擇。
農(nóng)場
在集群模式下,一般都需要對每個用戶的Session進行復(fù)制,以保持服務(wù)器之間完全對等。農(nóng)場是一種特殊的集群模式,那就是每個節(jié)點之間是完全獨立的,不需要進行Session以及緩存的復(fù)制。


a) 對象分布存在的問題
對象分布對性能有著極大的影響。由于遠程調(diào)用需要進行對象的序列化和反序列化操作,加上網(wǎng)絡(luò)傳輸?shù)拈_銷,因此遠程調(diào)用是非常慢的。


b) 集群對性能的影響
集群的最大困難在于復(fù)制(如Session和Data Cache復(fù)制),也是集群技術(shù)中最大的挑戰(zhàn)與限制。而且,非農(nóng)場模式的集群(水平伸縮)往往不會帶來系統(tǒng)吞吐量的線性增長,如我們往往無法保證3臺服務(wù)器集群情況下的吞吐量是單臺服務(wù)器的3倍。另一方面,在集群中服務(wù)器本身的數(shù)量有時也是有限的。

2、 數(shù)據(jù)訪問


系統(tǒng)訪問持久化數(shù)據(jù)的方式也會對性能產(chǎn)生重要影響。比如:
a) 數(shù)據(jù)庫結(jié)構(gòu)的優(yōu)化
b) 減少不必要的數(shù)據(jù)訪問:頻繁的數(shù)據(jù)庫訪問會導(dǎo)致性能大幅降低
c) 最少的數(shù)據(jù)更新次數(shù):減少更新數(shù)據(jù)庫的次數(shù)
d) 高效的數(shù)據(jù)更新:每次都只更新改動過得數(shù)據(jù)
e) 緩存的使用:使用高效的數(shù)據(jù)緩存


3、 表現(xiàn)層


表現(xiàn)層的技術(shù)使用不當(dāng)也會導(dǎo)致系統(tǒng)性能低下,比如:
a) 過渡使用自定義Tag
b) 渲染JSP頁面比直接訪問數(shù)據(jù)庫檢索數(shù)據(jù)更耗時

由于展現(xiàn)層很易影響性能,因此單獨對展現(xiàn)層進行性能測試是非常重要的。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多