常用的後端效能優化六種方式:快取化+服務化+非同步化等
效能優化專題
-
前端效能優化
-
資料庫效能優化
-
jvm和多執行緒優化
-
架構層面優化
-
快取效能優化
常用的後端效能優化六大方式
1,快取化
快取可以稱的上是效能優化的利器,使用快取時需要考慮快取命中率、快取更新、資料一致性、快取穿透及雪崩、Value過大等問題,可以通過mutiGet將多次請求合併一次、非同步訪問等方式來提升快取讀取的效能。
2,硬體升級
硬體問題對效能的影響不容忽視。
舉一個例子:一個DB叢集經常有慢SQL報警,業務排查下來發現SQL都很簡單,該做的索引優化也都做了。後來DBA同學幫忙定位到問題是硬體過舊導致,將機械硬碟升級成固態硬碟之後報警立馬消失了,效果立竿見影!
3,業務邏輯優化
業務邏輯優化經常會容易被忽略,但效果卻往往比資料庫調優、JVM調優之類的來的更明顯。
舉一個例子,12306春運搶火車票的場景,由於訪問的人多,使用者點選“查票”之後系統會非常卡,進度條非常慢,作為使用者,我們會習慣性的再去點“查票”,可能會連續點個好幾次。假設平均一個使用者點5次,則後端系統負載就增加了5倍!而其中80%的請求是重複請求。這個時候我們可以通過產品邏輯的方式來優化,比如,在使用者點選查詢之後將“按鈕置灰”,或者通過JS控制xx秒只能只能提交一次請求等,有效的攔截了80%的無效流量。
4,服務化
做服務化最基礎的是按業務做服務拆分,避免跨業務間的互相影響,資料和服務同時拆分。同一個業務內部我們還按計算密集型/IO密集型的服務拆分、C端/B端服務拆分、核心/非核心服務拆分、高頻服務單獨部署等原則做拆分。
5,非同步化
非同步化可以利用執行緒池、訊息佇列等方式實現。
使用執行緒池的時候一定要注意核心引數的設定,可以通過監控工具去觀測實際建立、活躍、空閒的執行緒數,結合CPU、記憶體的使用率情況來做執行緒池調優。
另一種是通過NIO實現非同步化,一切網路IO皆可非同步:RPC框架、Servlet 3.0提供的非同步技術、Apache HttpAsyncClient、快取非同步介面等等。
6,利用搜索引擎
複雜查詢以及一些聚合計算不適合在資料庫中做,可以利用搜索引擎來實現,另外搜尋引擎還可以幫我們很好的解決跨庫、跨資料來源檢索的場景。
-end-