1. 程式人生 > >高性能系統架構分析

高性能系統架構分析

存在 tail lis cdn加速 速度 blog 好的 可能 功能

什麽樣的系統架構算是高性能的呢?我的理解是它是以用戶為中心,提供快速的網頁訪問體驗。主要參數有較短的響應時間,較大的並發處理能力,較高的吞吐量,穩定的性能參數。

具體優化的方向可分為前端優化,應用層優化,代碼層優化,存儲層優化。

一、前端優化

1.瀏覽器訪問優化

①減少http請求.

在服務器端,每次Http請求都需要啟動獨立的線程去處理,這些通信和服務的開銷都很昂貴,減少HTTP請求的數目可有效提高訪問性能跟。減少HTTP請求的主要手段是合並CSS、合並Javascript、合並圖片。

②使用瀏覽器緩存.

將靜態文件緩存在瀏覽器中,可以極好的改善性能。

③啟用壓縮.

在服務器端對文件進行壓縮,在瀏覽器端對文件進行解壓縮,可以有效減少通信傳輸的數據量。但是壓縮對服務器和瀏覽器產生一定的壓力,在通信寬帶良好,而服務器資源不足的情況下要權衡考慮。

④CSS放在頁面最上面、Javascript放在頁面最下面

⑤減少Cookie傳輸.

一方面,Cookie包含在每次請求和相應中,太大的Cookie會嚴重影響數據傳輸,因此盡量減少Cookie中傳輸的數據量。另一方面,對於某些靜態資源訪問,發送Cookie沒有意義,可以考慮靜態資源使用獨立域名訪問,避免請求靜態資源時發送Cookie,減少Cookie傳輸次數。

⑥JS異步.

JS是單線程的語言,所謂“單線程”就是一根筋,對於拿到的程序,一行一行的執行,上面的執行為完成,就傻傻的等著。因此在瀏覽器端運行的js,可能會有大量的網絡請求,而一個網絡資源啥時候返回,這個時間是不可預估的。這種情況也要傻傻的等著、卡頓著、啥都不做嗎?———— 那肯定不行。常用的ajax請求就是異步的。關於js異步

⑦CDN加速.

技術分享圖片

CDN能夠緩存的一般是靜態資源,如圖片、文件、css、script腳本、靜態網頁等。這些文件的訪問頻率很高,將他們緩存在CDN服務器上可以極大改善網頁打開速度。

⑧反向代理.

技術分享圖片

反向代理服務器也具有保護網站安全的作用,來自互聯網的訪問請求都必須經過代理服務器,相當於在Web服務器和可能的網絡攻擊之間建立了一個屏障。反向代理服務器也可以通過配置緩存功能加速Web請求,靜態內容被緩存在反向代理服務器上,當用戶再次訪問靜態內容是時,就可以直接從反向代理服務器返回。此外,反向代理也可以實現負載均衡的功能,而通過負載均衡構建的應用集群可以提高系統總體處理能力,進而改善網站高並發情況下的性能。
具體參見https://www.cnblogs.com/wangfupeng1988/p/6513070.html

二、應用層優化

存放網站業務處理微服務模塊的服務器,使用緩存(例如賬戶權限、token信息、字典數據的緩存),異步(結合消息中間件,例如給手機發送報警信息,把消息發給中間件就不管了),集群(利用負載均衡技術使得訪問者可以有良好的訪問體驗)。

三、代碼優化

①合理使用多線程
②資源復用
對象池,線程池等
③良好的數據結構
對於插入和刪除多余查找的場景,使用LinkedList要由於ArrayList,具體多研究研究java的集合類,或者看看http://blog.csdn.net/jh19900712/article/details/24786159
④jvm調優
http://www.importnew.com/16327.html
http://www.importnew.com/22434.html
⑤單例

四、存儲優化

①緩存
②固態硬盤
③分布式存儲(HDFS)
④NOSQL

高性能系統架構分析