大型網站建設應注意的(de)問題

2019-05-02

小型的(de)網站,比如(rú)個人網站,可(kě)以使用最簡單的(de)html靜态頁面就實現了,配合一(yī)些圖片達到美化效果,所有的(de)頁面均存放在一(yī)個目錄下,這樣的(de)網站對系統架構、性能的(de)要求都很簡單,随着互聯網業務的(de)不斷豐富,網站相關的(de)技術經過這些年(nián)的(de)發展,已經細分到很細的(de)方方面面,尤其對于大型網站來說,所采用的(de)技術更是涉及面非常廣,從硬件到軟件、編程語言、數據庫、WebServer、防火牆等各個領域都有了很高(gāo)的(de)要求,已經不是原來簡單的(de)html靜态網站所能比拟的(de)。

 859549-20180206174754341-474502393.png

大型網站,比如(rú)門戶網站。在面對大量用戶訪問、高(gāo)并發請求方面,基本的(de)解決方案集中在這樣幾個環節:使用高(gāo)性能的(de)服務器、高(gāo)性能的(de)數據庫、高(gāo)效率的(de)編程語言、還有高(gāo)性能的(de)Web容器。但是除了這幾個方面,還沒法根本解決大型網站面臨的(de)高(gāo)負載和(hé)高(gāo)并發問題。上面提供的(de)幾個解決思路在一(yī)定程度上也意味着更大的(de)投入,并且這樣的(de)解決思路具備瓶頸,沒有很好的(de)擴展性,下面我從低(dī)成本、高(gāo)性能和(hé)高(gāo)擴張性的(de)角度來說說一(yī)些經驗。

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)。除了門戶和(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)數據庫進來補充系統性能。

四、緩存  緩存一(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不是很熟悉,相信也肯定有。

4、鏡像  鏡像是大型網站常采用的(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等工具。

5、負載均衡  負載均衡将是大型網站解決高(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)擴張性,随時往架構裏面增減節點都非常容易。

責任編輯:中山網站建設
 【網訊網絡】國(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)與您取得聯系。