3

我正在编写一个 Windows 服务,该服务需要每 30 天 +- 5 天执行一次任务(连接到中央服务器)(它需要是随机的)。该服务将在 2000 多台客户端计算机上运行,​​因此随机性旨在使它们保持平衡,以免服务器过载。

最好的方法是什么?目前,我在任务上次运行后 25 到 35 天之间随机选择一个时间并使用它。

有没有人有更好的方法?有没有更好的办法?

4

5 回答 5

4

你所拥有的对我来说听起来是个不错的方法。您可能希望对其进行一些偏差,以便如果这次它在 25 天后执行,那么下次它更有可能在 30 天以上执行,如果您明白我的意思的话。

另一种选择是您可以向中央服务器询问适当的“插槽” - 这样它可以避免自身过载(假设一切都自行运行)。

于 2009-08-19T14:10:00.733 回答
3

我当然会按照 Jon 在第二段中的建议去做,并移动逻辑来决定何时在服务器旁边执行。通过这种方式,您可以有效地控制客户端,并且可以更改您的算法,而无需将应用程序重新分发到您的 2000 多台机器上。

于 2009-08-19T14:28:18.183 回答
2

服务器可以告诉客户端下次连接的时间吗?如果是这样,服务器可以拥有一个在整个时间间隔内均匀分布的“预定连接槽”池。服务器可以随意分发这些,从而确保均匀分布。

于 2009-08-19T14:11:57.220 回答
0

似乎足够好。您可能希望在使用时从列表中删除每一天(以确保每一天都在某个时刻被使用,因为随机选择的一些可能永远不会被选中!)。

于 2009-08-19T14:12:24.427 回答
0

除了长期平衡之外,如果服务器接近容量,您可以让服务器返回一个状态代码,指示客户端稍后再试。那时你可以只延迟一个小时左右,而不是 25-35 天。

于 2009-08-19T14:24:15.303 回答