麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 邏輯算法 > 正文

round robin權(quán)重輪循算法實(shí)現(xiàn)

2024-09-08 23:18:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

先上代碼,采用php腳本語(yǔ)言

<?php/*  * Copyright (C) FatHong *//* 數(shù)據(jù)初始化,weight: 權(quán)重 */$hosts['a'] = array('weight' => 5, 'current_weight' => 0, 'count' => 0);$hosts['b'] = array('weight' => 3, 'current_weight' => 0, 'count' => 0);$hosts['c'] = array('weight' => 2, 'current_weight' => 0, 'count' => 0);$result = array();/* 模擬10次 */for ($i = 0; $i < 10; $i++) {    round_robin($hosts, $result);}/* 輸出結(jié)果 */print_r($result);/* round robin 輪循 */function round_robin(&$hosts, &$result){    $total = 0;    $best = null;    foreach ($hosts as $key => $item) {        $current = &$hosts[$key];        $weight = $current['weight'];        $current['current_weight'] += $weight;        $total += $weight;        if ( ($best == null) || ($hosts[$best]['current_weight'] <                                 $current['current_weight']) )         {            $best = $key;        }    }    $hosts[$best]['current_weight'] -= $total;    $hosts[$best]['count']++;    $result[] = $best;}

輸出結(jié)果:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => a
    [4] => a
    [5] => b
    [6] => a
    [7] => c
    [8] => b
    [9] => a
)

負(fù)載均衡的服務(wù)器中,其實(shí)現(xiàn)算法有種是round-robin權(quán)重輪循,就是后端的服務(wù)器列表中,給每個(gè)服務(wù)器標(biāo)上權(quán)重,代表它被采用的機(jī)率。

這段代碼把最簡(jiǎn)潔的流程剝離出來(lái),沒(méi)考慮后端掛起等情況,可以知道它是怎么實(shí)現(xiàn)的,僅供參考。

-----------------------------------------------

小編hx注解:

附執(zhí)行時(shí),每個(gè)key的變化,就比較好理解了。

每次執(zhí)行時(shí)current_weight加上weight,如果當(dāng)前current_weight>=weight則命中,把命中的減去所有weight(本例中是10),然后不斷循環(huán)。

Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => -5
            [count] => 1
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 3
            [count] => 0
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 2
            [count] => 0
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 0
            [count] => 1
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => -4
            [count] => 1
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 4
            [count] => 0
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 5
            [count] => 1
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => -1
            [count] => 1
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => -4
            [count] => 1
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 0
            [count] => 2
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 2
            [count] => 1
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => -2
            [count] => 1
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => -5
            [count] => 3
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 5
            [count] => 1
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 0
            [count] => 1
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 0
            [count] => 3
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => -2
            [count] => 2
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 2
            [count] => 1
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => -5
            [count] => 4
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 1
            [count] => 2
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 4
            [count] => 1
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 0
            [count] => 4
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 4
            [count] => 2
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => -4
            [count] => 2
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 5
            [count] => 4
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => -3
            [count] => 3
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => -2
            [count] => 2
        )


)
Array
(
    [a] => Array
        (
            [weight] => 5
            [current_weight] => 0
            [count] => 5
        )


    [b] => Array
        (
            [weight] => 3
            [current_weight] => 0
            [count] => 3
        )


    [c] => Array
        (
            [weight] => 2
            [current_weight] => 0
            [count] => 2
        )


)

上一篇:排序算法

下一篇:linux loadavg 算法

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 性毛片视频 | 国产精品免费久久久久 | 久久久久九九九女人毛片 | 销魂美女一区二区 | 中文字幕在线观看1 | 国产成人精品区一区二区不卡 | 777午夜精品视频在线播放 | 国产99一区二区 | 欧美黄色一级片视频 | 亚洲人成在线播放网站 | 国产亚洲精品久久 | 久久久久久久久久综合 | 久久久www免费看片 亚洲综合视频一区 | 妇子乱av一区二区三区 | 亚洲免费毛片基地 | 久久精品日产第一区二区三区 | 国产乱一区二区三区视频 | 高清一区二区在线观看 | 成年人黄视频 | 日韩欧美中文字幕视频 | av手机免费在线观看 | 久久精品久久久久 | 91精品国产综合久久久动漫日韩 | 久久免费视频一区二区三区 | 国产女同玩人妖 | 极品大长腿啪啪高潮露脸 | www.xxx视频| 污版视频在线观看 | 久久逼逼| 国产精品美女久久久久久不卡 | 欧美成人自拍 | 久久久久久久久久久久久久久久久久 | 日本视频在线免费观看 | 亚洲啪啪 | 欧美乱论| h视频在线播放 | 久久在线免费视频 | 国产亚洲欧美视频 | 亚洲精华液久久含羞草 | 桥本有菜免费av一区二区三区 | 国产精品爱久久久久久久 |