什么是高并發(fā)
高并發(fā)(High Concurrency)是指通過設計保證系統(tǒng)能夠同時并行處理很多請求式塌。
常用指標有:
- QPS博敬,每秒響應請求數(shù)
- TPS,每秒響應事務數(shù)
- RT峰尝,響應時間偏窝,系統(tǒng)對請求做出響應的時間
- Concurrency,并發(fā)數(shù)武学,系統(tǒng)同時能處理的請求數(shù)量
- 吞吐量:單位時間內處理的請求數(shù)量
提高并發(fā)的思路
- 降低 RT
- 提高 Concurrency
如何降低 RT
- 升級服務器和數(shù)據(jù)庫硬件配置祭往,最簡單粗暴且有效的手段,但是硬件能帶來的提升是有上限的
- 服務端引入緩存火窒,緩存分為本地緩存和分布式緩存链沼,可顯著降低查詢接口的響應時間
- 購買 CDN 服務,將圖片沛鸵、html括勺、css缆八、js等靜態(tài)資源上傳到 CDN,可顯著降低用戶打開頁面的響應時間
- 業(yè)務優(yōu)化疾捍,比如流程拆分奈辰,將實時性要求低的流程寫入消息隊列進行異步處理,將互相獨立的流程并行處理乱豆;數(shù)據(jù)預加載奖恰;避免熱點數(shù)據(jù);索引優(yōu)化宛裕;JVM 優(yōu)化等
如何提高 Concurrency
- 使用反向代理 Nginx瑟啃,可以大大的提高服務的并發(fā)數(shù),一般可以達到 10w 并發(fā)數(shù)揩尸,此時單機數(shù)據(jù)庫會出現(xiàn)瓶頸
- 數(shù)據(jù)庫讀寫分離蛹屿,數(shù)據(jù)庫使用主從模式,對一致性要求低的查詢請求可以走從庫岩榆,分擔主庫壓力
- 數(shù)據(jù)庫分庫分表错负,把不同業(yè)務的數(shù)據(jù)放到不同的數(shù)據(jù)庫中,如果單表數(shù)據(jù)量過大勇边,可以進行分表存儲犹撒。分庫分表可以顯著提升數(shù)據(jù)庫查詢的效率
- 使用負載均技術 LVS/F5,此時 Nginx 已經成為瓶頸粒褒,多加一層 Nginx 會影響 RT识颊,所以一般會使用更高效的負載均衡軟件 LVS 或者硬件 F5,此時并發(fā)數(shù)可以上升到幾十萬
- 使用 DNS 負載均衡奕坟,可以在域名下面綁定多個虛擬IP谊囚,每個虛擬 IP 指向一個機房,此時并發(fā)數(shù)已經來到百萬执赡、千萬甚至億的級別镰踏,服務入口的并發(fā)數(shù)將不在是瓶頸。
架構圖
世上沒有萬能的架構沙合,需要根據(jù)實際情況進行權衡奠伪。