分布式系統漫談 拾肆 分布式系統常用優化思路

2021-08-17 04:59:07 字數 2991 閱讀 4322

本文說說系統優化的常用手段吧,其中可能有一些內容在系列前面的文章裡已經總結過了,這裡還是再系統地整理出來,方便將知識彙總,有個整體上的認識。本文只講方**,沒有具體實現。限於水平總結得可能不全,後面還會補充。

本文將系統主要分為前端優化和架構優化兩個層面來說。

前端優化

1.頁面優化

延遲載入

對一些還沒有訪問到的元素實行延遲載入,尤其是首頁上的內容。

預載入

對使用者即將訪問到的元素進行預載入,提公升使用者體驗。

減少dom元素數量

可提公升頁面渲染速度。

iframe數量盡量少

眾所周知iframe用於在頁面中嵌入頁面,如果數量過多也會降低頁面載入速度。

壓縮html檔案大小

減少網路請求位元組數,提公升載入速度。

減少http請求數

分為三個方面:一是合併js或css檔案;二是對圖示類檔案,使用css的sprites和background-image、background-position屬性進行切圖使用;三是使用瀏覽器快取。

減少dns查詢次數

避免跳轉

頁面的跳轉都是通過301或302實現的,每次跳轉也增加了網路消耗。

使用ajax的get請求

使用ajax和伺服器互動時,get是互動一次,而post是互動兩次,分別傳送檔案頭和請求資料。因此當我們只是為了載入資料時,通過get方式即可,需要注意的是此方式限制資料量大小為2kb。

控制cookie大小

每次請求都會帶上cookie,如果cookie過大爺會造成響應緩慢。建議不要將不常用的資訊寫入cookie。

2.css優化

將css置於頁面頂端

因為頁面是順序載入的,預先載入css樣式,可以保證後面的元素以我們設計的方式佔線,使用者體驗更好。

避免使用css表示式

因為頁面每載入到這個元素,就會重新計算一次,頻率太高影響載入速度。

使用外部css

可減少html檔案大小

3.js優化

指令碼放於頁面底部

因為指令碼的載入不影響頁面內容的展示。

剔除重複的指令碼

有效減少指令碼大小,加速載入速度。

減少不必要的dom訪問

對已訪問過的元素進行儲存,因為dom訪問速度並不高。

判斷條件多時用switch

盡量將概率大的case放在上面。

型別相同判斷使用"==="

"==="判斷型別相同的元素,而"=="會做型別轉換。

4.

不在html中縮放

頁面每次載入該,都是乙個重新計算的過程。建議直接將切好尺寸載入。

架構優化

1.負載層

cdn加速

關於cdn的介紹可以系列這篇文章。使用cdn技術可以保證來自不同運營商網路的請求獲取相差不多的訪問速度。

動靜分離

**包括動態資料和靜態資料。動態資料只能每次回到我們伺服器上去取,而一些靜態資料則可以部署在cdn伺服器上,不要每次回源,加快載入速度。

負載均衡

通過隨機、輪詢、加權或雜湊取模等方式,將請求盡量均衡地散布到我們的伺服器上。詳見系列這篇文章。

2.應用層

序列改並行、同步改非同步

對熱門資料或大的資源的載入,可考慮將其儲存在多台伺服器節點上,訪問時啟用多個執行緒去獲取,加快訪問速度。對於乙個流程上對多個服務的呼叫,可考慮採用非同步的方式(放入訊息佇列),快速響應使用者請求。

連線復用、請求合併

不要每次連線都重新申請,可引入資源池的概念進行管理(執行緒池)。對高頻次訪問的請求,可考慮合併為乙個請求處理,節約連線資源。

熔斷、隔離、限流、降級

對服務呼叫的一系列治理措施。詳見此文。

3.資料層

快取

對經常訪問的資料儲存在快取中,不要每次訪問資料庫。詳見此文。

讀寫分離

針對資料庫而言,使讀和寫操作互不影響。

分庫分表

當資料庫資料達到一定量級,可考慮分庫分表。詳見此文。

上篇文章:分布式系統漫談【拾叁】_快取帶來的問題和解決方案

分布式系統漫談【貳】_分布式系統帶來的問題

分布式系統漫談【叄】_負載層技術:nginx

分布式系統漫談【肆】_負載層技術:cdn

分布式系統漫談【伍】_遠端呼叫

分布式系統漫談【陸】_soa和微服務

分布式系統漫談【柒】_微服務的挑戰和解決方案

分布式系統漫談【捌】_分布式事務一致性:理論基礎

分布式系統漫談【玖】_分布式事務一致性:協議支援

分布式系統漫談【拾】_分布式事務一致性:阿里方案

分布式系統漫談【拾壹】_分布式事務一致性:秒殺實現

分布式系統漫談【拾貳】_分庫分表帶來的問題和解決方案

分布式系統漫談【拾叁】_快取帶來的問題和解決方案

分布式系統漫談

分布式系統漫談 微服務的挑戰和解決方案。微服務的挑戰 在使用微服務架構後,由於服務間的呼叫不再是程序內的呼叫而是通過輕量級的網路協議通訊,而眾所周知網路不不可信的,因此服務可能出現出錯 超時或宕機等問題。因此在微服務架構設計時,我們就要把這部分問題考慮進去,下面說說我們應該採取哪些措施和方案去解決。...

分布式 2分布式事務

分布式 1概述cap和base 分布式 2分布式事務 分布式 3分布式一致性演算法 分布式 4集群 分布式 5服務限流演算法 分布式 6分布式id 分布式 7效能壓測 分布式 8日誌鏈路跟蹤 分布式 9分布式鎖 redis鎖的幾種實現 參考 分布式系統間各種問題 宕機 網路不穩定 本地事務無法滿足需...

分布式系統

分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...