在 PHP 中實現輪詢(Round Robin)負載均衡,可以通過使用一個簡單的計數器和取模運算來實現。以下是一個示例:
<?php
class LoadBalancer
{
private $servers;
private $currentIndex;
public function __construct($servers)
{
$this->servers = $servers;
$this->currentIndex = 0;
}
public function getServer()
{
$server = $this->servers[$this->currentIndex];
$this->currentIndex = ($this->currentIndex + 1) % count($this->servers);
return $server;
}
}
// 示例:使用輪詢負載均衡器
$servers = ['server1', 'server2', 'server3'];
$loadBalancer = new LoadBalancer($servers);
for ($i = 0; $i < 10; $i++) {
$server = $loadBalancer->getServer();
echo "Request #{$i} routed to: {$server}\n";
}
在這個示例中,我們創建了一個名為 LoadBalancer
的類,它接受一個服務器列表作為參數。getServer()
方法會根據當前索引返回一個服務器,并將索引遞增,然后對服務器數量取模,以確保索引始終在服務器列表的范圍內。這樣,每次調用 getServer()
時,都會按順序返回一個不同的服務器,實現了輪詢負載均衡。
在示例的最后部分,我們創建了一個包含三個服務器的列表,并使用輪詢負載均衡器將 10 個請求路由到這些服務器。輸出結果將顯示請求如何按順序分配給每個服務器。