架構師之路 究竟啥是高併發

2021-10-04 22:55:36 字數 1468 閱讀 9183

一、高併發常用的指標:

例如系統處理乙個http請求需要300ms,這個300ms就是系統的響應時間。

2、吞吐量:

例如在1秒內處理的請求數量

3、qps:

每秒的響應請求數

4、併發使用者數:

同時承載正常使用系統功能的使用者數量

二、如何提公升系統的併發能力:

1、垂直擴充套件

a、增強單機硬體效能:

增加cpu核數,更好的硬碟等等。

b、提公升單機架構效能:

使用cache來減少io次數,使用非同步來增加單服務吞吐量。

2、水平擴充套件

增加伺服器數量,就能線性擴充系統效能。

三、水平擴充套件架構實踐

1、反向**層的水平擴充套件

反向**層的水平擴充套件,是通過「dns輪詢」實現的:dns-server對於乙個網域名稱配置了多個解析ip,每次dns解析請求來訪問dns-server,會輪詢返回這些ip。

當nginx成為瓶頸的時候,只要增加伺服器數量,新增nginx服務的部署,增加乙個外網ip,就能擴充套件反向**層的效能,做到理論上的無限高併發。

2、站點層的水平擴充套件

站點層的水平擴充套件,是通過「nginx」實現的。通過修改nginx.conf,可以設定多個web後端。

當web後端成為瓶頸的時候,只要增加伺服器數量,新增web服務的部署,在nginx配置中配置上新的web後端,就能擴充套件站點層的效能,做到理論上的無限高併發。

3、服務層的水平擴充套件

服務層的水平擴充套件,是通過「服務連線池」實現的。

站點層通過rpc-client呼叫下游的服務層rpc-server時,rpc-client中的連線池會建立與下游服務多個連線,當服務成為瓶頸的時候,只要增加伺服器數量,新增服務部署,在rpc-client處建立新的下游服務連線,就能擴充套件服務層效能,做到理論上的無限高併發。如果需要優雅的進行服務層自動擴容,這裡可能需要配置中心裡服務自動發現功能的支援。

4、資料層的水平擴充套件

a、安裝範圍水平拆分

(1) 請求的負載不一定均衡,一般來說,新註冊的使用者會比老使用者更活躍,大range的服務請求壓力會更大;

b、安裝雜湊水平拆分

(1)不容易擴充套件,擴充套件乙個資料服務,hash方法改變時候,可能需要進行資料遷移;

四、水平拆分和主從同步的對比

1、水平拆分

通過水平拆分擴充套件資料庫效能:

(1)每個伺服器上儲存的資料量是總量的1/n,所以單機的效能也會有提公升;

(2)n個伺服器上的資料沒有交集,那個伺服器上資料的並集是資料的全集;

(3)資料水平拆分到了n個伺服器上,理論上讀效能擴充了n倍,寫效能也擴充了n倍(其實遠不止n倍,因為單機的資料量變為了原來的1/n);

2、主從同步

通過主從同步讀寫分離擴充套件資料庫效能:

(1)每個伺服器上儲存的資料量是和總量相同;

(2)n個伺服器上的資料都一樣,都是全集;

(3)理論上讀效能擴充了n倍,寫仍然是單點,寫效能不變;

架構師眼中的高併發架構

三 分層,分割,分布式 四 集群 五 非同步 六 快取 七 面向服務 八 冗餘,自動化 九 總結 高併發經常會發生在有大活躍使用者量,使用者高聚集的業務場景中,如 秒殺活動,定時領取紅包等。為了讓業務可以流暢的執行並且給使用者乙個好的互動體驗,我們需要根據業務場景預估達到的併發量等因素,來設計適合自...

架構師之路

隨著經驗能力的增長,程式的程式設計習慣也在發生著改變,以下是我個人程式設計習慣的改變。1級 思考一段時間,寫一段 2級 用圖形幫助思考,然後寫 3級 將思考過程寫成注釋,然後再寫 4級 用圖形幫助思考,然後一邊寫注釋,一邊寫 5級 思考過程中增加對不確定技術點的測試。6級 將思考過程寫在記事本裡,將...

架構師之路

方 秒殺系統架構優化思路 分布式id生成器 網際網路架構,如何進行容量設計 執行緒數究竟設多少合理 單點系統架構的可用性與效能優化 關於負載均衡的一切 異構伺服器負載均衡及過載保護 lvs為何不能完全替代dns輪詢 究竟啥才是網際網路架構 高併發 究竟啥才是網際網路架構 高可用 100億資料1萬屬性...