<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vickzhu

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      151 隨筆 :: 0 文章 :: 34 評論 :: 0 Trackbacks
    千萬人同時訪問的網站,一般是有很多個數據庫同時工作,說明白一點就是數據庫集群和并發控制,這樣的網站實時性也是相對的。這些網站都有一些共同的特點:數據量大,在線人數多,并發請求多,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的數據量吧,舉個例子:

    拿網易新聞來http://news.163.com/07/0606/09/3GA0D10N00011229.html

      格式化一下,方便理解:http://域名/年/月日/新聞所屬分類/新聞ID.html

      可以把當天發布的、熱門的、流攬量大的作個緩寸,用hashtable(key:年-月-日-分類-ID,value:新聞對象),靜態將其放到內存(速度絕對快過硬盤尋址靜態頁面)。

    通常是采用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、數據庫

      因為是千萬人同時訪問的網站,所以一般是有很多個數據庫同時工作的,說明白一點就是數據庫集群和并發控制,數據分布到地理位置不同的數據中心,以免發生斷電事故。另外還有一點的是,那些網站的靜態化網頁并不是真的,而是通過動態網頁與靜態網頁網址交換做出現的假象,這可以用urlrewrite 這樣的開源網址映射器實現。這樣的網站實時性也是相對的,因為在數據庫復制數據的時候有一個過程,一般在技術上可以用到hibernate和 ecache,但是如果要使網站工作地更好,可以使用EJB和websphere,weblogic這樣大型的服務器來支持,并且要用oracle這樣的大型數據庫。

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

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


      5、頁面

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

      頁面數據調用更要認真設計,一些數據查詢可以不通過數據庫的方式,實時性要求不高的可以使用lucene來實現,即使有實時性的要求也可以用lucene,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與AppServer裝在一起。因為Cache Server對CPU消耗不大,而有了Cache Server的支援,App Server對內存要求也不是太高,所以可以和平共處,更有效的利用資源。
    posted on 2009-11-30 16:50 筱 筱 閱讀(273) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲激情黄色小说| 亚洲精品国产首次亮相| 国产在线国偷精品产拍免费| 久久亚洲中文字幕无码| 亚洲日韩精品一区二区三区无码 | 一区二区三区免费电影| 国产亚洲美女精品久久久久狼| 日本h在线精品免费观看| 无码一区二区三区亚洲人妻| 亚洲av永久无码精品表情包| 免费看片免费播放| 很黄很污的网站免费| 亚洲精品动漫免费二区| 亚洲人成在线电影| 亚洲av成人一区二区三区在线观看 | 97在线视频免费公开视频| 亚洲综合av一区二区三区不卡| 在线播放亚洲第一字幕| 久久WWW免费人成人片| 免费看一区二区三区四区| 亚洲丰满熟女一区二区哦| 亚洲AV成人精品网站在线播放| 日韩免费观看一级毛片看看| 97视频免费观看2区| 一级黄色片免费观看| 亚洲一区二区三区高清在线观看 | 国产亚洲精品久久久久秋霞 | 色妞WWW精品免费视频| 久久青草免费91线频观看不卡| 成a人片亚洲日本久久| 亚洲国产日韩在线成人蜜芽 | 久久亚洲国产成人亚| 亚洲国产91精品无码专区| 国产精品视频免费一区二区| 无码人妻一区二区三区免费n鬼沢| 免费精品国产自产拍在线观看| 亚洲av极品无码专区在线观看| 久久精品亚洲综合| 国产亚洲精aa成人网站| 五月天婷亚洲天综合网精品偷| 成年18网站免费视频网站 |