首頁 > 新聞 > 網(wǎng)站建設(shè) > 企業(yè)大型網(wǎng)站建設(shè)的系統(tǒng)架構(gòu)及注意事項(xiàng)
企業(yè)大型網(wǎng)站建設(shè)的系統(tǒng)架構(gòu)及注意事項(xiàng)
1、HTML靜態(tài)化
其實(shí)大家都知道,效率最高、消耗最小的就是純靜態(tài)化的html頁面,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實(shí)現(xiàn),這個(gè)最簡單的方法其實(shí)也是最有效的方法。但是對(duì)于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動(dòng)去挨個(gè)實(shí)現(xiàn),于是出現(xiàn)了我們常見的信息發(fā)布系統(tǒng)CMS,像我們常訪問的各個(gè)門戶站點(diǎn)的新聞?lì)l道,甚至他們的其他頻道,都是通過信息發(fā)布系統(tǒng)來管理和實(shí)現(xiàn)的,信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最簡單的信息錄入自動(dòng)生成靜態(tài)頁面,還能具備頻道管理、權(quán)限管理、自動(dòng)抓取等功能,對(duì)于一個(gè)大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。
除了門戶和信息發(fā)布類型的網(wǎng)站,對(duì)于交互性要求很高的社區(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)化也是某些緩存策略使用的手段,對(duì)于系統(tǒng)中頻繁使用數(shù)據(jù)庫查詢但是內(nèi)容更新很小的應(yīng)用,可以考慮使用html靜態(tài)化來實(shí)現(xiàn),比如論壇中論壇的公用設(shè)置信息,這些信息目前的主流論壇都可以進(jìn)行后臺(tái)管理并且存儲(chǔ)再數(shù)據(jù)庫中,這些信息其實(shí)大量被前臺(tái)程序調(diào)用,但是更新頻率很小,可以考慮將這部分內(nèi)容進(jìn)行后臺(tái)更新的時(shí)候進(jìn)行靜態(tài)化,這樣避免了大量的數(shù)據(jù)庫訪問請(qǐng)求。
2、圖片服務(wù)器分離
大家知道,對(duì)于Web服務(wù)器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁面進(jìn)行分離,這是基本上大型網(wǎng)站都會(huì)采用的策略,他們都有獨(dú)立的圖片服務(wù)器,甚至很多臺(tái)圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁面訪問請(qǐng)求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化,比如apache在配置ContentType的時(shí)候可以盡量少支持,盡可能少的 LoadModule,保證更高的系統(tǒng)消耗和執(zhí)行效率。
3、數(shù)據(jù)庫集群和庫表散列
大型網(wǎng)站都有復(fù)雜的應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫,那么在面對(duì)大量訪問的時(shí)候,數(shù)據(jù)庫的瓶頸很快就能顯現(xiàn)出來,這時(shí)一臺(tái)數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫集群或者庫表散列。
在數(shù)據(jù)庫集群方面,很多數(shù)據(jù)庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什么樣的DB,就參考相應(yīng)的解決方案來實(shí)施即可。
上面提到的數(shù)據(jù)庫集群由于在架構(gòu)、成本、擴(kuò)張性方面都會(huì)受到所采用DB類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),庫表散列是常用并且最有效的解決方案。我們?cè)趹?yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫進(jìn)行分離,不同的模塊對(duì)應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的策略對(duì)某個(gè)頁面或者功能進(jìn)行更小的數(shù)據(jù)庫散列,比如用戶表,按照用戶ID進(jìn)行表散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴(kuò)展性。sohu的論壇就是采用了這樣的架構(gòu),將論壇的用戶、設(shè)置、帖子等信息進(jìn)行數(shù)據(jù)庫分離,然后對(duì)帖子、用戶按照板塊和ID進(jìn)行散列數(shù)據(jù)庫和表,最終可以在配置文件中進(jìn)行簡單的配置便能讓系統(tǒng)隨時(shí)增加一臺(tái)低成本的數(shù)據(jù)庫進(jìn)來補(bǔ)充系統(tǒng)性能。
4、緩存
緩存一詞搞技術(shù)的都接觸過,很多地方用到緩存。網(wǎng)站架構(gòu)和網(wǎng)站開發(fā)中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級(jí)和分布式的緩存在后面講述。
架構(gòu)方面的緩存,對(duì)Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進(jìn)行緩存,這兩種方式均可以有效的提高Apache的訪問響應(yīng)能力。
網(wǎng)站程序開發(fā)方面的緩存,Linux上提供的Memory Cache是常用的緩存接口,可以在web開發(fā)中使用,比如用Java開發(fā)的時(shí)候就可以調(diào)用MemoryCache對(duì)一些數(shù)據(jù)進(jìn)行緩存和通訊共享,一些大型社區(qū)使用了這樣的架構(gòu)。另外,在使用web語言開發(fā)的時(shí)候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。
5、鏡像
鏡像是大型網(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)的思路,比如Linux上的rsync等工具。
6、負(fù)載均衡
負(fù)載均衡將是大型網(wǎng)站解決高負(fù)荷訪問和大量并發(fā)請(qǐng)求采用的終極解決辦法。
負(fù)載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,我個(gè)人接觸過一些解決方法,其中有兩個(gè)架構(gòu)可以給大家做參考。
硬件四層交換
第四層交換使用第三層和第四層信息包的報(bào)頭信息,根據(jù)應(yīng)用區(qū)間識(shí)別業(yè)務(wù)流,將整個(gè)區(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ù)雜的載量平衡算法。在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臺(tái)服務(wù)器使用了三四臺(tái)Alteon就搞定了。
軟件四層交換
大家知道了硬件四層交換機(jī)的原理后,基于OSI模型來實(shí)現(xiàn)的軟件四層交換也就應(yīng)運(yùn)而生,這樣的解決方案實(shí)現(xiàn)的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有余的,有人說軟件實(shí)現(xiàn)方式其實(shí)更靈活,處理能力完全看你配置的熟悉能力。
軟件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實(shí)時(shí)災(zāi)難應(yīng)對(duì)解決方案,提高系統(tǒng)的魯棒性,同時(shí)可供了靈活的虛擬VIP配置和管理功能,可以同時(shí)滿足多種應(yīng)用需求,這對(duì)于分布式的系統(tǒng)來說必不可少。
一個(gè)典型的使用負(fù)載均衡的策略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構(gòu)低成本、高性能還有很強(qiáng)的擴(kuò)張性,隨時(shí)往架構(gòu)里面增減節(jié)點(diǎn)都非常容易。這樣的架構(gòu)我準(zhǔn)備空了專門詳細(xì)整理一下和大家探討。
對(duì)于大型網(wǎng)站來說,前面提到的每個(gè)方法可能都會(huì)被同時(shí)使用到,我這里介紹得比較淺顯,具體實(shí)現(xiàn)過程中很多細(xì)節(jié)還需要大家慢慢熟悉和體會(huì),有時(shí)一個(gè)很小的squid參數(shù)或者apache參數(shù)設(shè)置,對(duì)于系統(tǒng)性能的影響就會(huì)很大,希望大家一起討論,達(dá)到拋磚引玉之效。
大型網(wǎng)站建設(shè)問題;
1、多個(gè)服務(wù)器集群后session同步問題
可以通過算法計(jì)算使同一個(gè)ip訪問同一臺(tái)服務(wù)器
可以復(fù)制sessio各個(gè)服務(wù)器(不推薦開銷大)
session存在第三方中間件如redis中
2、數(shù)據(jù)庫壓力過大
利用數(shù)據(jù)庫主從數(shù)據(jù)復(fù)制的特性進(jìn)行數(shù)據(jù)庫讀寫分離
添加nosql中間件存放熱點(diǎn)數(shù)據(jù)
用搜索引擎存放部分要讀的數(shù)據(jù)
根據(jù)業(yè)務(wù)拆分?jǐn)?shù)據(jù)或者分表需要考慮分布式主鍵的問題
3、頁面緩存
將訪問生成的response緩存起來 定時(shí)更新 下次訪問直接返回緩存的response
4、拆分應(yīng)用
做到服務(wù)化,各個(gè)服務(wù)可能會(huì)出現(xiàn)重復(fù)代碼,注意分布式事物,需要消息中間件支撐
大型網(wǎng)站建設(shè)需要注意事項(xiàng);
網(wǎng)站所選擇的網(wǎng)絡(luò)提供商:網(wǎng)通電信兩個(gè)交叉通信很慢,考慮那些兩個(gè)都接入速度很快的,比如網(wǎng)信通(我以前公司的網(wǎng)站和游戲都在上面)
1.網(wǎng)站架構(gòu)體系(WEB服務(wù)器?多少、數(shù)據(jù)庫服務(wù)器多少?、緩存服務(wù)器、圖片服務(wù)器、備份服務(wù)器)
2.數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)算法(數(shù)據(jù)庫結(jié)構(gòu)一定要優(yōu)化,如果表太大,請(qǐng)用分表設(shè)置模式,如果能分?jǐn)?shù)據(jù)庫參考petshop)
3.緩存(大網(wǎng)站不能沒有緩存:數(shù)據(jù)庫緩存、數(shù)據(jù)緩存、頁面緩存、圖片緩存)
4.壓力測(cè)試(沒有這個(gè)測(cè)試的大網(wǎng)站表搞笑了)
5.代碼優(yōu)化(算法真tmd的很重要)
6.開發(fā)架構(gòu)(架構(gòu)擴(kuò)展性一定要考慮,很多時(shí)候架構(gòu)能解決很多問題)
7.測(cè)試測(cè)試再測(cè)試
8.不停的監(jiān)控在監(jiān)控性能及運(yùn)行狀態(tài)
具體的來說涉及到:
1. 網(wǎng)站運(yùn)行技術(shù)框架要求
技術(shù)范圍 說明
.net2.0
MSSQL2005
JMAIL
IIS6.0
SERV-U
AJAX
HTML
W3C
JAVASCRIPT
2. 網(wǎng)站瀏覽速度要求(10月份速度、頁面大小要求)
網(wǎng)頁的加載速度與網(wǎng)頁內(nèi)容大小成正比,網(wǎng)頁越大,加載越慢,網(wǎng)頁越小加載越快
1) 網(wǎng)頁加載速度
標(biāo)準(zhǔn) 6秒
慢 > 10秒
非常慢 > 20秒
快 <5秒
非? <2秒
2) 網(wǎng)頁大小
標(biāo)準(zhǔn) 350k
大 > 400k
非常大 > 500k
小 <250k
非常小 <150k
3) 首頁加載速度必須小于6秒
4) 訂餐網(wǎng)頁加載速度必須小于8秒
5) 網(wǎng)頁服務(wù)器緩存
6) 網(wǎng)頁圖片緩存
7) 減少頁面圖片大小
說明:此要求為10月份網(wǎng)站速度、頁面大小要求。
3. 網(wǎng)站兼容性要求
兼容瀏覽器 說明
IE6 完全兼容
Ie6補(bǔ)丁打全后 完全兼容
IE7 完全兼容
FIREFOX 完全兼容
TT 完全兼容
遨游 流暢訂餐流程
4. 網(wǎng)站安全性要求
1) 無SQL注入點(diǎn)
1. 字符注入
2. 數(shù)字注入
3. 其他注入
2) 敏感Cookie必須加密
1. 用戶數(shù)字id
2. 訂單信息
3) 過濾cookie欺騙程序
4) 無錯(cuò)誤明細(xì)輸出給客戶,返回我們定義好的錯(cuò)誤信息給客戶
5) 權(quán)限受限嚴(yán)格驗(yàn)證
5. 穩(wěn)定性要求
1) 程序無明顯錯(cuò)誤,如:不定期出現(xiàn)某些亂碼問題
2) 并發(fā)用戶達(dá)到500人/秒正常運(yùn)行
6. 可靠性要求
1) 保證安全性能
2) 保證穩(wěn)定性
7. 搜索引擎優(yōu)化需求
1) 頁面TITLE要求顯示不同頁不同TITLE,并顯示名稱關(guān)鍵字
2) 頁面內(nèi)關(guān)鍵字
3) 網(wǎng)站遍歷功能
各大門戶網(wǎng)站都用了CDN. 你們可以考慮自己做.
3臺(tái)Linux服務(wù)器,1臺(tái)Windows服務(wù)器. 或者更多. windows服務(wù)器放主站點(diǎn),URL靜態(tài)化.
linux1做電信squid服務(wù)器. 緩存整個(gè)站點(diǎn)的電信訪問.
linux2做網(wǎng)通squid服務(wù)器. 緩存網(wǎng)通訪問.
linux3做DNS服務(wù)器,做個(gè)智能DNS解析.
這樣做,電信用戶訪問站點(diǎn),則訪問電信緩存服務(wù)器. 網(wǎng)通用戶訪問站點(diǎn),則訪問網(wǎng)通緩存服務(wù)器.
當(dāng)緩存沒有查詢內(nèi)容的時(shí)候,才由緩存服務(wù)器去windows服務(wù)器取數(shù)據(jù),并緩存.
當(dāng)然你也可以架設(shè)鐵通的服務(wù)器. 或者搞緩存服務(wù)器隊(duì)列.
- 基于用戶創(chuàng)新
界面設(shè)計(jì)日新月異,夢(mèng)創(chuàng)義堅(jiān)持基于用戶需求的界面創(chuàng)新設(shè)計(jì)……
- 服務(wù)設(shè)計(jì)思維
互聯(lián)網(wǎng)的格局發(fā)生的改變,在我們進(jìn)行設(shè)計(jì)服務(wù)時(shí)更是考慮不同用戶、不同……
- 洞察用戶心理
洞察用戶有意識(shí)和無意識(shí)的行為以及心理特征通過構(gòu)造一系列的服務(wù)來促進(jìn)……
- 查看更多 >>
最新新聞Latest News
- 中小型企業(yè)網(wǎng)站建設(shè)完應(yīng)該如何營銷
- 很多中小型企業(yè)往往糾結(jié)于以下10個(gè)問題:一、我們起步比別人晚,我們的……
- 做企業(yè)網(wǎng)站到底做給誰看?
- 設(shè)計(jì)經(jīng)常時(shí)不時(shí)的遇到一些企業(yè)客戶,常常搞不清楚誰會(huì)真正看你的企業(yè)網(wǎng)……
- 傳統(tǒng)企業(yè)進(jìn)軍移動(dòng)互聯(lián)網(wǎng),從移動(dòng)云網(wǎng)站開始
- 移動(dòng)互聯(lián)網(wǎng)是移動(dòng)通信和互聯(lián)網(wǎng)融合的產(chǎn)物,其發(fā)展的重要基礎(chǔ)便是智能手……
- 網(wǎng)站建設(shè)和運(yùn)營五大細(xì)節(jié)決定用戶黏性
- 網(wǎng)站的成功離不開搜索引擎優(yōu)化,更離不開最基礎(chǔ)最根本的用戶群體,如何……
- 2015年值得關(guān)注的電子商務(wù)5大趨勢(shì)
- 線上線下銷售的界線正在變得越來越模糊。在2015年,這一趨勢(shì)仍將繼續(xù)!