開年比較空,抽時間寫個博文,總結下自己工作里的一些應對網站訪問壓力的技術方案。
自己項目現在大概一天50W的pv。已從前端到后端的順序總結下自己用的一些方案。
一. 前端頁面:
1.首先減少資源的大小,能用小圖,就用小圖。引用第三方js用mini 壓縮版的js。
2.用CDN減少服務器訪問的壓力,將圖片,css,js文件放到CDN上。用戶從cdn緩存獲取資源的速度遠快與訪問服務器獲取的速度。(還有網絡關系,cdn網絡快)
3.耗時長的js可以異步請求后加載。
二.服務器負載均衡:
負載均衡解決方案有很多,不差錢有不差錢的,屌絲有屌絲的方案。我用的是nginx負載均衡。
準備一臺專用的nginx負載均衡服務器,用它來負載均衡,轉發給5臺業務服務器。(開發需要單臺調試時,用hosts指向單臺)
三.服務器緩存
因為是分布式架構,服務器緩存主要用了memcached和redis(各配置2臺,一臺主服務,一臺備用)。memcached和redis都有各自的.net版本,用起來也不復雜。
具體選擇看業務需求,我基本上70%用memcached,需要長時間緩存的用redis。
memcached對于中文支持不好,要存中文數據,先將中文base64編碼在存入,讀取時候做base64解碼。
四.數據庫
我主要使用sqlserver,少量項目用mysql。50W訪問量單臺sqlserver服務器完全可以支持的住。盡量減少事務,業務需要用消息隊列后補處理。
大任務網站不處理,用其他程序處理(響應要求高的修改操作,先修改redis緩存,然后由異步程序操作數據庫。)
操作時候記錄日志,數據庫崩潰或網站崩潰可以讀日志文件回補數據操作。(一般服務器掛了不會很久,超過一天不能恢復日子基本沒法活了。。真這樣在看具體情況找解決方案)
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VeVb武林網!
新聞熱點
疑難解答
圖片精選