在 PHP 中實現(xiàn)輪詢(Round Robin)負載均衡,可以通過使用一個簡單的計數(shù)器和取模運算來實現(xiàn)。以下是一個示例:
<?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";
}
在這個示例中,我們創(chuàng)建了一個名為 LoadBalancer
的類,它接受一個服務(wù)器列表作為參數(shù)。getServer()
方法會根據(jù)當前索引返回一個服務(wù)器,并將索引遞增,然后對服務(wù)器數(shù)量取模,以確保索引始終在服務(wù)器列表的范圍內(nèi)。這樣,每次調(diào)用 getServer()
時,都會按順序返回一個不同的服務(wù)器,實現(xiàn)了輪詢負載均衡。
在示例的最后部分,我們創(chuàng)建了一個包含三個服務(wù)器的列表,并使用輪詢負載均衡器將 10 個請求路由到這些服務(wù)器。輸出結(jié)果將顯示請求如何按順序分配給每個服務(wù)器。