用 PHP 实现几种负载均衡调度算法,详细见 负载均衡算法 系列。
use Robin\SmoothWeightedRobin;
require_once '/Autoloader.php';
// 加权轮询
$services = [
'192.168.10.1:2202' => 5,
'192.168.10.2:2202' => 1,
'192.168.10.3:2202' => 1,
];
// 使用平滑加权算法
$robin = new SmoothWeightedRobin();
$robin->init($services);
$nodes = [];
for ($i = 1; $i <= 7; $i++) {
$node = $robin->next();
$nodes[$i] = $node;
}
//var_export(array_count_values($nodes));
var_export($nodes);
使用平滑加权算法调度,会生成如下均匀序列:
'192.168.10.1:2202'
'192.168.10.1:2202'
'192.168.10.2:2202'
'192.168.10.1:2202'
'192.168.10.3:2202'
'192.168.10.1:2202'
'192.168.10.1:2202'