全面剖析大型網站建設的(de)相關問題

2019-08-17

大型網站建設的(de)系統架構;

1、HTML靜态化
       其實大家都知道(dào),效率最高(gāo)、消耗最小的(de)就是純靜态化的(de)html頁面,所以我們盡可(kě)能使我們的(de)網站上的(de)頁面采用靜态頁面來實現,這個最簡單的(de)方法其實也是最有效的(de)方法。但是對于大量內(nèi)容并且頻繁更新的(de)網站,我們無法全部手動去(qù)挨個實現,于是出現了我們常見的(de)信息發布系統CMS,像我們常訪問的(de)各個門戶站點的(de)新聞頻道(dào),甚至他們的(de)其他頻道(dào),都是通過信息發布系統來管理(lǐ)和(hé)實現的(de),信息發布系統可(kě)以實現最簡單的(de)信息錄入自(zì)動生成靜态頁面,還能具備頻道(dào)管理(lǐ)、權限管理(lǐ)、自(zì)動抓取等功能,對于一(yī)個大型網站來說,擁有一(yī)套高(gāo)效、可(kě)管理(lǐ)的(de)CMS是必不可(kě)少的(de)。

20100409113451461.jpg



       除了門戶和(hé)信息發布類型的(de)網站,對于交互性要求很高(gāo)的(de)社區類型網站來說,盡可(kě)能的(de)靜态化也是提高(gāo)性能的(de)必要手段,将社區內(nèi)的(de)帖子(zǐ)、文章(zhāng)進行實時的(de)靜态化,有更新的(de)時候再重新靜态化也是大量使用的(de)策略,像Mop的(de)大雜燴就是使用了這樣的(de)策略,網易社區等也是如(rú)此。

       同時,html靜态化也是某些緩存策略使用的(de)手段,對于系統中頻繁使用數據庫查詢但是內(nèi)容更新很小的(de)應用,可(kě)以考慮使用html靜态化來實現,比如(rú)論壇中論壇的(de)公用設置信息,這些信息目前的(de)主流論壇都可(kě)以進行後台管理(lǐ)并且存儲再數據庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可(kě)以考慮将這部分內(nèi)容進行後台更新的(de)時候進行靜态化,這樣避免了大量的(de)數據庫訪問請求。

2、圖片服務器分離(lí)
       大家知道(dào),對于Web服務器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的(de),于是我們有必要将圖片與頁面進行分離(lí),這是基本上大型網站都會采用的(de)策略,他們都有獨立的(de)圖片服務器,甚至很多台圖片服務器。這樣的(de)架構可(kě)以降低(dī)提供頁面訪問請求的(de)服務器系統壓力,并且可(kě)以保證系統不會因為(wèi)圖片問題而崩潰,在應用服務器和(hé)圖片服務器上,可(kě)以進行不同的(de)配置優化,比如(rú)apache在配置ContentType的(de)時候可(kě)以盡量少支持,盡可(kě)能少的(de) LoadModule,保證更高(gāo)的(de)系統消耗和(hé)執行效率。

3、數據庫集群和(hé)庫表散列
       大型網站都有複雜的(de)應用,這些應用必須使用數據庫,那麽在面對大量訪問的(de)時候,數據庫的(de)瓶頸很快就能顯現出來,這時一(yī)台數據庫将很快無法滿足應用,于是我們需要使用數據庫集群或者庫表散列。

       在數據庫集群方面,很多數據庫都有自(zì)己的(de)解決方案,Oracle、Sybase等都有很好的(de)方案,常用的(de)MySQL提供的(de)Master/Slave也是類似的(de)方案,您使用了什麽樣的(de)DB,就參考相應的(de)解決方案來實施即可(kě)。

       上面提到的(de)數據庫集群由于在架構、成本、擴張性方面都會受到所采用DB類型的(de)限制,于是我們需要從應用程序的(de)角度來考慮改善系統架構,庫表散列是常用并且最有效的(de)解決方案。我們在應用程序中安裝業務和(hé)應用或者功能模塊将數據庫進行分離(lí),不同的(de)模塊對應不同的(de)數據庫或者表,再按照一(yī)定的(de)策略對某個頁面或者功能進行更小的(de)數據庫散列,比如(rú)用戶表,按照用戶ID進行表散列,這樣就能夠低(dī)成本的(de)提升系統的(de)性能并且有很好的(de)擴展性。sohu的(de)論壇就是采用了這樣的(de)架構,将論壇的(de)用戶、設置、帖子(zǐ)等信息進行數據庫分離(lí),然後對帖子(zǐ)、用戶按照闆塊和(hé)ID進行散列數據庫和(hé)表,最終可(kě)以在配置文件中進行簡單的(de)配置便能讓系統随時增加一(yī)台低(dī)成本的(de)數據庫進來補充系統性能。

4、緩存
       緩存一(yī)詞搞技術的(de)都接觸過,很多地(dì)方用到緩存。網站架構和(hé)網站開發中的(de)緩存也是非常重要。這裏先講述最基本的(de)兩種緩存。高(gāo)級和(hé)分布式的(de)緩存在後面講述。
       架構方面的(de)緩存,對Apache比較熟悉的(de)人都能知道(dào)Apache提供了自(zì)己的(de)緩存模塊,也可(kě)以使用外加的(de)Squid模塊進行緩存,這兩種方式均可(kě)以有效的(de)提高(gāo)Apache的(de)訪問響應能力。
       網站程序開發方面的(de)緩存,Linux上提供的(de)Memory Cache是常用的(de)緩存接口,可(kě)以在web開發中使用,比如(rú)用Java開發的(de)時候就可(kě)以調用MemoryCache對一(yī)些數據進行緩存和(hé)通訊共享,一(yī)些大型社區使用了這樣的(de)架構。另外,在使用web語言開發的(de)時候,各種語言基本都有自(zì)己的(de)緩存模塊和(hé)方法,PHP有Pear的(de)Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。

5、鏡像
       鏡像是大型網站常采用的(de)提高(gāo)性能和(hé)數據安全性的(de)方式,鏡像的(de)技術可(kě)以解決不同網絡接入商和(hé)地(dì)域帶來的(de)用戶訪問速度差異,比如(rú)ChinaNet和(hé) EduNet之間的(de)差異就促使了很多網站在教育網內(nèi)搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的(de)細節技術方面,這裏不闡述太深,有很多專業的(de)現成的(de)解決架構和(hé)産品可(kě)選。也有廉價的(de)通過軟件實現的(de)思路,比如(rú)Linux上的(de)rsync等工具。

6、負載均衡
       負載均衡将是大型網站解決高(gāo)負荷訪問和(hé)大量并發請求采用的(de)終極解決辦法。
負載均衡技術發展了多年(nián),有很多專業的(de)服務提供商和(hé)産品可(kě)以選擇,我個人接觸過一(yī)些解決方法,其中有兩個架構可(kě)以給大家做(zuò)參考。
硬件四層交換
       第四層交換使用第三層和(hé)第四層信息包的(de)報頭信息,根據應用區間識别業務流,将整個區間段的(de)業務流分配到合适的(de)應用服務器進行處理(lǐ)。 第四層交換功能就象是虛IP,指向物理(lǐ)服務器。它傳輸的(de)業務服從的(de)協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理(lǐ)服務器基礎上,需要複雜的(de)載量平衡算法。在IP世界,業務類型由終端TCP或UDP端口地(dì)址來決定,在第四層交換中的(de)應用區間則由源端和(hé)終端IP地(dì)址、TCP和(hé)UDP端口共同決定。
在硬件四層交換産品領域,有一(yī)些知名的(de)産品可(kě)以選擇,比如(rú)Alteon、F5等,這些産品很昂貴,但是物有所值,能夠提供非常優秀的(de)性能和(hé)很靈活的(de)管理(lǐ)能力。Yahoo中國(guó)當初接近2000台服務器使用了三四台Alteon就搞定了。

軟件四層交換
       大家知道(dào)了硬件四層交換機的(de)原理(lǐ)後,基于OSI模型來實現的(de)軟件四層交換也就應運而生,這樣的(de)解決方案實現的(de)原理(lǐ)一(yī)緻,不過性能稍差。但是滿足一(yī)定量的(de)壓力還是遊刃有餘的(de),有人說軟件實現方式其實更靈活,處理(lǐ)能力完全看你配置的(de)熟悉能力。
       軟件四層交換我們可(kě)以使用Linux上常用的(de)LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的(de)實時災難應對解決方案,提高(gāo)系統的(de)魯棒性,同時可(kě)供了靈活的(de)虛拟VIP配置和(hé)管理(lǐ)功能,可(kě)以同時滿足多種應用需求,這對于分布式的(de)系統來說必不可(kě)少。

       一(yī)個典型的(de)使用負載均衡的(de)策略就是,在軟件或者硬件四層交換的(de)基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被采用,這樣的(de)架構低(dī)成本、高(gāo)性能還有很強的(de)擴張性,随時往架構裏面增減節點都非常容易。這樣的(de)架構我準備空了專門詳細整理(lǐ)一(yī)下和(hé)大家探讨。

       對于大型網站來說,前面提到的(de)每個方法可(kě)能都會被同時使用到,我這裏介紹得比較淺顯,具體實現過程中很多細節還需要大家慢慢熟悉和(hé)體會,有時一(yī)個很小的(de)squid參數或者apache參數設置,對于系統性能的(de)影響就會很大,希望大家一(yī)起讨論,達到抛磚引玉之效。


大型網站建設問題;
1、多個服務器集群後session同步問題

      可(kě)以通過算法計算使同一(yī)個ip訪問同一(yī)台服務器

      可(kě)以複制sessio各個服務器(不推薦開銷大)

      session存在第三方中間件如(rú)redis中

2、數據庫壓力過大

      利用數據庫主從數據複制的(de)特性進行數據庫讀寫分離(lí)

      添加nosql中間件存放熱點數據

      用搜索引擎存放部分要讀的(de)數據

      根據業務拆分數據或者分表需要考慮分布式主鍵的(de)問題

3、頁面緩存

      将訪問生成的(de)response緩存起來 定時更新 下次訪問直接返回緩存的(de)response

4、拆分應用

      做(zuò)到服務化,各個服務可(kě)能會出現重複代碼,注意分布式事物,需要消息中間件支撐

635181589979054789.jpg



大型網站建設需要注意事項;
網站所選擇的(de)網絡提供商:網通電信兩個交叉通信很慢,考慮那些兩個都接入速度很快的(de),比如(rú)網信通(我以前公司的(de)網站和(hé)遊戲都在上面)
1.網站架構體系(WEB服務器?多少、數據庫服務器多少?、緩存服務器、圖片服務器、備份服務器)
2.數據結構及數據算法(數據庫結構一(yī)定要優化,如(rú)果表太大,請用分表設置模式,如(rú)果能分數據庫參考petshop)
3.緩存(大網站不能沒有緩存:數據庫緩存、數據緩存、頁面緩存、圖片緩存)
4.壓力測試(沒有這個測試的(de)大網站表搞笑了)
5.代碼優化(算法真tmd的(de)很重要)
6.開發架構(架構擴展性一(yī)定要考慮,很多時候架構能解決很多問題)
7.測試測試再測試
8.不停的(de)監控在監控性能及運行狀态

具體的(de)來說涉及到:
1. 網站運行技術框架要求
技術範圍 說明
.net2.0
MSSQL2005
JMAIL
IIS6.0
SERV-U
AJAX
HTML
W3C
JAVASCRIPT

2. 網站浏覽速度要求(10月份速度、頁面大小要求)
網頁的(de)加載速度與網頁內(nèi)容大小成正比,網頁越大,加載越慢,網頁越小加載越快
1) 網頁加載速度
标準 6秒
慢 > 10秒
非常慢 > 20秒
快 <5秒
非常快 <2秒

2) 網頁大小
标準 350k
大 > 400k
非常大 > 500k
小 <250k
非常小 <150k

3) 首頁加載速度必須小于6秒
4) 訂餐網頁加載速度必須小于8秒
5) 網頁服務器緩存
6) 網頁圖片緩存
7) 減少頁面圖片大小
說明:此要求為(wèi)10月份網站速度、頁面大小要求。


3. 網站兼容性要求
兼容浏覽器 說明
IE6 完全兼容
Ie6補丁打全後 完全兼容
IE7 完全兼容
FIREFOX 完全兼容
TT 完全兼容
遨遊 流暢訂餐流程


4. 網站安全性要求
1) 無SQL注入點
1. 字符注入
2. 數字注入
3. 其他注入
2) 敏感Cookie必須加密
1. 用戶數字id
2. 訂單信息
3) 過濾cookie欺騙程序
4) 無錯誤明細輸出給客戶,返回我們定義好的(de)錯誤信息給客戶
5) 權限受限嚴格驗證

5. 穩定性要求
1) 程序無明顯錯誤,如(rú):不定期出現某些亂碼問題
2) 并發用戶達到500人/秒正常運行

6. 可(kě)靠性要求
1) 保證安全性能
2) 保證穩定性

7. 搜索引擎優化需求
1) 頁面TITLE要求顯示不同頁不同TITLE,并顯示名稱關鍵字
2) 頁面內(nèi)關鍵字
3) 網站遍曆功能

各大門戶網站都用了CDN.   你們可(kě)以考慮自(zì)己做(zuò).
3台Linux服務器,1台Windows服務器.   或者更多.   windows服務器放主站點,URL靜态化.
linux1做(zuò)電信squid服務器.   緩存整個站點的(de)電信訪問.
linux2做(zuò)網通squid服務器.   緩存網通訪問.
linux3做(zuò)DNS服務器,做(zuò)個智能DNS解析.

這樣做(zuò),電信用戶訪問站點,則訪問電信緩存服務器.   網通用戶訪問站點,則訪問網通緩存服務器.
當緩存沒有查詢內(nèi)容的(de)時候,才由緩存服務器去(qù)windows服務器取數據,并緩存.
當然你也可(kě)以架設鐵通的(de)服務器.   或者搞緩存服務器隊列.

責任編輯:中山網站建設
 【網訊網絡】國(guó)家高(gāo)新技術企業》十年(nián)專注軟件開發,網站建設,網頁設計,APP開發,小程序,微信公衆号開發,定制各類企業管理(lǐ)軟件(OA、CRM、ERP、訂單管理(lǐ)系統、進銷存管理(lǐ)軟件等)!

服務熱線:0760-88610046、13924923903,http://www.wansion.net

您的(de)項目需求咨詢熱線:0760-88610046(國(guó)家高(gāo)新技術企業)

*請認真填寫需求,我們會在24小時內(nèi)與您取得聯系。