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