2019-06-30
企業大(dà)型網站建設的系統架構;
1、HTML靜态化
其實大(dà)家都知(zhī)道,效率最高、消耗最小(xiǎo)的就是純靜态化的html頁面,所以我(wǒ)們盡可能使我(wǒ)們的網站上的頁面采用靜态頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對于大(dà)量内容并且頻(pín)繁更新的網站,我(wǒ)們無法全部手動去(qù)挨個實現,于是出現了我(wǒ)們常見的信息發布系統CMS,像我(wǒ)們常訪問的各個門戶站點的新聞頻(pín)道,甚至他們的其他頻(pín)道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生(shēng)成靜态頁面,還能具備頻(pín)道管理、權限管理、自動抓取等功能,對于一(yī)個大(dà)型網站來說,擁有一(yī)套高效、可管理的CMS是必不可少的。
除了門戶和信息發布類型的網站,對于交互性要求很高的社區類型網站來說,盡可能的靜态化也是提高性能的必要手段,将社區内的帖子、文章進行實時的靜态化,有更新的時候再重新靜态化也是大(dà)量使用的策略,像Mop的大(dà)雜(zá)燴就是使用了這樣的策略,網易社區等也是如此。
同時,html靜态化也是某些緩存策略使用的手段,對于系統中(zhōng)頻(pín)繁使用數據庫查詢但是内容更新很小(xiǎo)的應用,可以考慮使用html靜态化來實現,比如論壇中(zhōng)論壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理并且存儲再數據庫中(zhōng),這些信息其實大(dà)量被前台程序調用,但是更新頻(pín)率很小(xiǎo),可以考慮将這部分(fēn)内容進行後台更新的時候進行靜态化,這樣避免了大(dà)量的數據庫訪問請求。
2、圖片服務器分(fēn)離(lí)
大(dà)家知(zhī)道,對于Web服務器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資(zī)源的,于是我(wǒ)們有必要将圖片與頁面進行分(fēn)離(lí),這是基本上大(dà)型網站都會采用的策略,他們都有獨立的圖片服務器,甚至很多台圖片服務器。這樣的架構可以降低提供頁面訪問請求的服務器系統壓力,并且可以保證系統不會因爲圖片問題而崩潰,在應用服務器和圖片服務器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的 LoadModule,保證更高的系統消耗和執行效率。
3、數據庫集群和庫表散列
大(dà)型網站都有複雜(zá)的應用,這些應用必須使用數據庫,那麽在面對大(dà)量訪問的時候,數據庫的瓶頸很快就能顯現出來,這時一(yī)台數據庫将很快無法滿足應用,于是我(wǒ)們需要使用數據庫集群或者庫表散列。
在數據庫集群方面,很多數據庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麽樣的DB,就參考相應的解決方案來實施即可。
上面提到的數據庫集群由于在架構、成本、擴張性方面都會受到所采用DB類型的限制,于是我(wǒ)們需要從應用程序的角度來考慮改善系統架構,庫表散列是常用并且最有效的解決方案。我(wǒ)們在應用程序中(zhōng)安裝業務和應用或者功能模塊将數據庫進行分(fēn)離(lí),不同的模塊對應不同的數據庫或者表,再按照一(yī)定的策略對某個頁面或者功能進行更小(xiǎo)的數據庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統的性能并且有很好的擴展性。sohu的論壇就是采用了這樣的架構,将論壇的用戶、設置、帖子等信息進行數據庫分(fēn)離(lí),然後對帖子、用戶按照闆塊和ID進行散列數據庫和表,最終可以在配置文件中(zhōng)進行簡單的配置便能讓系統随時增加一(yī)台低成本的數據庫進來補充系統性能。
4、緩存
緩存一(yī)詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開(kāi)發中(zhōng)的緩存也是非常重要。這裏先講述最基本的兩種緩存。高級和分(fēn)布式的緩存在後面講述。
架構方面的緩存,對Apache比較熟悉的人都能知(zhī)道Apache提供了自己的緩存模塊,也可以使用外(wài)加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網站程序開(kāi)發方面的緩存,Linux上提供的Memory Cache是常用的緩存接口,可以在web開(kāi)發中(zhōng)使用,比如用Java開(kāi)發的時候就可以調用MemoryCache對一(yī)些數據進行緩存和通訊共享,一(yī)些大(dà)型社區使用了這樣的架構。另外(wài),在使用web語言開(kāi)發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。
5、鏡像
鏡像是大(dà)型網站常采用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網絡接入商(shāng)和地域帶來的用戶訪問速度差異,比如ChinaNet和 EduNet之間的差異就促使了很多網站在教育網内搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的細節技術方面,這裏不闡述太深,有很多專業的現成的解決架構和産品可選。也有廉價的通過軟件實現的思路,比如Linux上的rsync等工(gōng)具。
6、負載均衡
負載均衡将是大(dà)型網站解決高負荷訪問和大(dà)量并發請求采用的終極解決辦法。
負載均衡技術發展了多年,有很多專業的服務提供商(shāng)和産品可以選擇,我(wǒ)個人接觸過一(yī)些解決方法,其中(zhōng)有兩個架構可以給大(dà)家做參考。
硬件四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識别業務流,将整個區間段的業務流分(fēn)配到合适的應用服務器進行處理。 第四層交換功能就象是虛IP,指向物(wù)理服務器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物(wù)理服務器基礎上,需要複雜(zá)的載量平衡算法。在IP世界,業務類型由終端TCP或UDP端口地址來決定,在第四層交換中(zhōng)的應用區間則由源端和終端IP地址、TCP和UDP端口共同決定。
在硬件四層交換産品領域,有一(yī)些知(zhī)名的産品可以選擇,比如Alteon、F5等,這些産品很昂貴,但是物(wù)有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中(zhōng)國當初接近2000台服務器使用了三四台Alteon就搞定了。
軟件四層交換
大(dà)家知(zhī)道了硬件四層交換機的原理後,基于OSI模型來實現的軟件四層交換也就應運而生(shēng),這樣的解決方案實現的原理一(yī)緻,不過性能稍差。但是滿足一(yī)定量的壓力還是遊刃有餘的,有人說軟件實現方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟件四層交換我(wǒ)們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實時災難應對解決方案,提高系統的魯棒性,同時可供了靈活的虛拟VIP配置和管理功能,可以同時滿足多種應用需求,這對于分(fēn)布式的系統來說必不可少。
一(yī)個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎上搭建squid集群,這種思路在很多大(dà)型網站包括搜索引擎上被采用,這樣的架構低成本、高性能還有很強的擴張性,随時往架構裏面增減節點都非常容易。這樣的架構我(wǒ)準備空了專門詳細整理一(yī)下(xià)和大(dà)家探讨。
對于大(dà)型網站來說,前面提到的每個方法可能都會被同時使用到,我(wǒ)這裏介紹得比較淺顯,具體(tǐ)實現過程中(zhōng)很多細節還需要大(dà)家慢(màn)慢(màn)熟悉和體(tǐ)會,有時一(yī)個很小(xiǎo)的squid參數或者apache參數設置,對于系統性能的影響就會很大(dà),希望大(dà)家一(yī)起讨論,達到抛磚引玉之效。
大(dà)型網站建設問題;
1、多個服務器集群後session同步問題
可以通過算法計算使同一(yī)個ip訪問同一(yī)台服務器
可以複制sessio各個服務器(不推薦開(kāi)銷大(dà))
session存在第三方中(zhōng)間件如redis中(zhōng)
2、數據庫壓力過大(dà)
利用數據庫主從數據複制的特性進行數據庫讀寫分(fēn)離(lí)
添加nosql中(zhōng)間件存放(fàng)熱點數據
用搜索引擎存放(fàng)部分(fēn)要讀的數據
根據業務拆分(fēn)數據或者分(fēn)表需要考慮分(fēn)布式主鍵的問題
3、頁面緩存
将訪問生(shēng)成的response緩存起來 定時更新 下(xià)次訪問直接返回緩存的response
4、拆分(fēn)應用
做到服務化,各個服務可能會出現重複代碼,注意分(fēn)布式事物(wù),需要消息中(zhōng)間件支撐
大(dà)型網站建設需要注意事項;
網站所選擇的網絡提供商(shāng):網通電信兩個交叉通信很慢(màn),考慮那些兩個都接入速度很快的,比如網信通(我(wǒ)以前公司的網站和遊戲都在上面)
1.網站架構體(tǐ)系(WEB服務器?多少、數據庫服務器多少?、緩存服務器、圖片服務器、備份服務器)
2.數據結構及數據算法(數據庫結構一(yī)定要優化,如果表太大(dà),請用分(fēn)表設置模式,如果能分(fēn)數據庫參考petshop)
3.緩存(大(dà)網站不能沒有緩存:數據庫緩存、數據緩存、頁面緩存、圖片緩存)
4.壓力測試(沒有這個測試的大(dà)網站表搞笑了)
5.代碼優化(算法真tmd的很重要)
6.開(kāi)發架構(架構擴展性一(yī)定要考慮,很多時候架構能解決很多問題)
7.測試測試再測試
8.不停的監控在監控性能及運行狀态
具體(tǐ)的來說涉及到:
1. 網站運行技術框架要求
技術範圍 說明
.net2.0
MSSQL2005
JMAIL
IIS6.0
SERV-U
AJAX
HTML
W3C
JAVASCRIPT
2. 網站浏覽速度要求(10月份速度、頁面大(dà)小(xiǎo)要求)
網頁的加載速度與網頁内容大(dà)小(xiǎo)成正比,網頁越大(dà),加載越慢(màn),網頁越小(xiǎo)加載越快
1) 網頁加載速度
标準 6秒
慢(màn) > 10秒
非常慢(màn) > 20秒
快 <5秒
非常快 <2秒
2) 網頁大(dà)小(xiǎo)
标準 350k
大(dà) > 400k
非常大(dà) > 500k
小(xiǎo) <250k
非常小(xiǎo) <150k
3) 首頁加載速度必須小(xiǎo)于6秒
4) 訂餐網頁加載速度必須小(xiǎo)于8秒
5) 網頁服務器緩存
6) 網頁圖片緩存
7) 減少頁面圖片大(dà)小(xiǎo)
說明:此要求爲10月份網站速度、頁面大(dà)小(xiǎo)要求。
3. 網站兼容性要求
兼容浏覽器 說明
IE6 完全兼容
Ie6補丁打全後 完全兼容
IE7 完全兼容
FIREFOX 完全兼容
TT 完全兼容
遨遊 流暢訂餐流程
4. 網站安全性要求
1) 無SQL注入點
1. 字符注入
2. 數字注入
3. 其他注入
2) 敏感Cookie必須加密
1. 用戶數字id
2. 訂單信息
3) 過濾cookie欺騙程序
4) 無錯誤明細輸出給客戶,返回我(wǒ)們定義好的錯誤信息給客戶
5) 權限受限嚴格驗證
5. 穩定性要求
1) 程序無明顯錯誤,如:不定期出現某些亂碼問題
2) 并發用戶達到500人/秒正常運行
6. 可靠性要求
1) 保證安全性能
2) 保證穩定性
7. 搜索引擎優化需求
1) 頁面TITLE要求顯示不同頁不同TITLE,并顯示名稱關鍵字
2) 頁面内關鍵字
3) 網站遍曆功能
各大(dà)門戶網站都用了CDN. 你們可以考慮自己做.
3台Linux服務器,1台Windows服務器. 或者更多. windows服務器放(fàng)主站點,URL靜态化.
linux1做電信squid服務器. 緩存整個站點的電信訪問.
linux2做網通squid服務器. 緩存網通訪問.
linux3做DNS服務器,做個智能DNS解析.
這樣做,電信用戶訪問站點,則訪問電信緩存服務器. 網通用戶訪問站點,則訪問網通緩存服務器.
當緩存沒有查詢内容的時候,才由緩存服務器去(qù)windows服務器取數據,并緩存.
當然你也可以架設鐵通的服務器. 或者搞緩存服務器隊列.
責任編輯:中(zhōng)山網站建設
【網訊網絡】國家高新技術企業》十年專注軟件開(kāi)發,網站建設,網頁設計,APP開(kāi)發,小(xiǎo)程序,微信公衆号開(kāi)發,定制各類企業管理軟件(OA、CRM、ERP、訂單管理系統、進銷存管理軟件等)!服務熱線:0760-88610046、13924923903,http://www.wansion.net
上一(yī)篇:Java開(kāi)發者有用的十個技術網站
下(xià)一(yī)篇:淺析怎樣建設高端電商(shāng)網站
*請認真填寫需求,我(wǒ)們會在24小(xiǎo)時内與您取得聯系。