PHP-Implementierungscode für den Round-Robin-gewichteten Round-Robin-Algorithmus

高洛峰
Freigeben: 2023-03-04 14:42:01
Original
1281 Leute haben es durchsucht

Geben Sie zuerst den Code mithilfe der PHP-Skriptsprache ein

<?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;
}
Nach dem Login kopieren

Ausgabeergebnis:

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

Server, Einer seiner Implementierungsalgorithmen ist die Round-Robin-Gewichtungsrotation, was bedeutet, dass in der Back-End-Serverliste jeder Server mit einem Gewicht markiert ist, um seine Übernahmewahrscheinlichkeit darzustellen.

Dieser Code entfernt den einfachsten Prozess, ohne Back-End-Hänge und andere Situationen zu berücksichtigen. Sie können wissen, wie er implementiert wird, nur als Referenz.

Weitere Round-Robin-Gewichtsräder für verwandte Artikel Für algorithmenbasierten PHP-Implementierungscode beachten Sie bitte die chinesische PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage