라운드 로빈 가중치 라운드 로빈 알고리즘 PHP 구현 코드

高洛峰
풀어 주다: 2023-03-04 14:42:01
원래의
1279명이 탐색했습니다.

먼저 PHP 스크립트 언어를 사용하여 코드를 입력하세요.

<?php
 
/* 
 * Copyright (C) FatHong
 */
 
/* 数据初始化,weight: 权重 */
$hosts[&#39;a&#39;] = array(&#39;weight&#39; => 5, &#39;current_weight&#39; => 0, &#39;count&#39; => 0);
$hosts[&#39;b&#39;] = array(&#39;weight&#39; => 3, &#39;current_weight&#39; => 0, &#39;count&#39; => 0);
$hosts[&#39;c&#39;] = array(&#39;weight&#39; => 2, &#39;current_weight&#39; => 0, &#39;count&#39; => 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[&#39;weight&#39;];
 
    $current[&#39;current_weight&#39;] += $weight;
    $total += $weight;
 
    if ( ($best == null) || ($hosts[$best][&#39;current_weight&#39;] < 
                $current[&#39;current_weight&#39;]) ) 
    {
      $best = $key;
    }
  }
 
  $hosts[$best][&#39;current_weight&#39;] -= $total;
  $hosts[$best][&#39;count&#39;]++;
 
  $result[] = $best;
}
로그인 후 복사

출력 결과:

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

서버의 구현 알고리즘 중 하나는 라운드 로빈 가중치 회전입니다. 즉, 백엔드 서버 목록에서 각 서버는 채택 가능성을 나타내는 가중치로 표시됩니다.

이 코드는 백엔드 중단 및 기타 상황을 고려하지 않고 가장 간단한 프로세스를 제거합니다. 참고용으로만 구현 방법을 알 수 있습니다.

더 많은 라운드 로빈 웨이트 휠 관련 기사 알고리즘 기반 PHP 구현 코드에 대해서는 PHP 중국어 사이트를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿