?0、引入
從宏觀上來講,計算機可以抽象為【輸入 >?計算?> 輸出】這三部分
輸入輸出自然就是io,而計算部分自然歸cpu管
不同的任務,對io和cpu的依賴程度不同,由此有了cpu密集型任務和io密集型任務
1、IO密集型
更依賴輸入輸出
比如說,我的邏輯是發送請求,然后等待別人計算后返回給我,那我幾乎不用計算,就是輸入,等待,接收返回值,輸出。這樣的業務對機器負載不高,幾乎不占CPU的資源。但是時間上來說,會更耗時,至少是毫秒ms級別,如數據庫10ms、遠程緩存2ms、服務調用50ms
2、CPU密集型
更依賴CPU計算
參數收齊,開始調用本機CPU進行計算,耗時相比IO就很少了,通常是納秒ns級別,比如壓縮解壓縮20ns、加減乘除5ns、循環判斷2ns。這樣的任務對機器的負載高一些,CPU在密集計算,占用較多CPU資源
3、負載
負載:指系統或設備在特定時間內處理的工作量。涵蓋CPU使用率、內存占用、磁盤I/O操作、網絡流量等多個維度
CPU負載:反映CPU工作強度,通常通過使用率指標來衡量
內存負載:表示系統當前內存的使用情況,過高會導致內存頻繁交換
磁盤I/O負載:指磁盤讀寫頻率,過高可能成為性能瓶頸
網絡負載:衡量網絡帶寬利用率,過高會增加延遲
系統負載:通常用平均負載衡量,反映活動進程數量,過高會影響響應能力
4、負載均衡
4.1?概述
高負載會導致系統響應延遲、性能下降甚至崩潰
因此通過【負載均衡Load?Balance】和容量規劃來避免過載
負載均衡:是一種將工作負載(例如網絡流量、數據請求、計算任務等)分配到多個計算資源(例如服務器、虛擬機、容器等)的技術
主要目的:優化性能、提高可靠性以及增加可擴展性
在工作環境中,負載均衡器通常為與應用程序的前端,接受并分配傳入的請求,通過算法確定分配請求的最佳方式,從而防止任何一個資源過載或失效導致應用程序的性能下降或停止響應
4.2?硬件負載均衡
有專門為負載均衡任務而設計的物理設備,利用專用的硬件組件(如ASICs或FPGAs)來高效分發流量。其優點在于高性能和吞吐量,經過優化的任務處理,以及內置網絡安全、監控和管理功能,能應對大量流量和多種協議。然而,硬件負載均衡器通常價格昂貴,配置和維護也需要專業知識,且可擴展性受限
4.3?軟件負載均衡
目前我們常說的負載均衡,都是通過軟件負載均衡器來實現的
軟件負載均衡器,就是運行在通用服務器或虛擬機上的應用程序,使用軟件算法將流量分發到多個服務器或資源。
其優點在于經濟實惠、適應性強、易于擴展(可通過增加資源或升級硬件實現)以及靈活(可在各種平臺和環境中部署)。但在高負載下,軟件負載均衡器的性能可能較差,且可能影響主機系統資源,需要維護軟件更新。
另外,負載均衡還可以根據分配策略的不同,分為普通負載均衡和動態負載均衡。普通負載均衡是指將用戶請求均勻地分發到多個服務器,以實現服務器的負載均衡,通常采用靜態的分發算法,如輪詢、隨機等。而動態負載均衡則是根據服務器的實時負載情況,動態地調整請求的分發策略,以保證服務器負載的均衡。每個服務器被分配一個權重值,權重越高,則分發到該服務器的請求越多。
此外,根據網絡層次的不同,負載均衡還可以分為二層負載均衡(MAC)、三層負載均衡(IP)、四層負載均衡(TCP)和七層負載均衡(HTTP)。這些負載均衡類型的主要區別在于它們工作的網絡層次和處理的請求類型。
負載均衡功能也可以放在云服務商的服務器上運行。這種方式可以根據實際需求動態調整資源,提高靈活性和可擴展性
4.4 負載均衡算法
4.4.1 輪詢法
輪詢法是最簡單的一種負載均衡算法,它將請求按順序輪流地分配到后端服務器上
這種算法對后端服務器的處理能力一視同仁,不考慮實際的連接數和系統負載
4.4.2?加權輪詢法
加權輪詢法給每個服務器都設置了權重,配置低、負載高的服務器權重低,配置高、負載低的服務器權重高。這樣,高性能的服務器能夠處理更多的請求。
4.4.3?隨機法
隨機法通過系統的隨機算法,根據后端服務器的列表大小值來隨機選擇其中一臺服務器訪問。這種方式能夠隨機地分配請求,但對于每臺服務器的實際負載情況并無考慮。
4.4.4?加權隨機法(Weighted Random):
加權隨機法類似于加權輪詢法,不過在處理請求分擔時是一個隨機選擇的過程。它根據后端服務器的配置和負載情況分配不同的權重,然后按照權重隨機選擇服務器。
4.4.5?最小連接數法
該算法是一種動態調度算法,通過服務器中當前所活躍的連接數來估計服務器的負載情況,把新的連接請求分配到當前連接數最小的服務器。這種算法能更好地利用后端服務器的處理能力,但在服務器處理能力差異大的情況下可能并不理想。
4.4.6?加權最小連接數算法(Weighted Least-Connection Scheduling)
這種算法用相應的權值表示各個服務器的處理性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢服務器的負載情況,并動態地調整其權值。
4.4.7?其他
除此之外,還有源地址哈希法等負載均衡算法,通過對發送請求的客戶端的IP地址進行哈希運算,然后選擇結果對應的服務器來處理請求,這樣可以保證來自同一客戶端的請求總是被分配到同一臺服務器上,有助于保持會話的持續性。
參考文獻
https://zhuanlan.zhihu.com/p/454954647
并發編程的任務類型:CPU密集型任務與I/O密集型任務_為什么io密集型適合并發-CSDN博客
負載均衡(理解/解析)-阿里云開發者社區