在過往的面試中,如果候選人做過高并發(fā)的項目,我通常會讓對方談談對于高并發(fā)的理解,但是能系統(tǒng)性地回答好此問題的人并不多,大概分成這樣幾類:
1、對數(shù)據(jù)化的指標沒有概念:不清楚選擇什么樣的指標來衡量高并發(fā)系統(tǒng)?分不清并發(fā)量和QPS,甚至不知道自己系統(tǒng)的總用戶量、活躍用戶量,平峰和高峰時的QPS和TPS等關鍵數(shù)據(jù)。
2、設計了一些方案,但是細節(jié)掌握不透徹:講不出該方案要關注的技術點和可能帶來的副作用。比如讀性能有瓶頸會引入緩存,但是忽視了緩存命中率、熱點key、數(shù)據(jù)一致性等問題。
3、理解片面,把高并發(fā)設計等同于性能優(yōu)化:大談并發(fā)編程、多級緩存、異步化、水平擴容,卻忽視高可用設計、服務治理和運維保障。
4、掌握大方案,卻忽視最基本的東西:能講清楚垂直分層、水平分區(qū)、緩存等大思路,卻沒意識去分析數(shù)據(jù)結構是否合理,算法是否高效,沒想過從最根本的IO和計算兩個維度去做細節(jié)優(yōu)化。
這篇文章,我想結合自己的高并發(fā)項目經(jīng)驗,系統(tǒng)性地總結下高并發(fā)需要掌握的知識和實踐思路,希望對你有所幫助。內(nèi)容分成以下3個部分:
如何理解高并發(fā)?
高并發(fā)系統(tǒng)設計的目標是什么?
高并發(fā)的實踐方案有哪些?
01 如何理解高并發(fā)?
高并發(fā)意味著大流量,需要運用技術手段抵抗流量的沖擊,這些手段好比操作流量,能讓流量更平穩(wěn)地被系統(tǒng)所處理,帶給用戶更好的體驗。
我們常見的高并發(fā)場景有:淘寶的雙11、春運時的搶票、微博大V的熱點新聞等。除了這些典型事情,每秒幾十萬請求的秒殺系統(tǒng)、每天千萬級的訂單系統(tǒng)、每天億級日活的信息流系統(tǒng)等,都可以歸為高并發(fā)。
很顯然,上面談到的高并發(fā)場景,并發(fā)量各不相同,那到底多大并發(fā)才算高并發(fā)呢?
1、不能只看數(shù)字,要看具體的業(yè)務場景。不能說10W QPS的秒殺是高并發(fā),而1W QPS的信息流就不是高并發(fā)。信息流場景涉及復雜的推薦模型和各種人工策略,它的業(yè)務邏輯可能比秒殺場景復雜10倍不止。因此,不在同一個維度,沒有任何比較意義。
2、業(yè)務都是從0到1做起來的,并發(fā)量和QPS只是參考指標,最重要的是:在業(yè)務量逐漸變成原來的10倍、100倍的過程中,你是否用到了高并發(fā)的處理方法去演進你的系統(tǒng),從架構設計、編碼實現(xiàn)、甚至產(chǎn)品方案等維度去預防和解決高并發(fā)引起的問題?而不是一味的升級硬件、加機器做水平擴展。
此外,各個高并發(fā)場景的業(yè)務特點完全不同:有讀多寫少的信息流場景、有讀多寫多的交易場景,下期發(fā)布:那是否有通用的技術方案解決不同場景的高并發(fā)問題呢?
文章來源:高性能服務器開發(fā) 文中圖片來源:百度圖片
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問三五互聯(lián)官網(wǎng):m.shinetop.cn