一、什么是高並發
定義:
高並發(High Concurrency)是使用技術手段使系統可以並行處理很多請求。
關鍵指標:
-響應時間(Response Time)
-吞吐量(Throughput)
-每秒查詢率QPS(Query Per Second)
-每秒事務處理量TPS(Transaction Per Second)
-同時在線用戶數量
關鍵指標的維度:
-平均,如:小時平均、日平均、月平均
-Top百分數TP(Top Percentile),如:TP50、TP90、TP99、TP4個9
-最大值
-趨勢
「並發」由於在互聯網架構中,已經從機器維度上升到了系統架構層面,所以和「並行」已經沒有清晰的界限。「並」(同時)是其中的關鍵。由於「同時」會引發多久才叫同時的問題,將時間擴大,又根據不同業務關注點不同,引申出了引申指標。
引申指標:
-活躍用戶數,如:日活DAU(Daily Active User)、月活MAU(Monthly Active Users)
-點擊量PV(Page View)
-訪問某站點的用戶數UV(Unique Visitor)
-獨立IP數IP(Internet Protocol)
-日單量
二、多大算高並發
這個問題的答案不是一個數字。來看兩個場景:
場景1:
木頭同學去一家創業公司面試。這個公司做的產品還沒有上線,面試官小熊之前就職過公司的產品都沒有什么量。
小熊:“有高並發經驗嗎?”
木頭:“我們服務單機QPS2000+,線上有4台機器負載均衡。”
這時候小熊心里的表情大概是:
但是如果小熊就職的公司是美團之類的。那這這時候小熊心里的表情大概是:
場景2:
固態硬盤SSD(Solid State Disk)說:我讀取和寫入高達 1000MB/秒
mysql說:我單機TPS10000+
nginx說:我單機QPS10W+
靜兒說:給我一台56核200G高配物理機,我可以創建一個單機QPS1000W
不在同一維度,沒有任何前提,無法比較誰更牛。“我的系統算不算高並發?”這個問題就如同一個女孩子愛問的問題:“我美不美?”
三、高並發的本質
俗話說:「沒有對比就沒有傷害」。算不算高並發,這個問題的答案需要加對比和前提。
對比包括:
-業界:在業界同類產品中並發量處於什么位置。舉個栗子🌰,美團外賣的日單量是千萬級別,一個系統日單量在百萬,雖然差一個數量級,但是相比大多數公司已經很不錯。
-自身:在自身系統中,並發問題是否已經是系統的瓶頸?如果是,這么這個瓶頸怎么打破?如果不是,那當初架構設計的時候是怎么保證並發不是問題的?(別告訴我:是通過系統沒有訪問量來保證的[擦汗])。
前提包括:
-業務復雜度:舉個栗子🌰,訪問百度首頁的時間基本就是看自己家的網速,通常情況下都是點一下就看到結果了。而掃描二維碼支付,通常需要等很久,雖然這可能已經是業界最牛的支付公司出品了。
-配置:用高配物理機得出的數據和最老最低配的虛擬器上的出來的結果是無法比較的。通常的配置有:cpu、內存、磁盤、帶寬、網卡
高並發的本質不是「多大算高並發」的一個數字,而是從架構上、設計上、編碼上怎么來保證或者解決由並發引起的問題。當別人問你:“做過高並發嗎?”回答者完全可以描述自己系統的各項指標,然后開始敘述自己對系統中對預防、解決並發問題作出的思考和行動。
四、總結
過程大於結果,方向大於方法。
相關閱讀: