我正在编写一个需要每隔30天+5天(它需要随机)执行任务(连接到中央服务器)的Windows服务。该服务将在2000多台客户端计算机上运行,因此随机性旨在将它们调平,以免服务器过载。
最好的方法是什么?目前,我选择自上次运行任务以来25-35天之间的随机时间并使用它。
有没有人有更好的方法?还有更好的方法吗?
答案 0 :(得分:4)
你听到的对我来说听起来很不错。你可能想稍微偏向它,如果它在25天之后执行,那么如果你明白我的意思,那么下次更有可能在30天内执行,
另一种选择是你可以向中央服务器询问一个合适的“插槽” - 这样可以避免自身过载(假设一切都是自己的行为)。
答案 1 :(得分:3)
我肯定会做Jon在他的第二段中建议的内容,然后移动逻辑来决定何时在服务器旁边执行。通过这种方式,您可以有效地控制客户端,并且无需将应用程序重新分发到2000多台计算机即可对算法进行更改。
答案 2 :(得分:2)
服务器可以告诉客户端何时连接?如果是这样,则服务器可以具有在整个时间间隔内均匀分布的“预定连接时隙”池。服务器可以根据需要分发这些内容,从而确保均匀分布。
答案 3 :(得分:0)
似乎足够好。您可能希望在使用它们时从列表中删除每一天(以确保在某些时候使用每一天,因为随机选择的某些可能永远不会被选中!)。
答案 4 :(得分:0)
除了长期调配之外,如果服务器接近容量指示客户端稍后再试,则可以让服务器返回状态代码。那时你可能会延迟一个小时左右,而不是25-35天。