一、什么是高并發(fā)

高并發(fā)是互聯(lián)網(wǎng)系統(tǒng)所面臨的普通問題,也是系統(tǒng)架構時考慮的重要因素之一。
【并發(fā)與負載】是相對的兩個詞。
想實現(xiàn)高并發(fā),就要提高系統(tǒng)負載能力。系統(tǒng)負載能力強了,自然可以處理高并發(fā)請求。
所以,實現(xiàn)高并發(fā),本質(zhì)就是提高系統(tǒng)的負載能力。
一般對于系統(tǒng)負載能力的評估參數(shù)有:響應時間 、吞吐量、每秒請求數(shù)QPS、并發(fā)用戶數(shù)。
響應時間:系統(tǒng)對請求做出響應的時間。例如系統(tǒng)處理一個HTTP請求需要200ms,這個200ms就是系統(tǒng)的響應時間。
吞吐量:單位時間內(nèi)處理的請求數(shù)量。
QPS:每秒響應請求數(shù),與吞吐量概念類似。
并發(fā)用戶數(shù):同時使用系統(tǒng)功能的用戶數(shù)量。
二、如何提高并發(fā)處理能力(并發(fā)數(shù))
需要說明的是:以下內(nèi)容不考慮【帶寬】和【硬件配置】這兩個因素。
很顯然,帶寬高、硬件配置高,系統(tǒng)負載能力就強,能處理的并發(fā)用戶數(shù)就多。
那么如何提高并發(fā)處理能力呢?
答案就是:通過優(yōu)化系統(tǒng)架構來提高并發(fā)處理能力。
并且系統(tǒng)架構設計是一個復雜的過程,不僅涉及到技術層面,還包括業(yè)務層面。
三、通過業(yè)務拆分提高并發(fā)處理能力(微服務架構)

將一個系統(tǒng)拆分為多個子系統(tǒng),每個子系統(tǒng)負責一個單獨的服務,這就是常說的【服務治理】
拆分為多個子系統(tǒng)后,每個子系統(tǒng)(服務)獨立運行,每個服務之間通過REST/RPC方式調(diào)用,用戶也可以直接調(diào)用這些服務接口。
這種設計將大化小,這種架構也稱為【微服務架構】。
舉例:商城系統(tǒng)中,可拆分為【訂單服務】【用戶服務】【產(chǎn)品服務】等多個服務接口。
四、通過水平擴展提高并發(fā)處理能力
這一塊要分開來講。
-
前端部分
image.png
使用nginx反向代理軟件提高并發(fā)處理量
nginx進行水平擴展:DNS輪詢等 -
應用服務器部分
image.png
java中常見的應用服務器tomcat為例,它可以實現(xiàn)集群和負載均衡。集群配置成功后,相當于提供了一個“服務器池”,如果想要再提高處理能力,只需要向“池”中繼續(xù)添加應用服務器即可。另外,集群也實現(xiàn)了系統(tǒng)高可用。
數(shù)據(jù)庫層面
常見的分庫分表,讀寫分離都是解決數(shù)據(jù)庫壓力大的方法之一。
數(shù)據(jù)庫瓶頸是系統(tǒng)在運行中最先碰到、最常碰到的問題之一。
經(jīng)常見到的問題就是磁盤IO高,導致處理緩慢。
剛才所說方法都可以解決這一問題。
常見的分表原則有:按范圍分,按哈希值分。-
緩存層面
image.png
在系統(tǒng)中添加緩存是當前必選的方案。
添加緩存的主要目標是減少磁盤IO。
可以緩存的內(nèi)容很多,例如緩存頁面內(nèi)容(HTML,CSS,圖片),緩存應用服務器中數(shù)據(jù)對象等。
通過設計多級緩存,實現(xiàn)數(shù)據(jù)的快速獲取、請求的快速響應。
在分布式架構中,還要注意分布式緩存的更新一致性問題。(不再詳述)
五、最后
其實很多系統(tǒng)的并發(fā)數(shù)都不到百萬級,只有少量頭部網(wǎng)站才會有,例如淘寶。
但我們之所以研究如何解決百萬級并發(fā)架構,是從中學會和掌握【系統(tǒng)架構演變過程】。
系統(tǒng)架構設計的原則是:適合的就是最好的。不能剛開始架構就要滿足百萬級,因為這樣設計會提高成本,造成資源浪費。
所以,我們要明白:系統(tǒng)架構是演進的。
轉(zhuǎn)載自https://blog.csdn.net/daocaokafei/article/details/115410761


