2012年大型網(wǎng)站架構(gòu)設(shè)計(jì)方案_第1頁
2012年大型網(wǎng)站架構(gòu)設(shè)計(jì)方案_第2頁
2012年大型網(wǎng)站架構(gòu)設(shè)計(jì)方案_第3頁
2012年大型網(wǎng)站架構(gòu)設(shè)計(jì)方案_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2012 年大型網(wǎng)站架構(gòu)設(shè)計(jì)方案一、網(wǎng)頁 HTML 靜態(tài)化:純靜態(tài)化的 html 頁面效率最高 ,消耗最小 ,所以我們盡可能使我們的網(wǎng)站 上的頁面采用靜態(tài)頁面來實(shí)現(xiàn) ,這個最簡單的方法其實(shí)也是最有效的方法,但是 對于大量內(nèi)容并且頻繁更新的網(wǎng)站 ,我們無法全部手動去挨個實(shí)現(xiàn) ,于是出現(xiàn)了我 們常見的信息發(fā)布系統(tǒng) CMS, 像我們常訪問的各個門戶站點(diǎn)的新聞頻道 ,甚至他 們的其他頻道 ,都是通過信息發(fā)布系統(tǒng)來管理和實(shí)現(xiàn)的 ,信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最 簡單的信息錄入自動生成靜態(tài)頁面 ,還能具備頻道管理 ,權(quán)限管理 ,自動抓取等功 能 ,對于一個大型網(wǎng)站來說 ,擁有一套高效 ,可管理的 CMS 是必不可

2、少的,除了門 戶和信息發(fā)布類型的網(wǎng)站 ,對于交互性要求很高的社區(qū)類型網(wǎng)站來說 ,盡可能的靜 態(tài)化也是提高 性能的必要手段 ,將社區(qū)內(nèi)的帖子 ,文章進(jìn)行實(shí)時(shí)的靜態(tài)化 ,有更新 的時(shí)候再重新靜態(tài)化也是大量使用的策略 ,像 Mop 的大雜燴就是使用了這樣的 策略 ,網(wǎng)易社區(qū)等也是如此同時(shí) ,html 靜態(tài)化也是某些緩存策略使用的手段 ,對于 系統(tǒng)中頻繁使用數(shù)據(jù)庫查詢但是內(nèi)容更新很小的應(yīng)用 ,可以考慮使用 html 靜態(tài)化來實(shí)現(xiàn) ,比如論壇中論壇的公用設(shè)置信息 ,這些信息目前的主流論壇都 可以 進(jìn)行后臺管理并且存儲再數(shù)據(jù)庫中 ,這些信息其實(shí)大量被前臺程序調(diào)用 ,但是更新 頻率很小 ,可以 考慮將這部分

3、內(nèi)容進(jìn)行后臺更新的時(shí)候進(jìn)行靜態(tài)化 ,這樣避免了 大量的數(shù)據(jù)庫訪問請求;二、圖片服務(wù)器分離:對 Web 服務(wù)器來說 , 不管是 Apache,IIS 還是其他容器 , 圖片是最消耗資源 的 ,于是我們 有必要將圖片與頁面進(jìn)行分離 ,這是基本上大型網(wǎng)站都會采用的策 略 ,他們都有獨(dú)立的圖片服務(wù)器 ,甚至很多臺圖片服務(wù)器,這樣的架構(gòu)可以降低提供頁面訪問請求的服務(wù)器系統(tǒng)壓力 ,并且可以保證系統(tǒng)不 會因?yàn)閳D片問題而崩 潰 ,在應(yīng)用服務(wù)器和圖片服務(wù)器上 ,可以進(jìn)行不同的配置優(yōu)化 ,比如 apache 在配 置 ContentType 的時(shí)候可以盡量少支持 , 盡可能少的 LoadModule, 保證更高

4、的系統(tǒng)消耗和執(zhí)行效率;三、數(shù)據(jù)庫集群和庫表散列:大型網(wǎng)站都有復(fù)雜的應(yīng)用 ,這些應(yīng)用必須使用數(shù)據(jù)庫 ,那么在面對大量訪問的 時(shí)候 ,數(shù)據(jù)庫的瓶頸很快就能顯現(xiàn)出來 ,這時(shí)一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用 ,于 是我們需要使用數(shù)據(jù)庫集群或者庫表散列, 在數(shù)據(jù)庫集群方面 , 很多數(shù)據(jù)庫都有 自己的解決方案 , Oracle, Sybase 等都有很好的方案 ,常用的 MySQL 提供的 Master/Slave 也是類似的方案 ,您使用了什么樣的 DB, 就參考相應(yīng)的解決方案 來實(shí)施即可,上面提到的數(shù)據(jù)庫集群由于在架構(gòu) ,成本 ,擴(kuò)張性方面都會受到所采 用 DB 類型的限制 , 于是我們需要從 應(yīng)用程序的

5、角度來考慮改善系統(tǒng)架構(gòu) , 庫表 散列是常用并且最有效的解決方案,我們在應(yīng)用程序中安裝 業(yè)務(wù)和應(yīng)用或者功 能模塊將數(shù)據(jù)庫進(jìn)行分離 ,不同的模塊對應(yīng)不同的數(shù)據(jù)庫或者表 ,再按照一定的策 略 對某個頁面或者功能進(jìn)行更小的數(shù)據(jù)庫散列 ,比如用戶表 , 按照用戶 ID 進(jìn)行 表散列 ,這樣就能夠低成本 的提升系統(tǒng)的性能并且有很好的擴(kuò)展性, sohu 的論 壇就是采用了這樣的架構(gòu) ,將論壇的用戶 ,設(shè)置 ,帖 子等信息進(jìn)行數(shù)據(jù)庫分離 ,然后 對帖子 ,用戶按照板塊和 ID 進(jìn)行散列數(shù)據(jù)庫和表 ,最終可以在配置文件 中進(jìn)行 簡單的配置便能讓系統(tǒng)隨時(shí)增加一臺低成本的數(shù)據(jù)庫進(jìn)來補(bǔ)充系統(tǒng)性能;四、緩存:緩存一詞

6、搞技術(shù)的都接觸過 ,很多地方用到緩存,網(wǎng)站架構(gòu)和網(wǎng)站開發(fā)中的 緩存也是非常重要,這里先 講述最基本的兩種緩存,高級和分布式的緩存在后 面講述, 架構(gòu)方面的緩存 ,對 Apache 比較熟悉的人都能知道 Apache 提供了 自己的緩存模塊 ,也可以使用外加的 Squid 模塊進(jìn)行緩存 ,這兩種方式均可以有 效的提高 Apache 的訪問響應(yīng)能力, 網(wǎng)站程序開發(fā)方面的緩存 ,Linux 上提供 的 Memory Cache 是常用的緩存接口 , 可以在 web 開發(fā)中使用 , 比如用 Java 開發(fā)的時(shí)候就可以調(diào)用 MemoryCache 對一些數(shù)據(jù)進(jìn)行緩存和通訊共享 一些大型社區(qū)使用了 這樣的

7、架構(gòu), 另外 , 在使用 web 語言開發(fā)的時(shí)候 , 各種 語言基本都有自己的緩存模塊和方法 , PHP 有 Pear 的 Cache 模塊 ,Java 就 更多了 ,net 不是很熟悉 ,相信也肯定有;五、鏡像:鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式 ,鏡像的技術(shù)可以解 決 不 同網(wǎng) 絡(luò) 接入 商和地 域 帶來 的用 戶 訪問速 度 差異 , 比如 ChinaNet 和 EduNet 之間的差異就促使了很多網(wǎng)站在教育網(wǎng)內(nèi)搭建鏡像站點(diǎn) ,數(shù)據(jù)進(jìn)行定時(shí) 更新或者實(shí)時(shí)更新,在鏡像的細(xì)節(jié)技術(shù)方面 ,這里不闡述太深 ,有很多專業(yè)的現(xiàn)成 的解決 架構(gòu)和產(chǎn)品可選,也有廉價(jià)的通過軟件實(shí)現(xiàn)的思路,比

8、如 Linux 上的rsync 等工具;六、負(fù)載均衡:負(fù)載均衡將是大型網(wǎng)站解決高負(fù)荷訪問和大量并發(fā)請求采用的終極解決辦 法,負(fù)載均衡技術(shù)發(fā)展了多年 ,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇 ,我個人 接觸過一些解決方法 ,其 中有兩個架構(gòu)可以給大家做參考;七、硬件四層交換硬件四層交換第四層交換使用第三層和第四層信息包的報(bào)頭信息,根據(jù)應(yīng)用區(qū)間識別業(yè)務(wù)流 ,將整個區(qū)間段的業(yè)務(wù)流 分配到合適的應(yīng)用服務(wù)器進(jìn)行處理,第四層交換功能就象是虛IP,指向物理服務(wù)器,它傳輸?shù)臉I(yè)務(wù)服 從的協(xié)議多種多 樣,有 HTTP,FTP,NFS,Telnet 或其他協(xié)議, 這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上 ,需要復(fù) 雜的載量平衡算法

9、, 在 IP 世界,業(yè)務(wù)類型由終端 TCP 或 UDP 端口地址來決定 , 在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址,TCP和UDP端口共同決定, 在硬件四層交換產(chǎn)品領(lǐng)域 ,有一些知名的產(chǎn)品可以選擇 ,比如 Alteon,F5 等,這些產(chǎn)品很昂貴 ,但是物 有所值 ,能夠提供非常優(yōu)秀的性能和很靈活的管理能 力, Yahoo 中國當(dāng)初接近 2000 臺服務(wù)器使用了三四 臺 Alteon 就搞定了;八、軟件四層交換軟件四層交換大家知道了硬件四層交換機(jī)的原理后,基于 OSI 模型來實(shí)現(xiàn)的軟件四層交換也就應(yīng)運(yùn)而生 ,這樣的解決 方案實(shí)現(xiàn)的原理一致 ,不過性能稍差, 但是滿足一定量的壓力還是游刃有

10、余的,有人說軟件實(shí)現(xiàn)方式其實(shí)更靈活 ,處理能力完全看你配置的熟悉能力, 軟件四層交換我們可以使用 Linux 上常用的 LVS 來解決 ,LVS 就是 Linux Virtual Server, 他提供了基于心 跳線 heartbeat 的實(shí)時(shí)災(zāi)難應(yīng)對解決方案 ,提高系統(tǒng)的魯棒性 ,同時(shí)可供了靈活的虛擬 VIP 配置 和管理功 能,可以同時(shí)滿足多種應(yīng)用需求 ,這對于分布式的系統(tǒng)來說必不可少, 一個典型的使用負(fù)載均衡的策略就是 ,在軟件或者硬件四層交換的基礎(chǔ)上搭建 squid 集群 ,這種思路在很 多大型網(wǎng)站包括搜索引擎上被采用 ,這樣的架構(gòu)低成 本,高性能還有很強(qiáng)的擴(kuò)張性 ,隨時(shí)往架構(gòu)里面增

11、減節(jié)點(diǎn)都非常容易, 這樣的架構(gòu) 我準(zhǔn)備空了專門詳細(xì)整理一下和大家探討, 對于大型網(wǎng)站來說 ,前面提到的每個 方法可能都會被同時(shí)使用到 ,我這里介紹得比較淺顯 ,具體實(shí)現(xiàn)過 程中很多細(xì)節(jié) 還需要大家慢慢熟悉和體會 ,有時(shí)一個很小的 squid 參數(shù)或者 apache 參數(shù)設(shè) 置 ,對于系統(tǒng) 性能的影響就會很大 ,希望大家一起討論 ,達(dá)到拋磚引玉之效, 用 squid 做 web cache server, apache 在 squid 的后面提供真正的 web 服 務(wù), 而 當(dāng)然使用這樣的架構(gòu)必須要保證主頁上大部分都是靜態(tài)頁面, 這就需要 程序員的配合將頁面在反饋給客戶端之前將頁面全部轉(zhuǎn)換成 靜態(tài)頁面, 基本看 出 sina 和 sohu 對于頻道等欄目都用了相同的技術(shù) ,即 squid 來監(jiān)聽這些

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論