我正在考虑为静态内容(即图像)制作一个穷人的应用程序级负载均衡器。我想知道这是否是最好的方法。让我在代码中解释一下:
示例HTML页面:
<html>
<body>
<?=load_image('filename.jpg');
</body>
</html>
PHP中的示例代码:
<?php
function load_image ($file)
{
$server = get_current_server();
update_next_server($server);
return '<img src="'.$server.$file.'" />';
}
function update_next_server ($server)
{
$a[1] = 'server1.com';
$a[2] = 'server2.com';
$a[3] = 'server3.com';
$server_id = array_search($server, $a); // example: if $server = 'server2.com' then this will return 2;
// increment next server id
$server_id = $server_id + 1;
// prevent going beyond valid server ids
if ($server_id >= 3)
$server_id = 1;
$db->query('UPDATE tbl_next_server SET server_id = "'.$server_id.'" ');
}
function get_current_server ()
{
return $db->query('SELECT server_id FROM tbl_next_server');
}
基本上,这假设相同的图像存储在所有三个服务器中,并且每次查看页面时它都会旋转服务器。
现在我的问题是,这是最好的方法吗?还是有更好的方法?
答案 0 :(得分:0)
在您的代码中 - 对图像1的2个查询。不是太多了吗?
你必须观察加载更多内容 - database \ filesystem \ memory \ processor load?取决于该解决方案可以通过许多方式提供。例如,如果DB过载,您可以尝试在磁盘上存储last_server_used
值(例如,在会话存储中)。
P.S。无论如何我没有看到任何原因输出图像\静态(例如)与任何PHP代码。输出静态内容是nginx
个工作。所以我强烈建议您尝试在其他服务器配置文件上编写相同的平衡器。