高併發入門

2022-07-27 13:06:13 字數 1706 閱讀 3667

一、高併發的幾個指標

2、吞吐量: 單位時間內處理的請求數量

3、qps:  每秒響應請求數

4、併發使用者數: 同時承載正常使用系統功能的使用者數量。

二、提公升系統的併發能力常見方法

1、垂直擴充套件

1) 增強單機硬體效能: 例如增加cpu核數,公升級更好的網絡卡、公升級更好的硬碟、擴充硬碟容量、擴充系統記憶體

2) 提公升單機架構效能: 例如,使用cache來減少io次數,使用非同步來增加單服務吞吐量

2、水平擴充套件

如何在架構各層進行可水平擴充套件的設計

三、常見的網際網路分層架構

2、反向**層: 系統入口,反向**

3、站點應用層: 實現核心應用邏輯,返回html或者json

4、服務層: 實現服務化

5、資料-快取層: 快取加速訪問儲存

6、資料-資料庫層: 資料庫固化資料儲存

四、分層水平擴充套件架構實踐

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

反向**層的水平擴充套件,是通過dns輪詢實現的。 dns-server對於乙個網域名稱配置了多個解析ip,每次dns解析

請求來訪問dns-server,會輪詢返回這些ip。  當nginx成為瓶頸的時候,只要增加伺服器數量,新增nginx服務

的部署,增加乙個外網ip,就能擴充套件反向**層的性質,做到理論上的無限高併發

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

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

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

服務層的水平擴充套件,是通過服務連線池實現的。 站點層通過rpc-client呼叫下游的服務層rpc-server, rpc-client 

的連線池會建立與下游服務多個連線,多服務成為瓶頸的時候,只要增加伺服器數量,新增服務部署,在rpc-client處

建立新的下游服務連線,就能擴充套件服務層效能。 如果要優雅的進行服務層自動擴容,這裡可能需要配置中心裡服務自動

發現功能的支援

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

在資料量很大的情況下,資料層涉及資料的水平擴充套件,將原本儲存在一台伺服器上的資料水平拆分到不同伺服器上,以

達到擴充系統效能的目的。 常見的幾種資料層水平拆分方式

1)按照範圍水平拆分:  每乙個資料服務,儲存一定範圍的資料。 比如user0庫儲存uid1-1k user1庫儲存uid 1k-2k

好處: 規則簡單、資料均衡性較好、比較容易擴充套件

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

2)按照雜湊水平拆分: 每乙個資料庫,儲存某個key值hash後的部分資料。 例如user0儲存uid為偶數的資料,user1則

為uid是奇數的資料

好處: 規則簡單、資料均衡較好、請求均衡性較好

不足: 不容易擴充套件,擴充套件乙個資料服務,hash方法改變的時候,可能需要進行資料遷移。 通過水平拆分來擴充系統效能,

與主從同步讀寫分離來擴充資料庫效能的方式不同。

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

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

並集是資料的全集; 

4) 通過主從同步讀寫分離擴充套件資料庫

每個伺服器上儲存的資料量是和總量相同; n個伺服器上的資料都一樣,都是全集; 

5、快取層的水平拆分

同資料庫層的水平拆分類似,也是以範圍拆分和雜湊拆分的方式居多

高併發 高可用

高併發 提高系統併發能力的方法主要有兩種 前者垂直擴充套件可以通過提公升單機硬體效能,或者提公升單機架構效能,來提高併發性,但單機效能總是有極限的,網際網路分布式架構設計高併發終極解決方案還是後者 水平擴充套件。網際網路分層架構中,各層次水平擴充套件的實踐又有所不同 1 反向 層可以通過 dns輪詢...

高併發 高併發測試筆記

問 高併發測試 一般你們用什麼工具來模擬 10萬級別的客戶端併發?在普通的電腦上可以模擬嗎 10萬併發需要至少10萬的套接字,套接字在核心中占用記憶體100000 6k 2 1g記憶體,系統需要能夠開啟10w個fd。一般的系統能夠能模擬 問 預設每個程序只能開1024個fd,修改後最大可以10w,那...

併發與高併發(二十)高併發 應用拆分思路

這一章節我們將講解高併發解決方案中的應用拆分思路,也可以稱之為系統拆分。單個伺服器再優化,它的處理都是有上限的,因此我們採用擴容 快取 訊息佇列等對程式進行優化,這些手段都可行,但還不是全部。隨著專案的需求要求越來越多,應用自然會跟著越來越大,因此呢,架構師設計出了特別容易擴充套件的方案,從整體將乙...