<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            運行效率高穩定性好的大型網(wǎng)站系統架構分析

            發(fā)布: 2009-4-22 09:38 | 作者: 不詳 | 來(lái)源: 測試時(shí)代采編 | 查看: 326次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng) 隨著(zhù)中國大型IT企業(yè)信息化速度的加快,大部分應用的數據量和訪(fǎng)問(wèn)量都急劇增加,大型企業(yè)網(wǎng)站正面臨性能和高數據訪(fǎng)問(wèn)量的壓力,而且對存儲、安全以及信息檢索等等方面都提出了更高的要求。

              千萬(wàn)人同時(shí)訪(fǎng)問(wèn)的網(wǎng)站,一般是有很多個(gè)數據庫同時(shí)工作,說(shuō)明白一點(diǎn)就是數據庫集群和并發(fā)控制,這樣的網(wǎng)站實(shí)時(shí)性也是相對的。這些網(wǎng)站都有一些共同的特點(diǎn):數據量大,在線(xiàn)人數多,并發(fā)請求多,pageview高,響應速度快?偨Y了一下各個(gè)大網(wǎng)站的架構,主要提高效率及穩定性的幾個(gè)地方包括:

              1、程序

              程序開(kāi)發(fā)是一方面,系統架構設計(硬件+網(wǎng)絡(luò )+軟件)是另一方面。

              軟件架構方面,做網(wǎng)站首先需要很多web服務(wù)器存儲靜態(tài)資源,比如圖片、視頻、靜態(tài)頁(yè)等,千萬(wàn)不要把靜態(tài)資源和應用服務(wù)器放在一起。

              一個(gè)好的程序員寫(xiě)出來(lái)的程序會(huì )非常簡(jiǎn)潔、性能很好,一個(gè)初級程序員可能會(huì )犯很多低級錯誤,這也是影響網(wǎng)站性能的原因之一。

              網(wǎng)站要做到效率高,不光是程序員的事情,數據庫優(yōu)化、程序優(yōu)化這是必須的,在性能優(yōu)化上要數據庫和程序齊頭并進(jìn)!緩存也是兩方面同時(shí)入手。第一,數據庫緩存和數據庫優(yōu)化,這個(gè)由dba完成(而且這個(gè)有非常大的潛力可挖,只是由于我們都是程序員而忽略了他而已)。第二,程序上的優(yōu)化,這個(gè)非常的有講究,比如說(shuō)重要一點(diǎn)就是要規范SQL語(yǔ)句,少用in 多用or,多用preparestatement,另外避免程序冗余如查找數據少用雙重循環(huán)等。另外選用優(yōu)秀的開(kāi)源框架加以支持,我個(gè)人認為中后臺的支持是最最重要的,可以選取spring+ibatis。因為ibatis直接操作SQL并有緩存機制。spring的好處就不用我多說(shuō)了,IOC的機制可以避免new對象,這樣也節省開(kāi)銷(xiāo)。據我分析,絕大部分的開(kāi)銷(xiāo)就是在NEW的時(shí)候和連接數據庫時(shí)候產(chǎn)生的,請盡量避免。另外可以用一些內存測試工具來(lái)做一個(gè)demo說(shuō)明hibernate和ibatis誰(shuí)更快!前臺你想用什么就用什么,struts,webwork都成,如果覺(jué)得自己挺牛X可以試試tapestry。

              用數據庫也未必不能解決訪(fǎng)問(wèn)量巨大所帶來(lái)的問(wèn)題,作成靜態(tài)文件硬盤(pán)的尋址時(shí)間也未必少于數據庫的搜索時(shí)間,當然對資料的索引要下一翻工夫。我自己覺(jué)得門(mén)戶(hù)往往也就是當天、熱門(mén)的資料點(diǎn)擊率較高,將其做緩存最多也不過(guò)1~2G的數據量吧,舉個(gè)例子:

            拿網(wǎng)易新聞來(lái)說(shuō)http://news.163.com/07/0606/09/3GA0D10N00011229.html

              格式化一下,方便理解:http://域名/年/月日/新聞所屬分類(lèi)/新聞ID.html

              可以把當天發(fā)布的、熱門(mén)的、流攬量大的作個(gè)緩寸,用hashtable(key:年-月-日-分類(lèi)-ID,value:新聞對象),靜態(tài)將其放到內存(速度絕對快過(guò)硬盤(pán)尋址靜態(tài)頁(yè)面)。

            通常是采用oracle存儲過(guò)程+2個(gè)weblogic,更新機制也幾乎一樣每簽發(fā)一條新聞,就會(huì )生成靜態(tài)頁(yè)面,然后發(fā)往前端的web服務(wù)器,前端的web都是做負載均衡的。另外還有定時(shí)的程序,每5-15分鐘自動(dòng)生成一次。在發(fā)布新聞的同時(shí)將數據緩存。當然緩存也不會(huì )越來(lái)越大,在個(gè)特定的時(shí)間段(如凌晨)剔除過(guò)期的數據。做一個(gè)大的網(wǎng)站遠沒(méi)有想象中那么簡(jiǎn)單,服務(wù)器基本就要百十個(gè)的。

              這樣可以大大增加一臺計算機的處理速度,如果一臺機器處理不了,可以用httpserver集群來(lái)解決問(wèn)題了。

              2、網(wǎng)絡(luò )

              中國的網(wǎng)絡(luò )分南北電信和網(wǎng)通,訪(fǎng)問(wèn)的ip就要區分南北進(jìn)入不同的網(wǎng)絡(luò )。

              3、集群

              通常會(huì )使用CDN與GSBL與DNS負載均衡技術(shù),每個(gè)地區一組前臺服務(wù)器群,例如:網(wǎng)易,百度使用了DNS負載均衡技術(shù),每個(gè)頻道一組前臺服務(wù)器,一搜使用了DNS負載技術(shù),所有頻道共用一組前臺服務(wù)器集群。

              網(wǎng)站使用基于Linux集群的負載均衡,失敗恢復,包括應用服務(wù)器和數據庫服務(wù)器,基于linux-ha的服務(wù)狀態(tài)檢測及高可用化。

              應用服務(wù)器集群可以采用apache+tomcat集群和weblogic集群等;web服務(wù)器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根據情況選擇。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: 架構 穩定性 系統 效率 運行


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>