乾貨分享!設計一個系統架構時怎麼去做性能優化?

概述

設計系統架構中最核心

的幾個要素包括:性能可用性伸縮性擴展性安全性,而性能又是其中最為重要的,本篇簡要說下網站性能優化方面所需做的一些事情;


1. 網站性能問題概要

乾貨分享!設計一個系統架構時怎麼去做性能優化?

2. 網站性能測試

乾貨分享!設計一個系統架構時怎麼去做性能優化?

站在開發、測試人員角度,性能測試的主要指標:響應時間、併發數、吞吐量、服務器各性能指標;

乾貨分享!設計一個系統架構時怎麼去做性能優化?


3. 性能優化

根據性能測試,定位產生性能問題的具體原因,找到瓶頸點,逐步優化;

一般性能優化分為Web前端性能優化、應用服務器性能優化、存儲服務器性能優化(數據庫優化的太多點了,後面再講)

Web前端性能優化

1. 瀏覽器訪問優化

乾貨分享!設計一個系統架構時怎麼去做性能優化?

2. CDN加速

上面說了,CDN的本質仍然是緩存,將數據緩存在離用戶最近的機房,提升訪問速度,降低中心機房服務器的壓力;

CDN能夠緩存的一般都是靜態資源,如圖片,文件,視頻,CSS,JS等,將訪問頻度高的靜態資源放到CDN中;

3. 反向代理

乾貨分享!設計一個系統架構時怎麼去做性能優化?

推薦用nginx來做緩存和負載,跟tomcat或其他中間件做動靜分離。

應用服務器性能優化

1. 分佈式緩存

網站性能優化第一定律:優先考慮使用緩存優化性能

緩存的本質是內存Hash表,數據以Key/Value的形式存儲在Hash表中,時間複雜度O(1),Hash表存儲如下圖所示:

乾貨分享!設計一個系統架構時怎麼去做性能優化?

hash表存儲

只要是緩存,就會涉及到緩存未命中與緩存失效問題,因此,緩存中的數據一般都是讀取比例很高,很少變化的數據;

2. 異步操作

乾貨分享!設計一個系統架構時怎麼去做性能優化?

可使用消息隊列將請求調用異步化,發送的請求發送給消息隊列後立即返回,再由消息隊列的消費者進程從消息隊列中獲取數據,異步寫入數據庫;

在高併發情況下,使用消息隊列,能夠有效降低數據庫服務器壓力,降低用戶端響應延時;

消息隊列可以消除高併發下的訪問高峰,消峰效果如下圖所示:

乾貨分享!設計一個系統架構時怎麼去做性能優化?

3. 使用集群

在高併發下,可使用負載均衡技術構建應用服務器集群,將請求分發到多臺應用服務器來處理,降低單臺服務器壓力,提升響應速度;

4. 代碼優化

乾貨分享!設計一個系統架構時怎麼去做性能優化?

存儲服務器性能優化

在很多情況下,磁盤的訪問速度成為整個系統的瓶頸,而且磁盤中的數據是網站最重要的資產,故磁盤的容錯性和可用性都至關重要;

  • 適當使用SSD;
  • 合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
  • 合理使用HDFS等分佈式文件系統

後面會分享更多數據庫優化的一些點,怎麼從其他角度去優化的內容,感興趣的朋友可以關注下~


分享到:


相關文章: