免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

門戶網站開發_大型門戶網站建設結構

2023-10-31    分類: 網站建設

千萬人同時訪問的網站,一般是有很多個數據庫同時工作,說明白一點就是數據庫集群和并發控制,這樣的網站實時性也是相對的。這些網站都有一些共同的特點:數據量大,在線人數多,并發請求多,pageview高,響應速度快。總結了一下各個大型門戶網站的架構,主要提高效率及穩定性的幾個地方包括:

1、程序

程序開發是一方面,系統架構設計(硬件+網絡+軟件)是另一方面。

軟件架構方面,做網站首先需要很多web服務器存儲靜態資源,比如圖片、視頻、靜態頁等,千萬不要把靜態資源和應用服務器放在一起。

一個好的程序員寫出來的程序會非常簡潔、性能很好,一個初級程序員可能會犯很多低級錯誤,這也是影響網站性能的原因之一。

網站要做到效率高,不光是程序員的事情,數據庫優化、程序優化這是必須的,在性能優化上要數據庫和程序齊頭并進!緩存也是兩方面同時入手。第一,數據庫緩存和數據庫優化,這個由dba完成(而且這個有非常大的潛力可挖,只是由于我們都是程序員而忽略了他而已)。第二,程序上的優化,這個非常的有講究,比如說重要一點就是要規范SQL語句,少用in 多用or,多用preparestatement 存儲過程,另外避免程序冗余如查找數據少用雙重循環等。另外選用優秀的開源框架加以支持,我個人認為中后臺的支持是最最重要的,可以選取spring+ibatis。因為ibatis直接操作SQL并有緩存機制。spring的好處就不用我多說了,IOC的機制可以避免new對象,這樣也節省開銷。據我分析,絕大部分的開銷就是在NEW的時候和連接數據庫時候產生的,請盡量避免。另外可以用一些內存測試工具來做一個demo說明hibernate和ibatis誰更快!前臺你想用什么就用什么,struts,webwork都成,如果覺得自己挺牛X可以試試用tapestry。

用數據庫也未必不能解決訪問量巨大所帶來的問題,作成靜態文件硬盤的尋址時間也未必少于數據庫的搜索時間,當然對資料的索引要下一翻工夫。我自己覺得門戶往往也就是當天、熱門的資料點擊率較高,將其做緩存最多也不過1~2G的數據量吧,

通常是采用oracle存儲過程+2個weblogic,更新機制也幾乎一樣每簽發一條新聞,就會生成靜態頁面,然后發往前端的web服務器,前端的web都是做負載均衡的。另外還有定時程序,每5-15分鐘自動生成一次。在發布新聞的同時將數據緩存。當然緩存也不會越來越大,在個特定的時間段(如凌晨)刪除過期的數據。做一個大的網站遠沒有想象中那么簡單,服務器基本就要百十個的。

這樣可以大大增加一臺計算機的處理速度,如果一臺機器處理不了,可以用httpserver集群來解決問題了。

2、網絡

中國的網絡分南電信和北網通,訪問的ip就要區分南北進入不同的網絡。

3、集群

通常會使用CDN與GSbL與DNS負載均衡技術,每個地區一組前臺服務器群,比如新浪和搜狐,而網易,百度使用了DNS負載均衡技術,每個頻道一組前臺服務器;一搜使用了DNS負載技術,所有頻道共用一組前臺服務器集群。

網站使用基于Linux集群的負載均衡,失敗恢復,包括應用服務器和數據庫服務器,基于linux-ha的服務狀態檢測及高可用化。

應用服務器集群可以采用apache+tomcat集群和weblogic集群等;web服務器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根據情況選擇。

4、數據庫

因為是千萬人同時訪問的網站,所以一般是有很多個數據庫同時工作的,說明白一點就是數據庫集群和并發控制,數據分布到地理位置不同的數據中心,以免發生斷電事故。

主流的數據庫有Sun的是MySQL和Oracle。

Oracle是一款優秀的、廣泛采用的商業數據庫管理軟件。有很強大的功能和安全性,可以處理相對海量的數據。而MySQL是一款非常優秀的開源數據庫管理軟件,非常適合用多臺pC Server組成多點的存儲節點陣列(這里我所指的不是MySQL自身提供的集群功能),每單位的數據存儲成本也非常的低廉。用多臺pC Server安裝MySQL組成一個存儲節點陣列,通過MySQL自身的Replication或者應用自身的處理,可以很好的保證容錯(允許部分節點失效),保證應用的健壯性和可靠性。可以這么說,在關系數據庫管理系統的選擇上,可以考慮應用本身的情況來決定。

MySQL數據庫服務器的master-slave模式,利用數據庫服務器在主從服務器間進行同步,應用只把數據寫到主服務器,而讀數據時則根據負載選擇一臺從服務器或者主服務器來讀取,將數據按不同策略劃分到不同的服務器(組)上,分散數據庫壓力。

另外還有一點的是,那些網站的靜態化網頁并不是真的,而是通過動態網頁與靜態網頁網址交換所出現的假象,這可以用urlrewrite這樣的開源網址映射器實現。這樣的網站實時性也是相對的,因為在數據庫復制數據的時候有一個過程,一般在技術上可以用到hibernate和ecache,但是如果要使網站工作地更好,可以使用EJb和websphere,weblogic這樣大型的服務器來支持,并且要用oracle這樣的大型數據庫。

大型門戶網站不建議使用Mysql數據庫,除非你對Mysql數據的優化非常熟悉。Mysql數據庫服務器的master-slave模式,利用數據庫服務器在主從服務器間進行同步,應用只把數據寫到主服務器,而讀數據時則根據負載選擇一臺從服務器或者主服務器來讀取,將數據按不同策略劃分到不同的服務器(組)上,分散數據庫壓力。

大型網站要用oracle,數據方面操作盡量多用存儲過程,絕對提升性能;同時要讓DbA對數據庫進行優化,優化后的數據庫與沒優化的有天壤之別;同時還可以擴展分布式數據庫,以后這方面的研究會越來越多;

5、頁面

從開始就考慮使用虛擬存儲/簇文件系統。它能讓你大量并行IO訪問,而且不需要任何重組就能夠增加所需要的磁盤。

頁面數據調用更要認真設計,一些數據查詢可以不通過數據庫的方式,實時性要求不高的可以使用lucene來實現,即使有實時性的要求也可以用lucene(基于Java的全文索引/檢索引擎),lucene+compass還是非常優秀的。

新聞類的網站可以用靜態頁存儲,采用定時更新機制減輕服務器負擔;首頁每個小模塊可以使用oscache緩存,這樣不用每次都拉數據。

前端的基于靜態頁面緩存的web加速器,主要應用有squid等。squid 將大部分靜態資源(圖片,js,css等)緩存起來,直接返回給訪問者,減少應用服務器的負載

網站的靜態化網頁并不是真的,而是通過動態網頁與靜態網頁網址交換做出現的假象,這可以用urlrewrite這樣的開源網址映射器實現,后綴名為htm或者html并不能說明程序生成了靜態頁面,可能是通過url重寫來實現的,為的只不過是在搜索引擎中提升自己網站的覆蓋面積罷了。

生成靜態頁面的服務器和www服務器是兩組不同的服務器,頁面生成后才會到www服務器,一部分數據庫并不是關系數據庫,這樣更適合信息衍生,www、mail服務器、路由器多,主要用負載平衡解決訪問瓶頸。

◎ 靜態頁面的缺點:

1) 增加了程序的復雜度

2) 不利于管理資料

3) 速度不是最快

4) 傷硬盤

6、緩存

從一開始就應該使用緩存,高速緩存是一個更好的地方存儲臨時數據,比如Web站點上跟蹤一個特定用戶的會話產生的臨時文件,就不再需要記錄到數據庫里。

不能用lucene實現的可以用緩存,分布式緩存可以用memcached,如果有錢的話用10來臺機器做緩存,> 10G的存儲量相信存什么都夠了;如果沒錢的話可以在頁面緩存和數據緩存上下功夫,多用OSCACHE和EHCACHE,SWARMCACHE也可以,不過據說同步性不是很好;

可以使用Memcache(分布式緩存)進行緩存,用大內存把這些不變的數據全都緩存起來,而當修改時就通知cache過期,memcache是LJ開發的一款分布式緩存產品,很多大型網站在應用,我們可以把Cache Server與App Server裝在一起。因為Cache Server對CpU消耗不大,而有了Cache Server的支援,App Server對內存要求也不是太高,所以可以和平共處,更有效的利用資源。

單機內存緩存、文件緩存、數據庫緩存等的策略都是可以很簡單的實現的,例如可以使用微軟的Caching Application block,但如何在集群環境中使多個緩存、多層緩存并保存同步是個重大問題。大型網站一般都使用緩存服務器群,并使用多層緩存。業內最常用的有:

Squid cache,Squid服務器群,把它作為web服務器端前置cache服務器緩存相關請求來提高web服務器速度。Squid將大部分靜態資源(圖片,js,css等)緩存起來,直接返回給訪問者,減少應用服務器的負載

memcache,memcache服務器群,一款分布式緩存產品,很多大型網站在應用; 它可以應對任意多個連接,使用非阻塞的網絡IO。由于它的工作機制是在內存中開辟一塊空間,然后建立一個Hashtable,Memcached自管理這些Hashtable。因為通常網站應用程序中最耗費時間的任務是數據在數據庫的檢索,而多個用戶查詢相同的SQL時,數據庫壓力會增大,而通過memcache的查詢緩存命中,數據直接從memcache內存中取,每次緩存命中將替換到數據庫服務器的一次往返,到達數據庫服務器的請求更少,間接地提高了數據庫服務器的性能,從而使應用程序運行得更快。它通過基于內存緩存對象來減少數據庫查詢的方式改善網站系統的反應,其最吸引人的一個特性就是支持分布式部署。有關memcache,以下文章可以參考:參考1,參考2,參考3官方站點。

e-Accelerator,比較特殊,pHp的緩存和加速器。是一個免費開源的pHp加速、優化、編譯和動態緩存的項目,它可以通過緩存pHp代碼編譯后的結果來提高pHp腳本的性能,使得一向很復雜和離我們很遠的 pHp腳本編譯問題完全得到解決。通過使用eAccelerator,可以優化你的pHp代碼執行速度,降低服務器負載,可以提高pHp應用執行速度最高達10倍。

7、服務器操作系統與Web服務器

最底層首先是操作系統。好的操作系統能提高好的性能、穩定性和安全性,而這些對大型網站的性能、安全性和穩定性都是至關重要的。

淘寶網(阿里巴巴): Linux操作系統 + Web 服務器: Apache

新浪:FreebSD + Web 服務器:Apache

Yahoo:FreebSD + Web 服務器:自己的

Google: 部分Linux + Web 服務器:自己的

百度:Linux + Web 服務器: Apache

網易:Linux + Web 服務器: Apache

ebay: Windows Server 2003/8 (大量) + Web 服務器:Microsoft IIS

MySpace: Windows Server 2003/8 + Web 服務器:Microsoft IIS

由此可見,開源操作系統做Web應用是選已經是一個既定事實。在開源操作系統中Linux和FreebSD差不太多,很難說哪個一定比另外一個要優秀很多、能夠全面的超越對手,應該是各有所長。但熟悉Linux的技術人員更多些,利于系統管理、優化等,所以Linux使用更廣泛。而Windows Server和IIS雖然有的網站使用,但不開源,而且需要購買微軟的一系列應用產品,限制了其使用。總之,開源操作系統,尤其是Linux做Web應用是選已經是一個既定事實。

常用的系統架構是:

Linux + Apache + pHp + MySQL

Linux + Apache + Java (WebSphere) + Oracle

Windows Server 2003/2008 + IIS + C#/ASp.NET + 數據庫

以上一些不太成熟的想法,可以從某一個層次開始,逐步細化,把產品的性能指標提高上去。

本文標題:門戶網站開發_大型門戶網站建設結構
標題網址:http://m.newbst.com/news41/291691.html

成都網站建設公司_創新互聯,為您提供微信公眾號建站公司服務器托管微信小程序網站維護商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司