針對高并發量的處理 一個老生常談的話題了 至于需要運維支援的那些cdn、負載均衡神馬的就不贅述了 你們都懂的
蟲子在此博文隻講一些從程式角度出發的一些不錯的解決方案。 至于從資料庫角度的性能方案、蟲子另開博文。
1. 首推靜态化 推薦指數五顆星 滿星五顆
隻要是大型網際網路應用基本上離不開這個概念,IIS自帶的僞靜态化不談,但是想做好靜态化并不是一個容易的過程 動态和靜态之間的取舍需要用一個平衡的戰略眼光來看待
舉個例子 當初在盛大遊戲的時候 遭遇永恒之塔aion上線,悲摧、血淚,周末過去加班,目的、論壇必須抗住壓力。好吧,讓我重構整個論壇是不可能了,怎麼整,靜态化。如何靜态化,全站!!!忽悠、大忽悠,爬網爬整個論壇麼,非也。說是全站、其實也就是首頁、版面頁、熱門闆塊的前20頁等,開多個線程一起跑、擔心線程資源問題就copy下程式,複制下來改個參數開多個程序跑。靜态站完成了、然後怎麼辦,使用者怎麼互動。亮點來了,其實我們是6台動态站、1台靜态站,因為大部分使用者隻看看不說話,是以我們以靜态站為入口,如果使用者産生互動 我們就把他們甩到動态站去。oh yeah,似乎也沒那麼複雜。至于一般的網際網路應用其實一般首頁靜态化就足夠了。
2.異步請求
關于ajax一般不是新手的話都已經很了解了,Asynchronous JavaScript and XML。大多數人可能把ajax看成是提供使用者體驗的方案。實際上ajax對于減輕伺服器壓力也是很有幫助的。ajax在服務端傳回來的僅僅隻是浏覽器端需要的資料,比如你的select,傳回的是僅需要一串json而不會傳回一大堆多餘的html标簽。這樣能減輕網絡負載。增大網絡吞吐率。
目前蟲子的東家,在大型B2B站點上這個方案用的尤為出色。
3.并行計算
蟲子以前的博文中介紹過cuda并行架構,現在微軟4.0也已經提出了并行計算。不過還沒深入研究,當然并不是一個站點的所有子產品都适合并行計算,僅限于查詢、行為分析等。
4.緩存什麼就不多扯了
5.文本存儲
對于一些常用的資源可以在站點啟動初,就形成固化資源、定時維護。例如web安全的規則檔案。
6.動靜分離
圖檔資源、css、視訊的等等靜态資源切換到獨立伺服器。
7.使用者引導
社會學方案,哈哈
8.減少session的使用 你們也懂的 不多說
9.無關安全的計算可以放在用戶端
例如層級跳轉、使用者調查中根據前文選擇的後續命題選擇等等 可以用js實作
10.還有很多 .....
本文轉自 熬夜的蟲子 51CTO部落格,原文連結:http://blog.51cto.com/dubing/712422