性能測試知多少---系統(tǒng)架構(gòu)分析
之前有對性能需求進行過分析,那篇主要從項目業(yè)務(wù)、背景等角度如何抽絲剝繭的將項目的需求抽離出來。在我們進行需求的時候也需要對被測項目的架構(gòu)有一定的認識,如果不了解被測系統(tǒng)的架構(gòu),那么在后期的性能分析與調(diào)優(yōu)階段將無從下手。
簡單系統(tǒng)架構(gòu)介紹
因為每個公司的業(yè)務(wù)不同,采用的技術(shù),架構(gòu)也都有很大不同。但不管怎么變動,但基本都在三層架構(gòu)的基礎(chǔ)上擴展與改進。
下面看一個基本的系統(tǒng)架構(gòu):
表示層:
表示層運行在客戶終端上,運行java applet 程序,提供協(xié)議控制和用戶界面,與系統(tǒng)用戶實現(xiàn)直接交互,通過TCP/HTTP協(xié)議與業(yè)務(wù)層系統(tǒng)通信,向應(yīng)用層系統(tǒng)發(fā)送請求報文,并接收應(yīng)用層系統(tǒng)返回的回應(yīng)報文。
業(yè)務(wù)邏輯層:
業(yè)務(wù)邏輯層作為中間層實現(xiàn)核心業(yè)務(wù)邏輯服務(wù)。
應(yīng)用服務(wù)器主要運行中間件系統(tǒng),中間件系統(tǒng)系統(tǒng)作為一個容器來運行各種應(yīng)用軟件系統(tǒng)。前臺發(fā)來的請求報文通過中間件傳遞給應(yīng)用程序,應(yīng)用程序在處理的過程中調(diào)用數(shù)據(jù)層的數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器將查詢的數(shù)據(jù)返回給應(yīng)用程序,應(yīng)用軟件處理完成后通過中間件系統(tǒng)返回給客戶端。
在大型的系統(tǒng)中,可以對應(yīng)用系統(tǒng)進行拆分,比如拆分成交易服務(wù),查詢服務(wù);或者通過負載均衡技術(shù),來分散客戶端發(fā)來的請求,使其能承受更大的用戶訪問量。
數(shù)據(jù)層:
數(shù)據(jù)層運行在數(shù)據(jù)庫主機上,負責整個系統(tǒng)中數(shù)據(jù)信息的存儲。運行數(shù)據(jù)庫服務(wù)程序,查詢通過JDBC與應(yīng)用程序進行通信,主要用于存儲數(shù)據(jù)與提供數(shù)據(jù)查詢等服務(wù)。
數(shù)據(jù)庫集群技術(shù)就是對大型系統(tǒng)應(yīng)用非常廣泛的一種解決方案。
大型系統(tǒng)架構(gòu)介紹
前面介紹了一般系統(tǒng)的架構(gòu),那么一個大型的系統(tǒng)在設(shè)計中使用了哪些手段或技術(shù)來提高系統(tǒng)的性能呢
Web服務(wù)器
Web服務(wù)器即中間件服務(wù)器,是應(yīng)用程序的載體(容器),應(yīng)用程序只有在中間件服務(wù)器上才能正常的運行被外界所訪問使用。對于window系統(tǒng)來說,IIS是微軟配套的web服務(wù)器,他們的搭配應(yīng)該是夫妻是之間的默契;apache 作為開源力量代表,不管在windows還是linux下面都非常得寵。因為linux與apache 都為開源產(chǎn)品且性能優(yōu)異,應(yīng)用非常廣泛。
· 淘寶網(wǎng)(阿里巴巴): Linux操作系統(tǒng) + Web 服務(wù)器: Apache
· 新浪:FreeBSD + Web 服務(wù)器:Apache
· Yahoo:FreeBSD + Web 服務(wù)器:自己的
· Google: 部分Linux + Web 服務(wù)器:自己的
· 百度:Linux + Web 服務(wù)器: Apache
· 網(wǎng)易:Linux + Web 服務(wù)器: Apache
· eBay: Windows Server 2003/8 (大量) + Web 服務(wù)器:Microsoft IIS
· MySpace: Windows Server 2003/8 + Web 服務(wù)器:Microsoft IIS
常用的系統(tǒng)架構(gòu)是:
· Linux + Apache + PHP + MySQL
· Linux + Apache + Java (WebSphere) + Oracle
· Windows Server 2003/2008 + IIS + C#/ASP.NET + 數(shù)據(jù)庫
· Window Server 2003/2008 + tomcat + MySql
提高系統(tǒng)性能的相關(guān)技術(shù)
網(wǎng)頁HTML 靜態(tài)化
其實大家都知道網(wǎng)頁靜態(tài)化,效率最高,消耗最小的就是純靜態(tài)化的 html 頁面,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。
但是對于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動去挨個實現(xiàn),于是出現(xiàn)了我們常見的信息發(fā)布系統(tǒng) CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發(fā)布系統(tǒng)來管理和實現(xiàn)的,信息發(fā)布系統(tǒng)可以實現(xiàn)最簡單的信息錄入自動生成靜態(tài)頁面,還能具備頻道管理,權(quán)限管理,自動抓取等功能,
對于一個大型網(wǎng)站來說,擁有一套高效,可管理的
對于系統(tǒng)中頻繁使用數(shù)據(jù)庫查詢但是內(nèi)容更新很小的應(yīng)用,可以考慮使用 html 靜態(tài)化來實現(xiàn),比如論壇中論壇的公用設(shè)置信息,這些信息目前的主流論壇都 可以進行后臺管理并且存儲再數(shù)據(jù)庫中,這些信息其實大量被前臺程序調(diào)用,但是更新頻率很小,可以 考慮將這部分內(nèi)容進行后臺更新的時候進行靜態(tài)化,這樣避免了大量的數(shù)據(jù)庫訪問請求;
圖片服務(wù)器分離
對
數(shù)據(jù)庫集群和庫表散列
大型網(wǎng)站都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫,那么在面對大量訪問的時候,數(shù)據(jù)庫的瓶頸很快就能顯現(xiàn)出來,這時一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫集群或者庫表散列。
在數(shù)據(jù)庫集群方面, 很多數(shù)據(jù)庫都有自己的解決方案, Oracle, Sybase 等都有很好的方案,常用的 MySQL 提供的 Master/Slave 也是類似的方案,您使用了什么樣的 DB,就參考相應(yīng)的解決方案來實施即可。
上面提到的數(shù)據(jù)庫集群由于在架構(gòu),成本,擴張性方面都會受到所采用 DB 類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),庫表散列是常用并且最有效的解決方案,我們在應(yīng)用程序中安裝 業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫進行分離,不同的模塊對應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的策略 對某個頁面或者功能進行更小的數(shù)據(jù)庫散列,比如用戶表,按照用戶 ID 進行表散列,這樣就能夠低成本 的提升系統(tǒng)的性能并且有很好的擴展性,sohu 的論壇就是采用了這樣的架構(gòu),將論壇的用戶,設(shè)置,帖 子等信息進行數(shù)據(jù)庫分離,然后對帖子,用戶按照板塊和 ID 進行散列數(shù)據(jù)庫和表,最終可以在配置文件 中進行簡單的配置便能讓系統(tǒng)隨時增加一臺低成本的數(shù)據(jù)庫進來補充系統(tǒng)性能;
緩存
緩存一詞搞技術(shù)的都接觸過,很多地方用到緩存,網(wǎng)站架構(gòu)和網(wǎng)站開發(fā)中的緩存也是非常重要,這里先 講述最基本的兩種緩存,高級和分布式的緩存在后面講述, 架構(gòu)方面的緩存,對
鏡像
鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò)接入商和地域帶來的用戶訪問速度差異, 比如 ChinaNet 和 EduNet 之間的差異就促使了很多網(wǎng)站在教育網(wǎng)內(nèi)搭建鏡像站點,數(shù)據(jù)進行定時更新或者實時更新,在鏡像的細節(jié)技術(shù)方面,這里不闡述太深,有很多專業(yè)的現(xiàn)成的解決 架構(gòu)和產(chǎn)品可選,也有廉價的通過軟件實現(xiàn)的思路,比如 Linux 上的 rsync 等工具;
負載均衡
負載均衡將是大型網(wǎng)站解決高負荷訪問和大量并發(fā)請求采用的終極解決辦法,負載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,下面介紹幾種常見的負載均衡。
1、基于DNS的負載均衡--一個域名綁定多個IP
這種技術(shù)的優(yōu)點是,實現(xiàn)簡單、實施容易、成本低、適用于大多數(shù)TCP/IP應(yīng)用;但是,其缺點也非常明顯,首先這種方案不是真正意義上的負載均衡,DNS 服務(wù)器將Http請求平均地分配到后臺的Web服務(wù)器上,而不考慮每個Web服務(wù)器當前的負載情況;如果后臺的Web服務(wù)器的配置和處理能力不同,最慢的 Web服務(wù)器將成為系統(tǒng)的瓶頸,處理能力強的服務(wù)器不能充分發(fā)揮作用;其次未考慮容錯,如果后臺的某臺Web服務(wù)器出現(xiàn)故障,DNS服務(wù)器仍然會把DNS 請求分配到這臺故障服務(wù)器上,導(dǎo)致不能響應(yīng)客戶端。最后一點是致命的,有可能造成相當一部分客戶不能享受Web服務(wù),并且由于DNS緩存的原因,所造成的后果要持續(xù)相當長一段時間(一般DNS的刷新周期約為24小時)。所以在國外最新的建設(shè)中心Web站點方案中,已經(jīng)很少采用這種方案了。
2、通過硬件四層交換實現(xiàn)負載均衡
在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國當初接近2000臺服務(wù)器使用了三四臺Alteon就搞定了
3、通過軟件四層交換實現(xiàn)負載均衡
軟件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實時災(zāi)難應(yīng)對解決方案,提高系統(tǒng)的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應(yīng)用需求,這對于分布式的系統(tǒng)來說必不可少。
一個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構(gòu)低成本、高性能還有很強的擴張性。
4、通過反向代理服務(wù)器實現(xiàn)負載均衡
反向代理服務(wù)器又稱為 WEB 加速服務(wù)器,它位于 WEB 服務(wù)器的前端,充當WEB服務(wù)器的內(nèi)容緩存器,反向代理服務(wù)器是針對 WEB 服務(wù)器設(shè)置的,后臺 WEB 服務(wù)器對互聯(lián)網(wǎng)用戶是透明的,用戶只能看到反向代理服務(wù)器的地址,不清楚后臺 WEB 服務(wù)器是如何組織架構(gòu)的。當互聯(lián)網(wǎng)用戶請求 WEB 服務(wù)時,DNS 將請求的域名解析為反向代理服務(wù)器的 IP 地址,這樣 URL 請求將被發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器負責處理用戶的請求與應(yīng)答、與后臺 WEB 服務(wù)器交互。利用反向代理服務(wù)器減輕了后臺 WEB 服務(wù)器的負載,提高了訪問速度,同時避免了因用戶直接與 WEB 服務(wù)器通信帶來的安全隱患。
-------------------------------------
這篇文章非常糾結(jié),以目前技術(shù)水平來講這塊的東西實屬班門弄斧。部分內(nèi)容從互聯(lián)網(wǎng)搜集。
相關(guān)鏈接:
posted on 2012-10-17 09:35 順其自然EVO 閱讀(288) 評論(0) 編輯 收藏 所屬分類: 性能測試