我目前有一个系统,服务器告诉所有的客户端应用程序什么时候在服务器配置的时间窗口(例如12到6客户端时间)之间连接到服务器。非随机加权分配
当前算法通过时间窗口中的秒数对客户端的10位ID号(公平分布)进行修改,并为每个客户端连接到服务器提供相当平均分布的可预测时间。现在的问题是,客户端在不同的时区内是不成比例的,并且给定窗口的某些时区重叠,所以最终的结果是负载未在服务器上均匀分布。我想要的是设计一种算法,我可以用我们当前拥有的每个时区的一定比例的客户端进行配置,并让它在窗口之间分配客户端的下一个连接时间,从而导致服务器负载均匀这是可预测的(非随机)。
这里是一个简单的图形表示:
12AM 1AM 2AM 3AM 4AM 5AM 6AM GMT
GMT -4 40% of the clients ||||||||||||||||||||||||||||||
GMT -5 10% of the clients ||||||||||||||||||||||||||||||
GMT -6 20% of the clients ||||||||||||||||||||||||||||||
GMT -7 30% of the clients ||||||||||||||||||||||||||||||
当前算法是确定性的。我认为这是一项要求?服务器不能只记得每个客户的预期重新连接时间? – 2009-11-20 15:08:45
是的,它需要保持确定性。它不能一天一天地变化,并且需要能够在没有其他交易的情况下进行计算来读取或坚持它。 – duckworth 2009-11-20 15:38:33
对于每个连接的客户端,你知道他们的时区吗?这将影响可能的算法。 – 2009-11-26 05:30:40