常用的后端性能优化六种方式:缓存化+服务化+异步化等
 后端優(yōu)化的六種方法:
 
1.硬件升級(jí)
硬件問題對性能的影響不容忽視。
舉一個(gè)例子:一個(gè)DB集群經(jīng)常有慢SQL報(bào)警,業(yè)務(wù)排查下來發(fā)現(xiàn)SQL都很簡單,該做的索引優(yōu)化也都做了。后來DBA同學(xué)幫忙定位到問題是硬件過舊導(dǎo)致,將機(jī)械硬盤升級(jí)成固態(tài)硬盤之后報(bào)警立馬消失了,效果立竿見影!
2.緩存化
緩存可以稱的上是性能優(yōu)化的利器,使用緩存時(shí)需要考慮緩存命中率、緩存更新、數(shù)據(jù)一致性、緩存穿透及雪崩、Value過大等問題,可以通過mutiGet將多次請求合并一次、異步訪問等方式來提升緩存讀取的性能。
3.產(chǎn)品邏輯優(yōu)化
業(yè)務(wù)邏輯優(yōu)化經(jīng)常會(huì)容易被忽略,但效果卻往往比數(shù)據(jù)庫調(diào)優(yōu)、JVM調(diào)優(yōu)之類的來的更明顯。
舉一個(gè)例子,12306春運(yùn)搶火車票的場景,由于訪問的人多,用戶點(diǎn)擊“查票”之后系統(tǒng)會(huì)非常卡,進(jìn)度條非常慢,作為用戶,我們會(huì)習(xí)慣性的再去點(diǎn)“查票”,可能會(huì)連續(xù)點(diǎn)個(gè)好幾次。假設(shè)平均一個(gè)用戶點(diǎn)5次,則后端系統(tǒng)負(fù)載就增加了5倍!而其中80%的請求是重復(fù)請求。這個(gè)時(shí)候我們可以通過產(chǎn)品邏輯的方式來優(yōu)化,比如,在用戶點(diǎn)擊查詢之后將“按鈕置灰”,或者通過JS控制xx秒只能只能提交一次請求等,有效的攔截了80%的無效流量。
4.服務(wù)化
做服務(wù)化最基礎(chǔ)的是按業(yè)務(wù)做服務(wù)拆分,避免跨業(yè)務(wù)間的互相影響,數(shù)據(jù)和服務(wù)同時(shí)拆分。同一個(gè)業(yè)務(wù)內(nèi)部我們還按計(jì)算密集型/IO密集型的服務(wù)拆分、C端/B端服務(wù)拆分、核心/非核心服務(wù)拆分、高頻服務(wù)單獨(dú)部署等原則做拆分。
5.異步化
異步化可以利用線程池、消息隊(duì)列等方式實(shí)現(xiàn)。
使用線程池的時(shí)候一定要注意核心參數(shù)的設(shè)置,可以通過監(jiān)控工具去觀測實(shí)際創(chuàng)建、活躍、空閑的線程數(shù),結(jié)合CPU、內(nèi)存的使用率情況來做線程池調(diào)優(yōu)。
另一種是通過NIO實(shí)現(xiàn)異步化,一切網(wǎng)絡(luò)IO皆可異步:RPC框架、Servlet 3.0提供的異步技術(shù)、Apache HttpAsyncClient、緩存異步接口等等。
6.搜索引擎
復(fù)雜查詢以及一些聚合計(jì)算不適合在數(shù)據(jù)庫中做,可以利用搜索引擎來實(shí)現(xiàn),另外搜索引擎還可以幫我們很好的解決跨庫、跨數(shù)據(jù)源檢索的場景。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的常用的后端性能优化六种方式:缓存化+服务化+异步化等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 从Java程序员进阶到架构师,6大核心技
 - 下一篇: Spark在美团的实践