Нечеткое планирование - PullRequest
       14

Нечеткое планирование

3 голосов
/ 19 августа 2009

Я пишу службу Windows, которая должна выполнять задачу (которая подключается к центральному серверу) каждые 30 дней + - 5 дней (она должна быть случайной). Служба будет работать на более чем 2000 клиентских компьютерах, поэтому случайность предназначена для того, чтобы выровнять их, чтобы сервер не был перегружен.

Каков наилучший способ сделать это? В настоящее время я выбираю случайное время от 25 до 35 дней с момента последнего запуска задания и использую его.

У кого-нибудь есть способ получше? Есть ли лучший способ?

Ответы [ 5 ]

4 голосов
/ 19 августа 2009

То, что у тебя есть, звучит как хороший способ для меня. Вы могли бы хотеть сместить его несколько так, чтобы, если он был выполнен через 25 дней, в следующий раз он с большей вероятностью выполнялся через более чем 30 дней, если вы понимаете, о чем я.

Другая альтернатива заключается в том, что вы можете запросить у центрального сервера соответствующий «слот» - таким образом он сможет избежать перегрузки (при условии, что все ведет себя само).

3 голосов
/ 19 августа 2009

Я бы, конечно, сделал то, что предлагает Джон во втором абзаце, и переместил логику, чтобы решить, когда выполнять рядом с сервером. Таким образом, вы эффективно контролируете клиентов и можете вносить изменения в свой алгоритм без необходимости перераспределять приложение на своих компьютерах 2000+.

2 голосов
/ 19 августа 2009

Может ли сервер сообщить клиенту при следующем подключении? Если это так, сервер может иметь пул «запланированных слотов подключения», которые равномерно распределены по всему временному интервалу. Сервер может распространять их по своему усмотрению и, таким образом, обеспечивать равномерное распространение.

0 голосов
/ 19 августа 2009

Вдобавок к долгосрочному выравниванию, вы можете заставить сервер возвращать код состояния, если он близок к емкости, давая клиенту команду повторить попытку позже. В этот момент вы можете просто задержать час или около того, а не 25-35 дней.

0 голосов
/ 19 августа 2009

Кажется, достаточно хорошо. Возможно, вы захотите удалить каждый день из списка по мере его использования (чтобы гарантировать, что каждый день используется в какой-то момент, так как при случайном выборе некоторые могут никогда не быть выбраны!).

...