大型網站核心架構要素

1.性能——響應時間決定用戶html

問題本質——用戶視角的網站性能:用戶的感覺包括用戶計算機和網站服務器通訊的時間網站服務器處理的時間用戶計算機瀏覽器構造請求解析響應數據的時間linux

即影響用戶體驗的有用戶計算機的性能網絡運營商寬帶服務的差別網站服務器性能(也跟網站代碼實現有關)用戶使用瀏覽器解析html的速度算法

開發人員視角的網站性能指標有:sql

(1)響應時間:從請求到收到最後響應數據的時間(若是測試的目標程序自己須要花費的時間極少,通常經過測試屢次執行須要的總響應時間除以次數)。數據庫

(2)併發數:系統同時可以處理請求的數目 ,反映系統的負載特性(經過多線程模擬併發的方式,爲了模擬實際用戶,兩次請求之間加入一個隨機等等時間,這個時間間被稱做思考時間)。瀏覽器

注:網站系統用戶數>>網站在線用戶數>>網站併發用戶數緩存

(3)吞吐量:單位時間內系統處理的請求數,體現系統的總體處理能力。安全

注:對於網站,吞吐量的衡量能夠用‘請求數/秒’,‘頁面數/秒’,‘訪問人數/天’,‘處理的業務數/小時’等,常量化指標有:TPS(每秒事務數),HPS(每秒HTTP請求數),QPS(每秒查詢數)等。服務器

(4)性能計數器:描述服務器或操做系統性能的一些數據指標,包括System Load、對象與線程數、內存使用、CPU使用、磁盤與網絡I/O等,這些指標也是系統監控的重要參數,能夠對這些指標設置報警閾值,當監控系統發現性能計數器超過閾值時,就會報警。網絡

注:System Load,即系統負載,指當前被CPU執行和等待被執行的進程數總和,反映系統忙閒程度(多核CPU狀況下,完美狀況是全部CPU都在使用,沒有進程在等待處理,因此Load的理想值是CPU數目,linux系統中用top命令查看,顯示的三個浮點數分別表示最近1分鐘,10分鐘,15分鐘的運行隊列平均進程數)

性能測試方法:見性能測試

主要優化手段: 

(1)瀏覽器端: 

瀏覽器緩存

使用頁面壓縮

合理佈局頁面

減小Cookie傳輸

(2)CDN:將網站靜態內容分發至離用戶最近的網絡服務商機房,讓用戶經過最短訪問路徑獲取數據。

(3)反向代理服務器:緩存熱點文件,加快請求響應速度,減輕應用服務器壓力

(4)應用服務器端:

服務器本地緩存

分佈式緩存

③經過異步操做將請求發送至消息隊列等待後續處理,加快請求響應及實現削峯;

集羣

(5)代碼層面:多線程改善內存管理等。

(6)數據庫服務器端:索引緩存SQL優化,另外,方興未艾的NoSQL數據庫經過優化數據模型、存儲結構、伸縮性等手段在性能方面的優點日趨明顯

 

衡量網站性能的一些指標:響應時間TPS系統性能計數器等。經過測試這些指標以肯定系統設計是否達到目標。這些目標也是網站監控的重要參數,經過監控這些指標能夠分析系統瓶頸,預測網站容量,並對異常指標進行報警,保障系統可用性

對於網站而言,性能符合預期僅僅是必要條件,由於沒法預知網站可能會面臨的訪問壓力,因此必需要考察系統在高併發訪問狀況下,超出負載設計能力的狀況下可能會出現的性能問題

網站須要長時間持續運行,還必須保證系統在持續運行且訪問壓力不均勻的狀況下保持穩定的性能特性

 

2.可用性——你能保證幾個9?

網站高可用設計的前提是必然會出現服務器宕機,而高可用設計的目標就是當服務器宕機的時候,服務或者應用依然可用。

 

提升可用性的方法:

(1)主要手段——冗餘:

①應用服務器:多臺應用服務器經過負載均衡設備組成一個集羣共同對外提供服務,任何一臺服務器宕機,只需把請求切換便可(前提是應用服務器沒保存會話信息)

②存儲服務器:對數據進行實時備份,當服務器宕機時將數據訪問轉移到可用服務器上,並進行數據恢復,以保證其餘服務器宕機時數據依然可用

除了上述,還須要軟件開發過程的質量保證,經過預發佈驗證、自動化測試、自動化發佈、灰度發佈等手段,減小將故障引入線上環境的可能,避免故障範圍擴大

 

3.伸縮性:經過不斷向集羣中添加服務器的手段來緩解不斷上升的用戶併發訪問壓力和不斷增加的數據存儲需求

 

(1)衡量標準:

  ①是否能夠多臺服務器構建集羣?

  ②是否容易向集羣中添加新服務器?

  ③加入服務器後是否能提供無差異服務?

       ④集羣中可容納的服務器數量是否有限制?

(2)主要手段:

  ①應用服務器:使用合適的負載均衡設備(應用服務器上不保存數據);

  ②緩存服務器:加入新服務器可能使緩存路由失效,對嚴重依賴緩存的應用可能會致使崩潰,因此須要改進緩存路由算法保證緩存數據的可訪問性;

  ③數據庫服務器:關係數據庫支持數據複製,主從熱備,可是很難作到大規模集羣的可伸縮性。因此集羣伸縮性方案必須在數據庫以外實現,經過路由區分等手段將部署有多個數據庫的服務器組成一個集羣;nosql對伸縮性的支持一般都很好。

 

4.擴展性——不痛不癢新業務就上線了

衡量標準:增長新業務時是否對現有產品透明無影響,不須要任何改動或者不多改動既有業務功能就能夠上線新產品。

主要手段:

(1)事件驅動架構:一般利用消息隊列實現,將消息產生和消息處理分開,能夠透明地增長生產者任務或消費者任務

(2)分佈式服務:將業務和可複用服務分離,經過分佈式服務框架調用。

5.安全性

安全架構:保護網站不受惡意訪問和攻擊,保護網站重要數據不被竊取

衡量標準:針對現存和潛在的各類攻擊與竊密手段,是否有可靠的應對策略。

相關文章
相關標籤/搜索