負載均衡的那些事?

什么是負載均衡?

1、負載:就是后端系統的承載能力。比如同等條件下,一個1核cpu-1G內存的機器的承載能力一般會比8核cpu-8G內存的機器要差;相同配置下,一個cpu利用率為80%的機器比30%的承載能力一般要差等等。

2、均衡:保證后端請求的平衡。比如:在同等情況下,分配到多臺機器的請求要相當;有些情況下,同一用戶盡可能分配到同一臺機器等等。

為什么要有負載均衡呢?

很明顯,如果我們不去考慮后端的承載情況,有可能直接就把某臺機器壓垮了(比如cpu利用率已經80%了,再給大量的請求直接就干死了),更嚴重的會直接造成雪崩(一臺壓死了,對應的請求又壓倒其他某臺機器上,又干死一臺……),從而致使服務癱瘓。

2、如果我們均衡算法選的不好,就會導致后端資源浪費。比如:如果選擇一致Hash算法,可以很好利用cache的容量。而如果用隨機,有可能就會讓cache效果大打折扣(每臺機器上都要緩存幾乎相同的內容)。

負載均衡算法有哪些?

1輪詢法(Round Robin)

輪詢法是負載均衡中最常用的算法,它容易理解也容易實現。
輪詢法是指負載均衡服務器(load balancer)將客戶端請求按順序輪流分配到后端服務器上,以達到負載均衡的目的。
假設現在有6個客戶端請求,2臺后端服務器。當第一個請求到達負載均衡服務器時,負載均衡服務器會將這個請求分派到后端服務器1;當第二個請求到害時,負載均衡服務器會將這個請求分派到后端服務器2。然后第三個請求到達,由于只有兩臺后端服務器,故請求3會被分派到后端服務器1。

2加權輪詢法(Weighted Round Robin)

簡單的輪詢法并不考慮后端機器的性能和負載差異。給性能高、負載低的機器配置較高的權重,讓其處理較多的請求;而性能低、負載高的機器,配置較低的權重,讓其處理較少的請求。加權輪詢法可以很好地處理這一問題,它將請求順序且按照權重分派到后端服務器。
假設有6個客戶端請求,2臺后端服務器。后端服務器1被賦予權值5,后端服務器2被賦予賦予權值1。這樣一來,客戶端請求1,2,3,4,5都被分派到服務器1處理;客戶端請求6被分派到服務器2處理。接下來,請求7,8,9,10,11被分派到服務器1,請求12被分派到服務器2,依次類推。

3最小連接數法(Least Connections)

即使后端機器的性能和負載一樣,不同客戶端請求復雜度不一樣導致處理時間也不一樣。最小連接數法根據后端服務器當前的連接數情況,動態地選取其中積壓連接數最小的一臺服務器來處理當前的請求,盡可能提高后端服務器的利用效率,合理地將請求分流到每一臺服務器。
為什么根據連接數可以合理地利用服務器處理請求呢?
考慮一個客戶端請求的處理邏輯較復雜,需要服務器的處理時間較長,由于客戶端需要等待服務器的響應,故需要保持與服務器的連接,這樣一來,客戶端就需要與服務器保持較長時間的連接。

4隨機法(Random)

隨機法也很簡單,就是隨機選擇一臺后端服務器進行請求的處理。由于每次服務器被挑中的概率都一樣,客戶端的請求可以被均勻地分派到所有的后端服務器上。

5加權隨機法

與加權輪詢法一樣,加權隨機法也根據后端機器的配置,系統的負載分配不同的權重。不同的是,它是按照權重隨機請求后端服務器,而非順序。

6源地址哈希法(Source Hashing)

源地址哈希的思想是根據獲取客戶端的IP地址,通過哈希函數計算得到的一個數值,用該數值對服務器列表的大小進行取模運算,得到的結果便是客服端要訪問服務器的序號。采用源地址哈希法進行負載均衡,同一IP地址的客戶端,當后端服務器列表不變時,它每次都會映射到同一臺后端服務器進行訪問。
如果后端服務器是一緩存系統,當后端服務器增加或者減少時,采用簡單的哈希取模的方法,會使得命中率大大降低,這個問題可以采用一致性哈希的方法來解決。 關于一致性哈希的介紹,可以參考文件 五分鐘看懂一致性哈希算法



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

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

相關文章

Develop內部函數,持續更新

Develop內部函數 目錄Develop內部函數dev_clear_objdev_clear_windowdev_close_inspect_ctrldev_close_tooldev_close_windowdev_disp_textdev_displaydev_error_vardev_get_exception_datadev_get_preferencesdev_get_systemdev_get_windowdev_inspect_ctrldev_map_pardev_map…

短信認證方案,用手機短信進行上網認證如何實現?

WFilter NGF的“Web認證”模塊,提供了一系列的上網認證解決方案。包括如下認證方式:本地用戶名密碼認證AD域用戶名密碼認證企業郵箱用戶名密碼認證Radius用戶名密碼認證微信WiFi認證Facebook Wifi認證除此,WFilter NGF還有一個“其他”的選項…

《高效程序員的45個習慣》-末篇

請您在閱讀本文之前,先了解《高效程序員的45個習慣》-之三。 每一期都會涉及15個話題,用3期來列出這45個習慣,每次不貪多,貪精,大家如果有空,一定要細細品味這15個習慣。 注意:每一個好的習…

【Qt開發】V4L2 API詳解 Buffer的準備和數據讀取

前面主要介紹的是:V4L2 的一些設置接口,如亮度,飽和度,曝光時間,幀數,增益,白平衡等。今天看看V4L2 得到數據的幾個關鍵ioctl,Buffer的申請和數據的抓取。1. 初始化 Memory Mapping …

halcon File文件算子,持續更新

目錄File文件Images圖像read_imageread_sequencewrite_imagedeserialize_imageserialize_imagelist_image_fileparse_filenameMisc混合體copy_filedelete_filefile_existsget_current_dirlist_filesmake_dirread_world_fileremove_dirset_current_dirObject對象deserialize_obj…

Nginx 之一:編譯安裝nginx 1.8.1 及配置

轉http://www.cnblogs.com/zhang-shijie/p/5294162.html 一:基介紹 官網地址www.nginx.org,nginx是由1994年畢業于俄羅斯國立莫斯科鮑曼科技大學的同學為俄羅斯rambler.ru公司開發的,開發工作最早從2002年開始,第一次公開發布時間…

PI校正環節的程序實現推導過程

PI校正環節在經典控制論中非常有用,特別是對負反饋控制系統,基本上都有PI校正環節。1.下面分別說明比例環節和積分環節的作用,以階躍信號為例。①比例環節單獨作用以上分析說明,若只有比例環節的控制系統,階躍響應也是…

XML文檔注釋(C#)

目錄XML文檔編譯器識別的標記添加XLM注釋的方法添加XLM注釋的例子XML文檔 C#可以根據特定的注釋自動創建XML格式的文檔說明。 這些注釋都是單行注釋&#xff0c;但都以三條斜杠開頭 編譯器識別的標記 標記說明<C>把行中的文本標記為代碼&#xff0c;例如<c>int …

vs里根據json快速創建對應類的方法

有時候,我們在調用別人接口的時候,服務端返回了一個json格式的字符串,我們要獲取json里面的數據的話一般有兩種方式: 1.通過正則 2.反序列化成一個對象 第一種方式這里不再多說,主要說一下第二種,(為什么呢&#xff0c;你看到后面 你也會喜歡上第二種) 有人肯定會說, json字符串…

德魯克的《卓有成效的管理者》

是一本很好的書&#xff0c;對我有諸多的啟發&#xff0c;這本書我在短期內連看兩遍呢。 現將一些我覺得有啟發性的句子發給大家分享。 1. 一個人的有效性&#xff0c;與他的智力、想象力或知識之間&#xff0c;幾乎沒有太大的關聯。有才能的人往往最為無效&#xff0c;因為他們…

人工智能之基于face_recognition的人臉檢測與識別

不久乘高鐵出行&#xff0c;看見高鐵火車站已經實現了“刷臉進站”&#xff0c;而且效率很高&#xff0c;很感興趣&#xff0c;今天抽時間研究一下&#xff0c;其實沒那么復雜。 我基本上是基于https://github.com/ageitgey/face_recognition上的資料和源碼做一些嘗試和試驗。 …

iOS 升級https的方案選擇

我的選擇是將UIWebView統一替換為WKWebView WKWebView AFN SDWebImage https的支持之前的博客都有涉及轉載于:https://www.cnblogs.com/Jusive/p/6867531.html

預處理指令(C#)

目錄預處理指令簡介#define、#undef#if、#elif、#else、#endif#warning、#error#region、#endregion#line、#line default#pragma預處理指令簡介 微軟對預處理指令解釋鏈接 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/preprocessor-directives/index…

NSWindowController的初始化創建代碼

-(PRAboutWindowController*)aboutCtrl{ if(_aboutCtrl nil){ _aboutCtrl [[PRAboutWindowController alloc]initWithWindowNibName:"PRAboutWindowController"]; } return _aboutCtrl ; } 轉載于:https://www.cnblogs.com/PJXWang/p/5816675.html

對CMMI3的學習和思考

原文出處&#xff1a; http://tech.it168.com/m/2007-08-02/200708020957750.shtml本文請勿轉載。近來筆者所在公司正在為過CMMI3做各種準備&#xff0c;對公司的員工進行了一些相關的培訓&#xff0c;作為項目管理人員的我&#xff0c;在學習CMMI3的過程中&#xff0c;也有了自…

Python3抓取糗百、不得姐

?點擊關注 異步圖書&#xff0c;置頂公眾號 每天與你分享 IT好書 技術干貨 職場知識 重要提示1:本文所列程序均基于Python3.6,低于Python3.6的Python版本可能無法運行.重要提示2:因所抓取的網站可能隨時更改展示內容,因此程序也需及時跟進.重要提示3:本程序僅供學習,不能拿去做…

halcon邊緣檢測的方法及各種方法的適用范圍

目錄一、邊緣提取二、BLOB分析檢測三、贓物檢測一、邊緣提取 1、設置ROI興趣區域 2、快速二值化&#xff0c;并連接相鄰區域。 這樣做的目的是進一步減少目標區域&#xff0c;通過二值化將目標區域大概輪廓提取出來 3、提取最接近目標區域的輪廓 常用函數有boundary&#xff0…

Oracle優化-表設計

前言  絕大多數的Oracle數據庫性能問題都是由于數據庫設計不合理造成的&#xff0c;只有少部分問題根植于Database Buffer、Share Pool、Redo Log Buffer等內存模塊配置不合理&#xff0c;I/O爭用&#xff0c;CPU爭用等DBA職責范圍上。所以除非是面對一個業已完成不可變更的系…

Win10遠程桌面 出現 身份驗證錯誤,要求的函數不受支持,這可能是由于CredSSP加密Oracle修正 解決方法...

升級至win10 最新版本10.0.17134&#xff0c;遠程桌面連接Window Server時報錯信息如下&#xff1a; 出現身份驗證錯誤&#xff0c;要求的函數不正確&#xff0c;這可能是由于CredSSP加密Oracle修正。 解決方法&#xff1a; 運行 gpedit.msc 本地組策略&#xff1a; 計算機配置…

CMM2

原文出處&#xff1a;http://hi.baidu.com/seaweaver/blog/item/e80e7af427f674d9f2d3854a.html CMM2的六個KPA 1、需求管理 &#xff08;RM&#xff0c;Requirement Management&#xff09; 2、軟件項目計劃 &#xff08;SPP&#xff0c;Software Project Planning&#…