一、什麼是高併發
定義:高併發(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、記憶體、磁碟、頻寬、網絡卡
高併發的本質不是「多大算高併發」的乙個數字,而是從架構上、設計上、編碼上怎麼來保證或者解決由併發引起的問題。當別人問你:「做過高併發嗎?」回答者完全可以描述自己系統的各項指標,然後開始敘述自己對系統中對預防、解決併發問題作出的思考和行動。
四、總結
過程大於結果,方向大於方法。
到底怎麼樣才叫看書? 下篇
目錄1 再提筆記 2 我是怎麼泡圖書館的 3 大學課程之授課方法 對於 到底怎麼樣才叫看書 上篇 中所提到的內容,得到了各位博友們的普遍認同我感到很高興,說實話,從小到大我也就認真作過那幾次筆記,但是卻都印象深刻,並且對以後的影響也很深遠,在走了很多的彎路以後,漸漸才發現這其中的道理來。正所謂 學而...
到底怎麼樣才叫看書? 下篇
目錄1 再提筆記 2 我是怎麼泡圖書館的 3 大學課程之授課方法 對於 到底怎麼樣才叫看書 上篇 中所提到的內容,得到了各位博友們的普遍認同我感到很高興,說實話,從小到大我也就認真作過那幾次筆記,但是卻都印象深刻,並且對以後的影響也很深遠,在走了很多的彎路以後,漸漸才發現這其中的道理來。正所謂 學而...
到底怎麼樣才叫看書? 下篇
目錄 1 再提筆記 2 我是怎麼泡圖書館的 3 大學課程之授課方法 對於 到底怎麼樣才叫看書 上篇 中所提到的內容,得到了各位博友們的普遍認同我感到很高興,說實話,從小到大我也就認真作過那幾次筆記,但是卻都印象深刻,並且對以後的影響也很深遠,在走了很多的彎路以後,漸漸才發現這其中的道理來。正所謂 學...