qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          性能測試知多少---系統(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)的性能呢

            操作系統(tǒng)

            操作系統(tǒng)是硬件與軟件之間的橋梁,那么一個穩(wěn)定的操作系統(tǒng)是系統(tǒng)堅實的基礎(chǔ)。在個人操作系統(tǒng)領(lǐng)域,windows 無疑是絕對的霸主,但隨著近幾年的發(fā)展,linux/unix以其不俗的性能表現(xiàn),超強的穩(wěn)定性與安全性使其在服務(wù)器領(lǐng)域變成重多企業(yè)的首選。因為系統(tǒng)服務(wù)器由少數(shù)技術(shù)人員使用,他們更看重系統(tǒng)的性能、穩(wěn)定性和安全性等方面的表現(xiàn)

            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)站來說,擁有一套高效,可管理的CMS 是必不可少的,除了門戶和信息發(fā)布類型的網(wǎng)站,對于交互性要求很高的社區(qū)類型網(wǎng)站來說,盡可能的靜態(tài)化也是提高性能的必要手段,將社區(qū)內(nèi)的帖子,文章進行實時的靜態(tài)化,有更新的時候再重新靜態(tài)化也是大量使用的策略,像Mop 的大雜燴就是使用了這樣的策略,網(wǎng)易社區(qū)等也是如此同時,html 靜態(tài)化也是某些緩存策略使用的手段,

            對于系統(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ù)器分離

            對Web 服務(wù)器來說,不管是 ApacheIIS 還是其他容器,圖片是最消耗資源的,于是我們 有必要將圖片與頁面進行分離,這是基本上大型網(wǎng)站都會采用的策略,他們都有獨立的圖片服務(wù)器,甚至很多臺圖片服務(wù)器,這樣的架構(gòu)可以降低提供頁面訪問請求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不 會因為圖片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進行不同的配置優(yōu)化,比如 apache 在配置 ContentType 的時候可以盡量少支持,盡可能少的 LoadModule,保證更高的系統(tǒng)消耗和執(zhí)行效率;

            數(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)方面的緩存,對 Apache 比較熟悉的人都能知道 Apache 提供了自己的緩存模塊,也可以使用外加的 Squid 模塊進行緩存,這兩種方式均可以有效的提高 Apache 的訪問響應(yīng)能力, 網(wǎng)站程序開發(fā)方面的緩存,Linux 上提供的 Memory Cache 是常用的緩存接口,可以在 web 開發(fā)中使用, 比如用 Java 開發(fā)的時候就可以調(diào)用 MemoryCache 對一些數(shù)據(jù)進行緩存和通訊共享, 一些大型社區(qū)使用了 這樣的架構(gòu), 另外, 在使用 web 語言開發(fā)的時候, 各種語言基本都有自己的緩存模塊和方法, PHPPearCache 模塊,Java 就更多了,net 不是很熟悉,相信也肯定有;

            鏡像

            鏡像是大型網(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

            DNS負載均衡技術(shù)是最早的負載均衡解決方案,它是通過DNS服務(wù)中的隨機名字解析來實現(xiàn)的,在DNS服務(wù)器中,可以為多個不同的地址配置同一個名字,而最終查詢這個名字的客戶機將在解析這個名字時得到其中的一個地址。因此,對于同一個名字,不同的客戶機會得到不同的地址,它們也就訪問不同地址上的Web 服務(wù)器,從而達到負載均衡的目的。

            這種技術(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)鏈接:

          性能測試知多少----性能測試分類之我見

          性能測試知多少---并發(fā)用戶

          性能測試知多少---吞吐量

          性能測試知多少---響應(yīng)時間

          性能測試知多少---了解前端性能

          性能測試知多少---性能測試工具原理與架構(gòu)

          性能測試知多少---性能測試流程

          性能測試知多少---性能需求分析

          性能測試知多少---性能測試計劃



          posted on 2012-10-17 09:35 順其自然EVO 閱讀(288) 評論(0)  編輯  收藏 所屬分類: 性能測試

          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 霍州市| 娄底市| 大关县| 丹东市| 太仆寺旗| 城市| 英山县| 彭阳县| 萝北县| 远安县| 雷山县| 泽普县| 屯留县| 兴城市| 兰考县| 确山县| 禹州市| 洪泽县| 岢岚县| 西宁市| 上蔡县| 长治县| 新源县| 宜君县| 衡南县| 濮阳县| 永年县| 久治县| 巴东县| 广宗县| 河池市| 抚松县| 新龙县| 迁安市| 望奎县| 桑植县| 冕宁县| 潼关县| 八宿县| 陕西省| 锦屏县|