IO密集型、CPU密集型、負載、負載均衡

?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博客

負載均衡(理解/解析)-阿里云開發者社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90618.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從甲方的角度看MOM項目成敗的原因

關鍵詞:MOM、數字化轉型、成敗數字化轉型中流行這么一句話:SAP項目加班到晚上8點,MOM項目最少到晚上10點。由此可見,MOM項目實施的難度、復雜度。但,為什么MOM難度大?先引入1個故事:1個價值300萬…

MySQL操作進階

系列文章目錄 MySQL的基礎操作-CSDN博客 目錄 系列文章目錄 前言 一、數據庫的約束 1. 約束類型:not null 2. 約束類型:unique 3. 約束類型:default 4. 約束類型:primary key 5. 約束條件:foreign key 二、表…

表征工程 中怎么 調整參數或比例

表征工程 中怎么 調整參數或比例 在表征工程(Representation Engineering)中,調整參數或比例的核心目標是平衡干預效果與模型基礎能力,避免過度干預導致語義失真或能力退化。以下是幾種常用的方法論及具體案例: 1. 系數縮放法(Scaling Coefficients):通過權重參數控制…

如何使用Anaconda(miniconda)和Pycharm

文章目錄前言具體操作Pycharm連接配置 Anaconda(miniconda)創建的虛擬環境PipAnacondaPyCharm三者關系一圖勝千言總結前言 本文介紹如何利用Anaconda和Pycharm這兩個強大的工具,實現Python項目的高效開發。通過構建虛擬環境、安裝依賴包及利…

【07】C#入門到精通——C# 生成dll庫 C#添加現有DLL C#調用自己生成的dll庫

文章目錄0 多個.cs文件源碼01 Hero.cs02 ShowInfo.cs03 Program.cs (相當于Main文件)04 運行效果1 生成dll庫1.1 創建類庫1.2 添加要生成 dll庫 的代碼文件1.2.1 添加 Hero類1.2.2 添加 ShowInfo類1.3 生成dll庫 及 查看3 添加自己生成的dll庫4 調用運行…

進程控制->進程替換(Linux)

在之前的博客中,我們已經探討了進程創建、終止和等待的相關知識。今天,我們將繼續深入學習進程控制中的另一個重要概念——進程替換。回顧之前的代碼示例,我們使用fork()創建子進程時,子進程會復制父進程的代碼和數據(…

認識泛型、泛型類和泛型接口

目錄泛型泛型類泛型接口泛型 定義類、接口、方法時&#xff0c;同時聲明了一個或者多個類型變量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;稱為泛型類、泛型接口、泛型方法、它們統稱為泛型 作用&#xff1a;泛型提供了在編譯階段約束所能操作的數據類型&…

如何排查并解決項目啟動時報錯Error encountered while processing: java.io.IOException: closed 的問題

如何排查并解決項目啟動時報錯Error encountered while processing: java.io.IOException: closed 的問題 摘要 本文針對Java項目啟動時出現的java.io.IOException: closed錯誤&#xff0c;提供系統性解決方案。該異常通常由流資源異常關閉或損壞引發&#xff0c;常見于Maven依…

Kafka——多線程開發消費者實例

引言在分布式系統領域&#xff0c;Kafka憑借高吞吐量、低延遲的特性成為消息隊列的事實標準。隨著硬件技術的飛速發展&#xff0c;服務器多核CPU已成常態——一臺普通的云服務器動輒配備16核、32核甚至更多核心。然而&#xff0c;Kafka Java Consumer的設計卻長期保持著"單…

PDF 轉 HTML5 —— HTML5 填充圖形不支持 Even-Odd 奇偶規則?(第二部分)

這是關于該主題的第二部分。如果你還沒有閱讀第一部分&#xff0c;請先閱讀&#xff0c;以便理解“繞組規則”的問題。 快速回顧一下&#xff1a;HTML5 只支持 Non-Zero&#xff08;非零&#xff09;繞組規則&#xff0c;而 PDF 同時支持 Non-Zero 和 Even-Odd&#xff08;奇偶…

機器學習 KNN 算法,鳶尾花案例

目錄 一.機器學習概述 二.人工智能的兩大方向 三.KNN算法介紹 1.核心思想&#xff1a;“物以類聚&#xff0c;人以群分” 2.算法步驟 四.KNN算法實現 1.安裝scikit-learn庫 2.導入knn用于分類的類KNeighborsClassifier 3.設置KNeighborsClassifier的相關參數 4.訓練模…

強化學習(第三課第三周)

文章目錄強化學習&#xff08;第三課第三周&#xff09;一、以火星探測器為例說明強化學習的形式化表示二、強化學習中的回報三、強化學習算法的目標&#xff08;一&#xff09;馬爾可夫決策過程&#xff08;二&#xff09;狀態動作價值函數&#xff08;四&#xff09;使用Bell…

星痕共鳴數據分析2

今天實驗內容是攻擊力部分 1.思路 由于昨天數據分析出了一個函數 這個函數可以把奇怪的字節變成正常的數字 int parse_varint(unsigned const char* data, int count) {int value 0;int shift 0;for (int i 0; i < count; i) {unsigned char byte data[i];value | ((byt…

強化學習新發現:僅需更新5%參數的稀疏子網絡可達到全模型更新效果

摘要&#xff1a;強化學習&#xff08;RL&#xff09;已成為大語言模型&#xff08;LLM&#xff09;在完成預訓練后與復雜任務及人類偏好對齊的關鍵步驟。人們通常認為&#xff0c;要通過 RL 微調獲得新的行為&#xff0c;就必須更新模型的大部分參數。本研究對這一假設提出了挑…

electron 使用記錄

目錄 代理設置以打包成功 參考文檔 代理設置以打包成功 參考文檔 使用 JavaScript、HTML 和 CSS 構建跨平臺桌面應用 |電子 --- Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron

Spring boot Grafana優秀的監控模板

JVM (Micrometer) | Grafana Labs 1 SLS JVM監控大盤 | Grafana Labs Spring Boot 2.1 Statistics | Grafana Labs springboot granfana 監控接口指定接口響應的 在Spring Boot應用中&#xff0c;使用Grafana進行監控通常涉及以下幾個步驟&#xff1a; 設置Prometheus作…

LeetCode11~30題解

LeetCode11.盛水最多的容器&#xff1a; 題目描述&#xff1a; 給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器…

計算機結構-邏輯門、存儲器、內存、加法器、鎖存器、程序計數器

邏輯門 邏輯門簡單地理解即通過特定的條件實現與、或、非、異或等相關邏輯二極管 這些最基礎的邏輯門都是通過電路元器件進行搭建的&#xff0c;即半導體材料搭建的二極管二極管有個特點&#xff0c;一定條件下才可以導通&#xff0c;即得接對正負極&#xff0c;具體的原理可以…

連鎖店鋪巡查二維碼的應用

在連鎖店鋪的運營管理中&#xff0c;巡查工作是保障各門店規范運作、提升服務質量的關鍵環節。巡查二維碼的出現&#xff0c;為這一環節帶來了高效、便捷且規范的解決方案&#xff0c;其應用場景廣泛&#xff0c;優勢顯著。在如今的繁雜且效果參差不齊電子二維碼市場中&#xf…

各種前端框架界面

前端技術更新迭代很快&#xff0c;已經有不少新的前端框架問世&#xff0c;而且像geeker-admin風格的界面設計也挺不錯的。 今天去面試了前端開發崗位&#xff0c;感覺希望不大。畢竟中間空了一段時間沒接觸&#xff0c;得趕緊把新的知識點補上&#xff0c;這樣哪怕是居家辦公也…