針對web高併發量的處理

科技小能手發表於2017-11-12

針對高併發量的處理 一個老生常談的話題了 至於需要運維支援的那些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


相關文章