Home  >  Article  >  Backend Development  >  Round robin weighted round robin algorithm PHP implementation code, roundrobin_PHP tutorial

Round robin weighted round robin algorithm PHP implementation code, roundrobin_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:50:581167browse

round robin weighted round robin algorithm PHP implementation code, roundrobin

first enter the code, using PHP scripting language

<&#63;php

/* 
 * Copyright (C) FatHong
 */

/* 数据初始化,weight: 权重 */
$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);
}

/* 输出结果 */
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;
}

Output result:

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

Among load balancing servers, one implementation algorithm is round-robin weight rotation, which means each server is marked with a weight in the back-end server list to represent its probability of being adopted.

This code strips out the simplest process and does not consider backend hangs and other situations. You can know how it is implemented. It is for reference only.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133053.htmlTechArticleround robin weighted round robin algorithm PHP implementation code, roundrobin code first, using PHP script language php/* * Copyright (C) FatHong *//* Data initialization, weight: weight*/$hosts['a'] = a...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn