您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么設計一個支撐高并發大流量的系統”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么設計一個支撐高并發大流量的系統”吧!
高并發架構相關概念
什么是并發?
并發是指并發的訪問,也就是某個時間點,有多少個訪問同時到來;
通常如果一個系統的日PV在千萬以上,有可能是一個高并發的系統,這里需要注意的是:只是有可能是一個高并發的系統,不一定是一個高并發的系統。
并發數和QPS是不同的概念,一般說QPS會說多少并發用戶下QPS,當QPS相同時,并發用戶數越大,網站并發處理能力越好。當并發用戶數過大時,會造成進程(線程)頻繁切換,反正真正用于處理請求的時間變少,每秒能夠處理的請求數反而變少,同時用戶的請求等待時間也會變大。找到最佳線程數能夠讓web系統更穩定,效率更高。
并發數 = QPS*平均響應時間
高并發具體關心什么?
QPS: 每秒請求或查詢的數量,在互聯網領域,指每秒響應請求數;
吞吐量: 單位時間內處理的請求量(通常由QPS與并發數決定);
響應時間: 從請求發出到收到響應花費的時間,例如一個系統處理一個HTTP請求需要100ms,這個100ms就是系統的響應時間;
PV: 綜合瀏覽量,即頁面瀏覽量或者點擊量,一個訪客在24小時內訪問的頁面數量;
UV: 獨立訪客 ,即一定時間范圍內相同訪客多次訪問網站,只計算為一個獨立的訪客;
帶寬: 計算帶寬大小需要關注兩個指標,峰值流量和頁面的平均大小 ;
日網站帶寬可以使用下面的公式來粗略計算:
日網站帶寬=pv/統計時間(換算到秒)*平均頁面大小(單位kB)*8
峰值一般是平均值的倍數;
QPS不等于并發連接數,QPS是每秒HTTP請求數量,并發連接數是系統同時處理的請求數量;
峰值每秒請求數(QPS) = (總PV數 * 80%) /(6小時秒數 * 20%)
壓力測試: 測試能承受的最大并發,測試最大承受的QPS值。
測試工具(ab):目標是URL,可以創建多個訪問線程對同一個URL進行訪問(Nginx);
ab的使用: 模擬并發請求100次(100個人),總共請求5000次(每個人請求5000次)
ab -c 100 -n 5000 待測試網站(內存和網絡不超過最高限度的75%)
QPS達到50:一般的服務器就可以應付;
QPS達到100: 假設關系型數據庫的每次請求在0.01秒完成(理想),假設單頁面只有一個SQL查詢,那么100QPS意味著1秒中完成100次請求,但此時我們不能保證數據庫查詢能完成100次;
方案:數據庫緩存層、數據庫的負載均衡;
QPS達到800: 假設我們使用 百兆寬帶,意味著網站出口的實際帶寬是8M左右,假設每個頁面是有10k,在這個并發的條件下,百兆帶寬已經被吃完;
方案:CDN加速、負載均衡
QPS達到1000: 假設使用Redis緩存數據庫查詢數據,每個頁面對Redis請求遠大于直接對DB的請求;
Redis的悲觀并發數在5W左右,但有可能之前內網帶寬已經被吃光,表現出不穩定;
方案:靜態HTML緩存
QPS達到2000: 文件系統訪問鎖都成為了災難;
方案:做業務分離,分布式存儲;
高并發解決方案案例
流量優化: 防盜鏈處理(把一些惡意的請求拒之門外)
前端優化: 減少HTTP請求、添加異步請求、啟用瀏覽器的緩存和文件壓縮、CDN加速、建立獨立的圖片服務器;
服務端優化: 頁面靜態化處理、并發處理、隊列處理;
數據庫優化: 數據庫的緩存、分庫分表、分區操作、讀寫分離、負載均衡
Web服務器優化: 負載均衡
高并發下的經驗公式
通過QPS和PV計算部署服務器的臺數
單臺服務器每天PV計算
公式1:每天總PV = QPS * 3600 * 6 公式2:每天總PV = QPS * 3600 * 8
服務器計算
服務器數量 = ceil( 每天總PV / 單臺服務器每天總PV )
峰值QPS和機器計算公式
原理: 每天80%的訪問集中在20%的時間里,這20%時間叫做峰值時間
公式: ( 總PV數 * 80% ) / ( 每天秒數 * 20% ) = 峰值時間每秒請求數(QPS)
機器: 峰值時間每秒QPS / 單臺機器的QPS = 需要的機器。
感謝各位的閱讀,以上就是“怎么設計一個支撐高并發大流量的系統”的內容了,經過本文的學習后,相信大家對怎么設計一個支撐高并發大流量的系統這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。