一、高併發常用的指標:
例如系統處理乙個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萬屬性...