高並發的四個角度
只說並發不提高可用就是耍流氓。可以從四個角度討論這個問題。
首先是無狀態前端機器不足以承載請求流量,需要進行水平擴展,一般QPS是千級。 然后是關系型數據庫無法承載讀取或寫入峰值,需要數據庫橫向擴展或引入nosql,一般是千到萬級。 之后是單機nosql無法承載,需要nosql橫向擴展,一般是十萬到百萬QPS。 最后是難以單純橫向擴展nosql,比如微博就引入多級緩存架構,這種架構一般可以應對百萬到千萬對nosql的訪問QPS。 當然面向用戶的接口請求一般到不了這個量級,QPS遞增大多是由於讀放大造成的壓力,單也屬於高並發架構考慮的范疇。
PV和QPS
比如微博每天1億多pv的系統一般也就1500QPS,5000QPS峰值。
比如有人說:
- 2C4G機器單機一般1000QPS。
- 8C8G機器單機可承受7000QPS。
要多久才能處理完這些請求
首先需要明確兩個基本點:
1、處理每個請求需要耗費時間,哪怕時間很短
2、服務資源是有限的,不能一次性處理全部請求
假定總並發請求數量為10000,每個請求的處理時間為t秒,服務器一次性可以處理的請求數量為n個,那么處理完所有的請求需要用時為T
T = (10000 / n ) * t
由此可知,如果一次性可以處理10000個請求,那么總耗時只需要t秒
寫在后面
具體多少QPS跟業務強相關,只讀接口讀緩存,將壓力給到緩存單機3000+沒問題,寫請求1000+也正常,也復雜些可能也就幾百+QPS。
所以QPS和業務場景和設計相關性很大,比如可以通過瀏覽器本地緩存,用緩存做熱點數據查詢,寫事務MQ異步處理等方式提升QPS。
轉載於:https://my.oschina.net/u/1000241/blog/3065185