您的位置

巴塞罗那足球直播吧:自古帝王多短命,假如皇帝也懂負載均衡算法...

來源:2012奥运会足球直播表 點擊:1466

2012奥运会足球直播表 www.ubmml.com.cn 假設在一定時期內,阿瑪皇帝最寵信的貴妃是凌飛、賢妃、高貴妃和春妃。如何選擇常用的輪詢算法?

我們首先定義一組小妾如下:

然后我們在表中輪詢小妾,并使用可變索引來記錄輪詢位置。

輸出不會被發布。該算法的特點是簡單,簡單,簡單!但是也有很大的缺點!

如果皇帝更加寵愛他的妻子,想要她服侍她呢?然后你需要使用下面的加權輪詢算法!

加權輪詢算法

加權輪詢是主觀地為每個妾設置一個偏好值(權重值)來控制被選中的概率,所以我們需要定義以下配置:

這里的配置不再是簡單的設置,每個妾都有一個權重值。在輪詢期間,如何根據該值增加被選擇的概率?

讓我們來談談三種常見的實現。

加權輪詢實現一

我們的想法是根據權重值將這個映射的鍵(妾)轉儲到一個列表中,然后輪詢這個列表。如果權重值為5,則將5條相同的記錄添加到列表中!

然后我們瀏覽這個列表,所以權重值越高,出現在列表中的概率就越高,被輪詢的概率就越高!

輸出結果如下:

加權輪詢算法相對簡單,易于實現。然而,還有一個問題。我們配置的權重值是5、1、3和2。我們還可以將它們配置為50、10、30和20嗎?

根據上述方法,我們是否需要將數百個相同的元素放入列表中?這顯然是不合理的,而且會消耗內存!

加權輪詢實現兩個

基于上述算法中存在的問題,我們考慮使用相似的比例來處理它們。

例如,我們配置的權重值是50、10、30、20,這意味著橫坐標上的0_____50_60__80__110。

我們仍然使用索引來記錄投票位置。如果索引介于0和50之間,則表示選擇了第一個妾;如果索引介于50和60之間,則表示選擇了第二個妾.

我們看到了具體的代碼實現:

輸出結果與上面的方法相同:

加權輪詢算法比第一個稍微復雜一些。然而,這兩種實現方式的共同問題是,根據我們當前的配置,針對妃嬪的投票將連續進行5次,針對精制妃嬪的投票將進行1次,針對高級妃嬪的投票將進行3次.

連續5次!即使阿瑪皇帝再喜歡做公主,連公主都有點過分了!用計算機術語來說,就是負載不是很平衡!

加權輪詢實現三(平滑加權輪詢)

平滑加權輪詢算法是為了解決上述負載不平衡的情況,實現起來比較復雜!

每一個妾不僅有一個體重,而且有一個動態變化的體重來輔助計算。

動態權重值的計算邏輯如下:

動態權重值最初為0。

設置dynamicweight=dynamicweight,每次你得到一個獲得目標公主的投票。

然后在所有嬪妃中找出最有活力的一個,這是這次調查的目標。

將本次輪詢的目標的動態權重設置為動態權重-總權重。

從這個角度來看可能有點不清楚。讓我們做一個計算,并假設我們仍然有下面的配置(在配置中只有妾的名字和相應的重量值):

在上面的配置中,總重量值=5 1 3 2等于11。

①根據上述算法的第一點,在第一次輪詢目標之前,它們的動態權重為0。

因此,四個嬪妃的權重和動態權重值如下:

②根據上述算法的第二點,動態權重=第一次輪詢所選目標時的動態權重。

修改后,四個妃子的權重和動態權重值如下:

③根據上述算法的第三點,找到最大的動態權重,即5,因此公主在第一輪投票中被選中。

④根據上述算法的第四點,需要從總權重中減去公主的動態權重。

修改后,四個妃子的權重和動態權重值如下:

然后在第二次輪詢時根據算法的第一點設置動態權重。

設置重量和動力重量

這樣,它就按照算法進行了處理。經過11輪投票,所有嬪妃的動態權重將再次變為0.

如果每個人都有點模糊,我們只能用代碼來表示尊敬!我們需要定義一個實體來存儲每個公主和相應的權重和動態八個屬性:

然后定義兩個全局對象存儲對象:

然后實現算法:

最后的輸出如下:

經過11輪的輪詢,公主也出現了5次,但顯然它不會像以前的算法那樣連續出現,它會更加平衡!如果不清楚,您可以從本文末尾的Github地址下載代碼,并自己調試和理解它!

隨機算法

平滑加權輪詢算法可以很好地加載!然而,阿瑪皇帝還說,根據投票算法,我可以在沒有刺激或刺激的情況下,把每天晚上在臥室服務的妃子帶出來。

皇帝,我們可以理解我們總是喜歡有一些新鮮的刺激!幸運的是,我們有一個隨機算法來解決這個問題。我們每晚隨機選擇一個,這樣皇帝就不能提前推測并給皇帝足夠的刺激。

我們仍然定義一組小妾如下:

然后使用隨機函數選擇一個目標:

因為輸出是隨機的,所以不會在這里發布。如果理解了輪詢算法,隨機算法也很容易理解。只有全局索引用于存儲輪詢中每個周期的位置,而值是隨機生成的。

weighted random algorithm

weighted random implementation one

weighted random implementation one幾乎與上述加權輪詢實現one的思想相同,因此代碼直接應用于此處:

weighted random implementation two

weighted random implementation two幾乎與上述加權輪詢實現two的思想相同,因此代碼直接應用于此處:

source address hash algorithm

我們工作中開發系統的一個常見要求是在訪問之前登錄,這將涉及會話!

如果我們不共享會話,登錄會話信息將只存在于我們稱為登錄界面的服務器上!

根據以前的輪詢算法或隨機算法,來自同一個客戶端的多個請求將落在不同的服務器上,這將導致一些接口沒有訪問權限!

因此,我們需要同一個客戶端在同一個服務器上丟棄多個請求。這里一個常見的方法是散列源地址!

當我們到了這里,我們必須讓我們的阿瑪爾皇帝休息一會兒,然后回到我們正常的商業場景。如果我們有一個如下配置的服務器:

ip被客戶端訪問我也模擬了一個集合:

源地址哈希算法的思想是對客戶端的ip進行哈希,然后用哈希值對服務器的數量進行建模,得到要訪問的服務器的ip。只要客戶端ip保持不變,哈希后的值就是固定的!

實現如下:

最后的輸出如下:

這樣,不管執行多少次,同一個客戶端ip請求獲得的服務器地址都是一樣的!

這種認識很簡單,但也很脆弱!因為我們的服務器數量可能會發生變化,所以今天有一臺機器離線,明天又有一臺機器離線是很常見的。

一旦服務器數量發生變化,源地址哈希后的模值可能會發生變化,所獲取的服務器的ip地址也會自然發生變化!

例如,我們的服務器移除了一臺192.168.4.10機器,然后查看輸出:

比較輸出結果,我們可以看到影響幾乎是全球性的!即使服務器數量發生變化,我們能否制定計劃來減少受影響的客戶端數量?這需要以下一致的哈希算法!

一致散列算法

加權輪詢算法實現2我們討論過將權重值轉換成橫坐標來顯示,我們能在這里使用同樣的想法嗎?

在客戶端ip哈希之后,它只是一個int32號碼,然后我們可以將一個int32號碼分成幾個段,讓每個服務器負責一個段請求!

為了可視化以下內容,我們使用ip1、IP2、IP3和IP4分別表示服務器192.168.2.10、192.168.2.20、192.168.2.30和192.168.2.40。如上圖所示:

如果客戶端IP的哈希值在0~ 0之間,將由IP2服務器處理。

如果哈希后的客戶端ip值介于~之間,則由IP3服務器處理。

如果哈希后的客戶端ip值介于~之間,則由IP4服務器處理。

如果哈希后客戶端ip的值大于或等于,則由IP1服務器處理。

但是專業的表達會從這個橫坐標白萬形成一個環,叫做所謂的哈?;?,如下圖所示:

為了讓它更直觀!如果IP4服務器有一天發生故障,所有最初需要轉到IP4的請求都將被轉移到IP1服務器進行處理。

這仍然會影響一些客戶的請求,但至少影響是部分的,如下圖所示:

這樣可以嗎?我們考慮兩個問題:

散列環上每個服務器的位置由我們人工平均分配。當經常需要擴展或縮減容量時,維護是否困難?

IP4關閉,對IP4的請求都轉移到IP1。這會導致IP1的流量不均衡嗎?能否有一個更平衡的計劃將原始流量轉移到IP4到IP1、IP2和IP3?

問題1的解決方案不是手動分配節點的位置,而是根據服務器的ip計算哈希值,然后查看哈希值在環上的位置!

這樣做的一個問題是每個集群中服務器的ip是不同的,所以計算后在環上的位置可能無法控制。

如下圖所示,上述四臺服務器的位置可能如下:

顯然,這種情況非常不均衡,會導致數據傾斜!上面問題2中的問題實際上是?;斐傻氖薟歡猿?!

ring的左上部分是如此的空,我們能根據當前4臺服務器的其他規則在左上部分生成一些節點嗎?這是否意味著請求會稍微統一一些?

這就是所謂的虛擬節點!一個虛擬節點是同一個服務器ip,它根據某個規則生成多個hashcode,因此環上有多個節點。

如下圖所示:

這只是模擬每臺服務器有兩個虛擬節點,實際開發中還會有更多!這樣,即使IP4機器掛起,請求也不會全部壓到一臺服務器上!

說了這么多,實施起來并不困難。下面是代碼(服務器配置和請求的客戶端ip與源地址哈希算法一致,所以相應的代碼不粘貼在這里,算法邏輯直接應用):

這里介紹了幾種常用的負載平衡算法和代碼實現!尚不清楚您是否可以從同性約會網絡下載樣本代碼并自行調試:

Author:蘇靜

Introduction:在大型互聯網項目中有多年的開發經驗,并在高度并發、分布式和微服務技術方面有深入研究和相關實踐經驗。有自學經驗,熱衷于技術研究和分享!座右銘:永遠保持開放的心態去學習!回到搜狐看更多



{ganrao} 巴蜀麻将上下分模式群 股票配资推荐ˉ杨方配资靠谱 小西悠番号图片 让分胜负 现在世界杯比分多少 丫丫陕西麻将官方网站 av女优色站视频 澳洲幸运5 球探比分3u娱乐城 pk10是正规的 老友内蒙古麻将外挂 里美 尤利娅 中文字幕在线 安徽十一选五走势一 内蒙麻将一元群 椎名由奈全部番号封面 11选5的走势图山东