導航:首頁 > 網站知識 > 大型網站核心架構如何解決

大型網站核心架構如何解決

發布時間:2022-08-18 11:59:08

『壹』 關於大型網站架構問題

1、HTML靜態化
其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。

除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。

同時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。

2、圖片伺服器分離

大家知道,對於Web伺服器來說,不管是APACHE、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗和執行效率。

3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。

在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MYSQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。

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

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

、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網路接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等工具。

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

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

一個典型的使用負載均衡的策略就是,在軟體或者硬體四層交換的基礎上搭建squid集群,這種思路在很多大型網站包括搜索引擎上被採用,這樣的架構低成本、高性能還有很強的擴張性,隨時往架構裡面增減節點都非常容易。這樣的架構我准備空了專門詳細整理一下和大家探討。

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

其實這樣的手段還很多,總結:第一,頁面靜態化(CMS)

第二,用鏡像或者CDN(這一塊可以付費完成)

第三,資料庫庫表分離,並且部署多台資料庫伺服器集群

第四,分化伺服器,分成WEB伺服器,FTP伺服器,圖片伺服器,DNS伺服器.

第五,DNS伺服器,分流到各功能應用伺服器(如博客,論壇,問答)

此外,這樣的手段還有很多....注意重點學習,你一定會有所成就

『貳』 大型網站架構該怎麼優化設計

你得把你的網站拿出來看了才知道怎麼優化改進。並不是說每個網站的優化思路都一樣。比如,你優化結構之前你得考慮你的長尾關鍵詞要怎麼擴展,長尾詞是不是有規律可循。如果有規律,你可以直接利用程序生成標題,生成內容。要根據你的設計思路去設計網站結構。要是每個網站優化思路都一樣,那為什麼不直接程式化,還拿優化運營來做什麼?自動化多好。但是,這是不現實的。所以,你的提問沒人能幫得到你。

『叄』 大型互聯網公司項目如何架構

初始階段的網站架構
大型網站都是從小型網站發展而來,網站架構也是一樣,是從小型網站架構逐步演化而來,小型網站最開始沒有太多人訪問,只需要一台伺服器就綽綽有餘,這時的網站架構如圖。
應用程序,資料庫,文件等所有的資源都在一台伺服器上。通常伺服器操作系統使用Linux,應用程序使用PHP開發,然後部署在Apache上,資料庫使用MySql,匯集各種開源軟體及一台廉價伺服器就可以開始網站的發展之路了。

應用服務和數據服務分離

隨著網站業務的發展,一台伺服器逐漸不能滿足需求:越來越多的用戶訪問導致性能越來越差,越來越多的數據導致存儲空間不足,這時就需要將應用和數據分離,應用和數據分離後整個網站使用三台伺服器:應用伺服器,文件伺服器和資料庫伺服器,如下圖所示,這三台伺服器對硬體資源的要求各不相同,應用伺服器需要處理大量的業務邏輯,因此需要更快更強大的CPU,資料庫伺服器需要快速磁碟檢索和數據緩存,因此需要更快的硬碟和更大的內存,文件伺服器需要儲存大量用戶上傳的文件,因此需要更大的硬碟。
應用和數據分離後,不同特性的伺服器承擔不同的服務角色,網站的並發處理能力和數據存儲空間得到了很大改善,支持網站業務進一步發展,但是隨著用戶逐漸增多,網站又一次面臨挑戰:資料庫壓力太大導致訪問延遲,進而影響整個網站的性能,用戶體驗受到影響,這時需要對網站架構進一步優化。

使用緩存改善網站性能

網站訪問特點和現實世界的財富分配一樣遵循二八定律:80%的業務訪問集中在20%的數據上。淘寶買家瀏覽的商品集中在少部分成交數多、評價良好的商品上;網路搜索關鍵詞集中在少部分熱門詞彙上;經常登錄的用戶才會發微博、看微博,而這部分用戶也只佔總用戶數目的一小部分。
既然大部分的業務訪問集中在,那麼如果把這一小部分數據緩存在內存中,就可以減少資料庫的訪問壓力。網站使用的緩存分為兩種:緩存在應用伺服器上的本地緩存和緩存在專門的分布式緩存伺服器上的遠程緩存。本地緩存的訪問速度更快一些,但是受應用伺服器內存限制,其緩存數量有限,而且會出現和應用程序爭用內存的情況。遠程分布式可以使用集群的方式,部署大內存的伺服器作為專門的緩存伺服器,可以在理論上做到不受內存容量限制的緩存服務。
使用緩存後,數據訪問壓力得到有效緩解,但是單一應用伺服器能夠處理的請求連接有限,在網站的訪問高峰期,應用伺服器會成為整個網站的瓶頸。

使用應用伺服器集群改善網站的並發處理能力

使用集群是網站解決高並發,海量問題的常用手段,當一台伺服器的處理能力、儲存空間不足時,不要企圖去換更強大的伺服器,對大型網站而言,不管多麼強大的伺服器,都滿足不了網站持續增長的業務需求,這種情況下,更恰當的做法是增加一台伺服器分擔原有伺服器的訪問及存儲壓力。
對網站而言,只要能通過一台伺服器的方式改善負載壓力,就可以以同樣的方式持續增加伺服器不斷改善系統性能,從而實現系統的可伸縮性,應用伺服器實現集群是網站可伸縮集群架構設計中較為簡單成熟的一種。如下圖所示。
通過負載均衡調度伺服器,可將來自用戶瀏覽器的請求分發到應用伺服器集群中的任何一台伺服器上,如果有更多的用戶,就在集群中加入更多的應用伺服器,使應用伺服器的負載壓力不在成為網站的瓶頸。

資料庫讀寫分離

網站使用緩存後,大部分數據操作訪問都可以不通過資料庫就能完成,但是仍有一部分讀操作,(緩存訪問不命中、緩存過期)和全部的寫操作,需要訪問資料庫,在網站的用戶達到一定規模後,資料庫因為負載壓力過高而成為網站的瓶頸。
目前大部分的主流資料庫都提供主從熱備功能,通過配置兩台資料庫主從關系,可以將一台資料庫伺服器的數據更新同步到另一台伺服器上。網站利用資料庫的這一功能,實現資料庫讀寫分離,從而改善資料庫負載壓力。
應用伺服器在寫數據的時候,訪問主資料庫,主資料庫通過主從復制機制將數據更新同步到從資料庫,這樣當應用伺服器讀數據的時候,就可以通過從資料庫或得數據。為了便於應用程序訪問讀寫分離後的資料庫,通常在應用伺服器端使用專門的數據訪問模塊,使資料庫讀寫分離時對應用透明。

使用反向代理和CDN加速網站響應

CDN和反向代理的基本原理都是緩存,區別在於CDN部署在網路提供商的機房,是用戶在請求網站服務時,可以從距離自己最近的網路提供商機房獲取數據;而反向代理則部署在網站的中心機房,當用戶請求到達中心機房後,首先訪問的伺服器是反向代理伺服器,如果反向代理伺服器中緩存著用戶請求的資源,就將其直接給用戶。
使用分布式文件系統和分布式資料庫系統

分布式資料庫是網站資料庫拆分的最後手段,只有在單表數據規模非常龐大的時候才使用,不到萬不得以時,網站更常用的資料庫拆分手段是業務分庫,將不同業務的資料庫部署在不同的物理伺服器上。
使用NOSQL和搜索引擎

對於海量數據的查詢,我們使用nosql資料庫加上搜索引擎可以達到更好的性能。並不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。
業務拆分

隨著業務進一步擴展,應用程序變得非常臃腫,這時我們需要將應用程序進行業務拆分,如網路分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過消息進行通信或者同享資料庫來實現.
分布式服務

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。淘寶的Dubbo是一個不錯的選擇.

『肆』 《大型網站技術架構核心原理與案例分析》epub下載在線閱讀全文,求百度網盤雲資源

《大型網站技術架構》(李智慧)電子書網盤下載免費在線閱讀

鏈接:https://pan..com/s/1HpxD4xwEqzQVxKVMHDT0EQ

提取碼:VOVP

書名:大型網站技術架構

作者:李智慧

豆瓣評分:7.9

出版社:電子工業出版社

出版年份:2013-9-1

頁數:218

內容簡介:

《大型網站技術架構:核心原理與案例分析》通過梳理大型網站技術發展歷程,剖析大型網站技術架構模式,深入講述大型互聯網架構設計的核心原理,並通過一組典型網站技術架構設計案例,為讀者呈現一幅包括技術選型、架構設計、性能優化、Web 安全、系統發布、運維監控等在內的大型網站開發全景視圖。

《大型網站技術架構:核心原理與案例分析》不僅適用於指導網站工程師、架構師進行網站技術架構設計,也可用於指導產品經理、項目經理、測試運維人員等了解網站技術架構的基礎概念;還可供包括企業系統開發人員在內的各類軟體開發從業人員借鑒,了解大型網站的解決方案和開發理念。

作者簡介:

李智慧

曾在阿里巴巴擔任技術專家,參與阿里巴巴基礎技術平台開發和www.alibaba.com架構設計。

目前就職英特爾亞太研發中心從事雲計算與大數據方面的研發工作。

『伍』 大型地方綜合類門戶網站的架構應該是怎樣的呢

系統架構
選用支持高並發的資料庫類型,支持以資料庫為核心的數據,保證系統穩定、高效、安全地運行;選用B/S架構得信息發布平台,內網製作伺服器完成網站信息。並提供管理員密保卡,使外網用戶能通過身份驗證方便、安全地完成對網站信息的更新、發布。

『陸』 從0開始逐步邊開發邊運作一個大型網站,該採用怎樣的技術架構(或者技術路線)

這樣的跨度肯定會經歷推倒重來的過程,否則一開始就設計一個能擴展到很大規模的網站架構會在初期造成很大的資金和人力負擔。讓開發的負責人給你計算了開發成本,維護成本和開發出來的效果以後你再決定當前階段採用哪一種。顯然一分錢一分貨。

越簡單的時候PHP越有優勢,越復雜JAVA越有優勢,JSP只是JAVA WEB開發中的一項技術,到最後都不一定需要使用。為了不浪費人手,如果你確定將來要往大網站發展一開始就該採用JAVA或.NET,這樣在重新開發時至少能充分利用之前的人員經驗。

該採用怎樣的技術架構不是三兩句話能說清楚的,具體問題具體分析。

再簡單也不建議使用JSP+SERVLET+JAVABEAN
SSH之類的架構本來就是為了簡化開發工作量,提高代碼質量和可維護性而生的。除非追求極致變態的性能的人才會去用servlet,而且實際體驗可能根本幾乎沒差別,只要不把SSH用得太爛。架構復雜了,也不過是在這些主流技術上改改,封裝封裝,自然是使用同一語言比PHP轉JAVA容易太多了。

『柒』 如何搭建大型網站系統

程序員們都希望能通過自己的努力學習,技術提升,拿到更好的收入,技術提升和高收入雖然不是輕易就能實現的,但總是有章可循。

一個成熟的大型網站(如淘寶、京東等)的系統架構並不是開始設計就具備完整的高性能、高可用、安全等特性,它總是隨著用戶量的增加,業務功能的擴展逐漸演變完善的,在這個過程中,開發模式、技術架構、設計思想也發生了很大的變化,就連技術人員也從幾個人發展到一個部門甚至一條產品線。所以成熟的系統架構是隨業務擴展而完善出來的,並不是一蹴而就;不同業務特徵的系統,會有各自的側重點,例如淘寶,要解決海量的商品信息的搜索、下單、支付,例如騰訊,要解決數億的用戶實時消息傳輸,網路它要處理海量的搜索請求,他們都有各自的業務特性,系統架構也有所不同。盡管如此我們也可以從這些不同的網站背景下,找出其中共用的技術,這些技術和手段可以廣泛運行在大型網站系統的架構中,下面就通過介紹大型網站系統的演化過程,來認識這些技術和手段。

一、最開始的網站架構

最初的架構,應用程序、資料庫、文件都部署在一台伺服器上,如圖:

二、應用、數據、文件分離

隨著業務的擴展,一台伺服器已經不能滿足性能需求,故將應用程序、資料庫、文件各自部署在獨立的伺服器上,並且根據伺服器的用途配置不同的硬體,達到最佳的性能效果。

三、利用緩存改善網站性能

在硬體優化性能的同時,同時也通過軟體進行性能優化,在大部分的網站系統中,都會利用緩存技術改善系統的性能,使用緩存主要源於熱點數據的存在,大部分網站訪問都遵循28原則(即80%的訪問請求,最終落在20%的數據上),所以我們可以對熱點數據進行緩存,減少這些數據的訪問路徑,提高用戶體驗。

緩存實現常見的方式是本地緩存、分布式緩存。當然還有CDN、反向代理等,這個後面再講。本地緩存,顧名思義是將數據緩存在應用伺服器本地,可以存在內存中,也可以存在文件,OSCache就是常用的本地緩存組件。本地緩存的特點是速度快,但因為本地空間有限所以緩存數據量也有限。分布式緩存的特點是,可以緩存海量的數據,並且擴展非常容易,在門戶類網站中常常被使用,速度按理沒有本地緩存快,常用的分布式緩存是Memcached、Redis。

四、使用集群改善應用伺服器性能

應用伺服器作為網站的入口,會承擔大量的請求,我們往往通過應用伺服器集群來分擔請求數。應用伺服器前面部署負載均衡伺服器調度用戶請求,根據分發策略將請求分發到多個應用伺服器節點。

常用的負載均衡技術硬體的有F5,價格比較貴,軟體的有LVS、Nginx、HAProxy。LVS是四層負載均衡,根據目標地址和埠選擇內部伺服器,Nginx是七層負載均衡和HAProxy支持四層、七層負載均衡,可以根據報文內容選擇內部伺服器,因此LVS分發路徑優於Nginx和HAProxy,性能要高些,而Nginx和HAProxy則更具配置性,如可以用來做動靜分離(根據請求報文特徵,選擇靜態資源伺服器還是應用伺服器)。

五、資料庫讀寫分離和分庫分表

隨著用戶量的增加,資料庫成為最大的瓶頸,改善資料庫性能常用的手段是進行讀寫分離以及分表,讀寫分離顧名思義就是將資料庫分為讀庫和寫庫,通過主備功能實現數據同步。分庫分表則分為水平切分和垂直切分,水平切換則是對一個資料庫特大的表進行拆分,例如用戶表。垂直切分則是根據業務不同來切換,如用戶業務、商品業務相關的表放在不同的資料庫中。

六、使用CDN和反向代理提高網站性能

假如我們的伺服器都部署在成都的機房,對於四川的用戶來說訪問是較快的,而對於北京的用戶訪問是較慢的,這是由於四川和北京分別屬於電信和聯通的不同發達地區,北京用戶訪問需要通過互聯路由器經過較長的路徑才能訪問到成都的伺服器,返迴路徑也一樣,所以數據傳輸時間比較長。對於這種情況,常常使用CDN解決,CDN將數據內容緩存到運營商的機房,用戶訪問時先從最近的運營商獲取數據,這樣大大減少了網路訪問的路徑。比較專業的CDN運營商有藍汛、網宿。

而反向代理,則是部署在網站的機房,當用戶請求達到時首先訪問反向代理伺服器,反向代理伺服器將緩存的數據返回給用戶,如果沒有沒有緩存數據才會繼續走應用伺服器獲取,也減少了獲取數據的成本。反向代理有Squid,Nginx。

七、使用分布式文件系統

用戶一天天增加,業務量越來越大,產生的文件越來越多,單台的文件伺服器已經不能滿足需求。需要分布式的文件系統支撐。常用的分布式文件系統有NFS。

八、使用NoSql和搜索引擎

對於海量數據的查詢,我們使用nosql資料庫加上搜索引擎可以達到更好的性能。並不是所有的數據都要放在關系型數據中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。

九、將應用伺服器進行業務拆分

隨著業務進一步擴展,應用程序變得非常臃腫,這時我們需要將應用程序進行業務拆分,如網路分為新聞、網頁、圖片等業務。每個業務應用負責相對獨立的業務運作。業務之間通過消息進行通信或者同享資料庫來實現。

十、搭建分布式服務

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如用戶服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。淘寶的Dubbo是一個不錯的選擇。

大型網站的架構是根據業務需求不斷完善的,根據不同的業務特徵會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段。

如果你還有這些疑問,成熟的網站架構師需要學什麼核心技能?Java程序員如何晉升為互聯網架構師?Java語言在架構搭建中扮演什麼角色?怎樣成為年收入幾十萬的架構師?歡迎來電來訪昆明北大青鳥java培訓。

『捌』 如何對門戶網站進行架構

一個小型的網站,比如個人網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、性能的要求都很簡單,隨著互聯網業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站來說,所採用的技術更是涉及面非常廣,從硬體到軟體、編程語言、資料庫、WebServer、防火牆等各個領域都有了很高的要求,已經不是原來簡單的html靜態網站所能比擬的。

大型網站架構,比如門戶網站的架構。在面對大量用戶訪問、高並發請求方面,基本的解決方案集中在這樣幾個環節:使用高性能的伺服器、高性能的資料庫、高效率的編程語言、還有高性能的Web容器。但是除了這幾個方面,還沒法根本解決大型網站面臨的高負載和高並發問題。

上面提供的幾個解決思路在一定程度上也意味著更大的投入,並且這樣的解決思路具備瓶頸,沒有很好的擴展性,下面我從低成本、高性能和高擴張性的角度來說說我的一些經驗。

1、HTML靜態化

其實大家都知道,效率最高、消耗最小的就是純靜態化的html頁面,所以我們盡可能使我們的網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,我們無法全部手動去挨個實現,於是出現了我們常見的信息發布系統CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。

除了門戶和信息發布類型的網站,對於交互性要求很高的社區類型網站來說,盡可能的靜態化也是提高性能的必要手段,將社區內的帖子、文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網易社區等也是如此。

同時,html靜態化也是某些緩存策略使用的手段,對於系統中頻繁使用資料庫查詢但是內容更新很小的應用,可以考慮使用html靜態化來實現,比如論壇中論壇的公用設置信息,這些信息目前的主流論壇都可以進行後台管理並且存儲再資料庫中,這些信息其實大量被前台程序調用,但是更新頻率很小,可以考慮將這部分內容進行後台更新的時候進行靜態化,這樣避免了大量的資料庫訪問請求。

2、圖片伺服器分離

大家知道,對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是我們有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的 LoadMole,保證更高的系統消耗和執行效率。

3、資料庫集群和庫表散列

大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是我們需要使用資料庫集群或者庫表散列。

在資料庫集群方面,很多資料庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什麼樣的DB,就參考相應的解決方案來實施即可。

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

『玖』 大型視頻網站的技術架構方案

國內的不清楚,給你看看YOUTUBE的
YouTube 的架構擴展
在西雅圖擴展性的技術研討會上,YouTube 的 Cuong Do 做了關於 YouTube Scalability 的報告。視頻內容在 Google Video 上有(地址),可惜國內用戶看不到。

Kyle Cordes 對這個視頻中的內容做了介紹。裡面有不少技術性的內容。值得分享一下。(Kyle Cordes 的介紹是本文的主要來源)

簡單的說 YouTube 的數據流量, "一天的YouTube流量相當於發送750億封電子郵件.", 2006 年中就有消息說每日 PV 超過 1 億,現在? 更誇張了,"每天有10億次下載以及6,5000次上傳", 真假姑且不論, 的確是超乎尋常的海量. 國內的互聯網應用,但從數據量來看,怕是只有 51.com 有這個規模. 但技術上和 YouTube 就沒法子比了.

1. Web 伺服器

YouTube 出於開發速度的考慮,大部分代碼都是 Python 開發的。Web 伺服器有部分是 Apache, 用 FastCGI 模式。對於視頻內容則用 Lighttpd 。據我所知,MySpace 也有部分伺服器用 Lighttpd ,但量不大。YouTube 是 Lighttpd 最成功的案例。(國內用 Lighttpd 站點不多,豆瓣用的比較舒服。by Fenng)

2. 視頻

視頻的縮略圖(Thumbnails)給伺服器帶來了很大的挑戰。每個視頻平均有4個縮略圖,而每個 Web 頁面上更是有多個,每秒鍾因為這個帶來的磁碟 IO 請求太大。YouTube 技術人員啟用了單獨的伺服器群組來承擔這個壓力,並且針對 Cache 和 OS 做了部分優化。另一方面,縮略圖請求的壓力導致 Lighttpd 性能下降。通過 Hack Lighttpd 增加更多的 worker 線程很大程度解決了問題。而最新的解決方案是起用了 Google 的 BigTable, 這下子從性能、容錯、緩存上都有更好表現。看人家這收購的,好鋼用在了刀刃上。

出於冗餘的考慮,每個視頻文件放在一組迷你 Cluster 上,所謂 "迷你 Cluster" 就是一組具有相同內容的伺服器。最火的視頻放在 CDN 上,這樣自己的伺服器只需要承擔一些"漏網"的隨即訪問即可。YouTube 使用簡單、廉價、通用的硬體,這一點和 Google 風格倒是一致。至於維護手段,也都是常見的工具,如 rsync, SSH 等,只不過人家更手熟罷了。

3. 資料庫

YouTube 用 MySQL 存儲元數據--用戶信息、視頻信息什麼的。資料庫伺服器曾經一度遇到 SWAP 顛簸的問題,解決辦法是刪掉了 SWAP 分區! 管用。

最初的 DB 只有 10 塊硬碟,RAID 10 ,後來追加了一組 RAID 1。夠省的。這一波 Web 2.0 公司很少有用 Oracle 的(我知道的只有 Bebo,參見這里). 在擴展性方面,路線也是和其他站點類似,復制,分散 IO。最終的解決之道是"分區",這個不是資料庫層面的表分區,而是業務層面的分區(在用戶名字或者 ID 上做文章,應用程序控制查找機制)

YouTube 也用 Memcached.

『拾』 大型網站技術架構 核心原理與案例分析 有用么

編輯推薦
編輯
本書作者是阿里巴巴網站構建的親歷者,擁有核心技術部門的一線工作經驗,直接體驗了大型網站構建與發展過程中的種種生與死,蛻與變,見證了一個網站架構從幼稚走向成熟穩定的歷程。
沒有晦澀難懂的術語,沒有詰屈聱牙的文句,沒有故弄玄虛的觀點……
明明白白的語句,清清楚楚的文法,干凈利落的建議——讓讀者直接體會網站架構的緊要處,不容馬虎的關鍵點——這恰好是一個優秀的網站架構所必備的要素。
如果說「水不在深,有龍則靈」,那麼對於想了解網站架構的讀者而言,這本書恰好是「書不在多,有它則行!」
還猶豫什麼呢?

內容簡介
編輯
本書通過梳理大型網站技術發展歷程,剖析大型網站技術架構模式,深入講述大型互聯網架構設計的核心原理,並通過一組典型網站技術架構設計案例,為讀者呈現一幅包括技術選型、架構設計、性能優化、Web 安全、系統發布、運維監控等在內的大型網站開發全景視圖。
本書不僅適用於指導網站工程師、架構師進行網站技術架構設計,也可用於指導產品經理、項目經理、測試運維人員等了解網站技術架構的基礎概念;還可供包括企業系統開發人員在內的各類軟體開發從業人員借鑒,了解大型網站的解決方案和開發理念。

閱讀全文

與大型網站核心架構如何解決相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:527
電腦無法檢測到網路代理 瀏覽:1376
筆記本電腦一天會用多少流量 瀏覽:595
蘋果電腦整機轉移新機 瀏覽:1380
突然無法連接工作網路 瀏覽:1077
聯通網路怎麼設置才好 瀏覽:1230
小區網路電腦怎麼連接路由器 瀏覽:1054
p1108列印機網路共享 瀏覽:1215
怎麼調節台式電腦護眼 瀏覽:717
深圳天虹蘋果電腦 瀏覽:953
網路總是異常斷開 瀏覽:617
中級配置台式電腦 瀏覽:1012
中國網路安全的戰士 瀏覽:637
同志網站在哪裡 瀏覽:1420
版觀看完整完結免費手機在線 瀏覽:1464
怎樣切換默認數據網路設置 瀏覽:1113
肯德基無線網無法訪問網路 瀏覽:1290
光纖貓怎麼連接不上網路 瀏覽:1497
神武3手游網路連接 瀏覽:969
局網列印機網路共享 瀏覽:1005