網站技術架構與效能優化,附高效能思維導圖

Java架構解析發表於2019-02-27
網站技術架構與效能優化,附高效能思維導圖

一).大型軟體系統的特點

1.高併發

2.高可用

3.海量資料

4.使用者分佈廣泛,網路情況複雜

5.安全環境惡劣

6.需求快速變更,釋出頻繁

二).大型網站架構發展歷程

1.應用服務和資料服務分離

2.大量使用快取改善網站效能(CDN加速、反向代理)

3.使用伺服器叢集改善網站併發能力

4.資料庫讀寫分離

5.分散式檔案(資料庫)系統

6.NoSql與非資料查詢技術(搜尋引擎)

7.業務拆分(橫向、縱向)

三).大型網站架構的價值觀

1.核心價值: 漸進式

2.主要動力: 業務發展

3.設計誤區:

1).一味追求大公司的解決方案

2).為了技術而技術(不管是否適用,追求時髦,什麼新用什麼)

3).企圖用技術解決所有問題(有時候好的業務架構要比技術架構更加重要)

四).技術架構要實現的目標(核心要素):

1.高效能

1).效能問題是網站優化升級的觸發器

2).前端常用優化方法:瀏覽器快取 頁面壓縮 合理佈局 減少cookie傳輸 CDN 反向代理

3).後臺常用優化方法: 伺服器本地快取 分散式快取 訊息佇列 叢集 資料庫優化手段(索引、快取、sql優化) NoSql

2.可用性

1).主要問題: 伺服器當機

2).解決手段: 冗餘備份

3.伸縮性

1).大型網站面臨的問題: 高併發訪問、海量資料儲存

2).解決手段:

構建叢集: 應用伺服器叢集、快取伺服器叢集、資料庫伺服器叢集

4.擴充套件性

1).事件驅動架構

訊息佇列(觀察者模式)

2).分散式服務

業務與可複用服務相分離(模組化)

5.安全性

1).防範各種攻擊竊密手段

2).網站架構主要的幾種模式:分層,分割 分散式 叢集 快取 非同步 冗餘 自動化 安全

一.

1.開發人員和使用者看待效能的角度不同

2.效能測試指標

1).響應時間

送發出請求到收到響應所經過的時間

2).併發數

單位時間同時處理請求數

3).吞吐量

單位時間處理請求數

4).效能計數器

描述伺服器或作業系統效能的一系列資料指標

3.效能測試方法

1).效能測試

處理能力與併發數成正比

2).負載測試

處理能力增長緩慢,達到最大負載點

3).壓力測試

處理能力反而下降,達到崩潰點

4).穩定性測試

長時間不均勻地對系統施加壓力

4.前端效能優化

1).減少http請求

2).使用瀏覽器快取

3).啟用壓縮

4).使用正確的檔案載入方式

5).減少cookie傳輸

6).CDN加速(快取)

部署在網路運營商機房(網路第一跳)

7).反向代理(快取)

5.應用伺服器效能優化

1).分散式快取(網站效能優化第一定律:優先考慮使用快取)

快取的基本原理:

1.將資料儲存在較高訪問速度的儲存介質中

2.本質是一個 記憶體(讀取速度快嗎不是)Hash表(查詢速度快嗎不是)

合理使用快取:

1.不要快取頻繁修改的資料

2.要遵循二八定律,不要快取低命中的資料

3.要注意 快取的時效性 引起的問題

快取可用性:

1.通過將快取資料分佈在叢集中,當一臺快取伺服器當機時,從而防止全面更新快取引起的效能消耗

2.對於已知的熱點資料直接載入好(快取預熱),而不需使用LRU不斷篩選預熱

3.預防快取穿透(攻擊者不斷請求某個不存在的資料,從而穿透快取伺服器,對資料庫伺服器造成極大的壓力)

分散式快取架構(分為兩類):

1.資料相同,同步更新(JBoss Cache)

2.Memcached:

簡單的通訊協議(快取客戶端與快取伺服器)

豐富的客服端(支援多種語言)

高效能網路通訊(支援事件觸發)

高效記憶體管理(固定空間分配)

互不通訊的伺服器叢集架構(客戶端路由演算法: 一致性Hash演算法)(無限制線性伸縮)

2).非同步操作

使用 訊息佇列 將 呼叫 非同步化

1.使用者的資料在傳送給訊息佇列伺服器後 立即返回

2.訊息佇列伺服器 中的消費者程式從消協佇列中獲取資料非同步寫入資料庫

3.達到了削峰作用(削平高峰時期的併發任務)

4.無法在返回時告知使用者成功資訊

3).使用叢集

在網站高併發訪問的場景下,使用負載均衡技術為一個應用構建一個由多太伺服器組成的伺服器叢集,將併發請求分發的多臺伺服器上處理,避免單一伺服器因負載壓力過大而響應緩慢,使使用者具有更好的響應延遲特性

4).程式碼優化

多執行緒

1.利用多執行緒io阻塞與執行,可最大限度地利用cpu資源

注意:

1.將物件設計為無狀態物件

2.使用區域性物件

3.併發訪問資源時使用鎖

資源複用

1.單例模式

2.物件池(減少物件建立刪除引起的資源消耗)

3.合適的資料結構

4.合理的GC

6.儲存效能優化

硬體技術

儲存結構技術

磁碟讀寫技術

那麼高效能架構具體該學習什麼技術呢,以下是我整理出來的思維導圖:

網站技術架構與效能優化,附高效能思維導圖

網站技術架構與效能優化,附高效能思維導圖

最後送福利了,現在加群即可獲取高清大圖 群號:923116658 裡面還有Java工程化 、高效能及分散式、高效能、高架構、效能調優、Spring、MyBatis、 Netty原始碼分析等多個知識點高階進階乾貨的相關視訊資料,還有spring和 虛擬機器等書籍掃描版,還有更多面試題等你來拿。


相關文章