如何處理大流量高併發
阿新 • • 發佈:2018-12-27
1.動靜分離。
將網站中的靜態資源單獨拆分出來, 比如 css, js, 圖片, 視訊資源單獨儲存在一臺伺服器上, 或者直接使用雲端儲存平臺, 七牛雲或者阿里雲之類的, 這樣能有效的降低主伺服器的執行壓力
2.CDN加速。
雲平臺提供 CDN 加速, 可以對資源進行全國伺服器節點的分發, 提高全國各地的訪問速度。
3.反向代理,負載均衡。
反向代理就是將使用者的請求, 分發到不同的 web 伺服器上, 進行處理, 降低單臺伺服器的壓力, 負載均衡則是根據 web 伺服器的效能進行請求的分配, 負載較小的多分配一些請求, 負載較大的小分配一下請求. nginx 就可以實現反向代理和負載均衡。
4.使用資料快取。
資料快取可以使用 memcache 和 redis 這樣的記憶體快取系統來實現, 將一些常用資料寫入到記憶體中, 從而提升響應的速度。
5.資料庫優化。
分庫分表,主從複製讀寫分離,中文分詞。
6.壓縮合並js css。
過多的 js 和 css 請求會消耗伺服器的資源. 可以藉助前端工具 webpack 來進行打包。
7.分散式叢集搭建。
將業務拆分到不同的伺服器下, 降低單臺伺服器壓力.例如使用者和商品功能拆分開。
8.頁面靜態化。
頁面靜態化其實是快取的一種實現, 將要返回的 HTML 內容預先寫入到一個檔案中, 訪問的時候可以直接返回該檔案中的內容。
9.防止外部盜鏈。
盜鏈是其他網站引用當前伺服器的資源, 比如css, js 和圖片,主要是圖片. 可以使用 refer 進行限制。
10.使用訊息佇列。
將請求的內容壓入到佇列中, 用另外的指令碼非同步處理請求, Redis 的列表結構就可以實現這個效果。