2012-09-05 30 views
0

我正在考虑为静态内容(即图像)制作一个穷人的应用程序级负载均衡器。我想知道这是否是最好的方式。让我在代码解释:静态内容的应用程序级负载均衡

样本HTML页面:在PHP

<html> 
<body> 

<?=load_image('filename.jpg'); 

</body> 
</html> 

示例代码:

<?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

您目前是否有加载问题? – 2012-09-05 10:03:41

+0

@dagon是的,我也希望通过获取低端的盒子来存储静态内容,而不是一个大的昂贵的服务器来节省带宽资金。 – IMB

回答

0

在你的代码 - 2查询图像之一。这不是太多吗?

你必须观察什么会加载更多 - 数据库\文件系统\内存\处理器负载?取决于这个解决方案可以通过许多方式提供。例如,如果数据库过载,您可以尝试在磁盘上存储last_server_used值(例如,在会话存储中)。


P.S.无论如何我看不到任何理由输出图像\静态(例如)与任何PHP代码。这是nginx工作来输出静态内容。所以我强烈建议您尝试在其他服务器配置文件上写入相同的平衡器。