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