開年比較空,抽時間寫個博文,總結下本身工做裏的一些應對網站訪問壓力的技術方案。css
本身項目如今大概一天50W的pv。已從前端到後端的順序總結下本身用的一些方案。前端
一. 前端頁面:mysql
1.首先減小資源的大小,能用小圖,就用小圖。引用第三方js用mini 壓縮版的js。nginx
2.用CDN減小服務器訪問的壓力,將圖片,css,js文件放到CDN上。用戶從cdn緩存獲取資源的速度遠快與訪問服務器獲取的速度。(還有網絡關係,cdn網絡快)redis
3.耗時長的js能夠異步請求後加載。sql
二.服務器負載均衡:數據庫
負載均衡解決方案有不少,不差錢有不差錢的,屌絲有屌絲的方案。我用的是nginx負載均衡。後端
準備一臺專用的nginx負載均衡服務器,用它來負載均衡,轉發給5臺業務服務器。(開發須要單臺調試時,用hosts指向單臺)緩存
三.服務器緩存服務器
由於是分佈式架構,服務器緩存主要用了memcached和redis(各配置2臺,一臺主服務,一臺備用)。memcached和redis都有各自的.net版本,用起來也不復雜。
具體選擇看業務需求,我基本上70%用memcached,須要長時間緩存的用redis。
memcached對於中文支持很差,要存中文數據,先將中文base64編碼在存入,讀取時候作base64解碼。
四.數據庫
我主要使用sqlserver,少許項目用mysql。50W訪問量單臺sqlserver服務器徹底能夠支持的住。儘可能減小事務,業務須要用消息隊列後補處理。
大任務網站不處理,用其餘程序處理(響應要求高的修改操做,先修改redis緩存,而後由異步程序操做數據庫。)
操做時候記錄日誌,數據庫崩潰或網站崩潰能夠讀日誌文件回補數據操做。(通常服務器掛了不會好久,超過一天不能恢復日子基本無法活了。。真這樣在看具體狀況找解決方案)