2010-09-08 39 views
0

我试图写应用程序,这将重定向或不是一些网络流量。假设,我想将10%的移动重定向到另一个Web服务器。问题是,我不知道如何在我的应用程序中将该条件转换为逻辑条件。由于输入我有请求数。如何获取哪个请求应该被重定向,哪些不是,如果请求数量仍然在变化?简单的负载平衡alghorithm

THX的所有帮助

+0

你只是得到请求的肿块数量,还是他们在进来一个时间?如果每次都有一个,那么每十分之一呢?如果一次性购买10%并分配它们,怎么样? – Ragster 2010-09-08 09:29:28

回答

0

获取随机数从<0;10)范围,然后如果这number is equal to 0。重定向到另一个网络服务器。

或者

您可以使用此http://en.wikipedia.org/wiki/Round_robin算法。

或者

你可以了解这个10%的会忘掉,写一些功能的服务器上获得免费的资源,那么你可以谁在选择的时间更自由的资源,并在所有的服务器选择服务器已满您可以放弃错误连接或推送到随机服务器。

或者

想想做这Web代理服务器层上,我认为这是一个更好的解决方案。

阅读本http://en.wikipedia.org/wiki/Reverse_proxy

0

Apache的文档对load balancing(按Ctrl + F它在该网页)的部分。

通常情况下,最好将来自同一个IP地址的请求保存到同一台服务器上。只要你没有从1个IP地址太多的要求,像下面的伪代码应工作:

servers = [0: server0.com, 1: server1.com, ...]; 
server_count = 10; 
# split the crc32 range into server_count chunks 
server = crc32(get_client_ip_address()) % (4294967296/server_count); 
redirect(servers[server]);