2009-12-01 2 views
1

У меня есть большой сценарий поиска загружаемого потока в python.Балансировщик исходящей нагрузки

Мой вопрос в том, как я могу загрузить баланс исходящий запросов, чтобы я не попадал ни в один хост слишком часто?

Это большая проблема для feedburner, поскольку большой процент сайтов проксирует их RSS через feedburner и, чтобы еще больше усложнить дело, многие сайты будут обладать субдоменом в своем домене для feedburner, чтобы скрыть тот факт, что они используют его (например, «mysite» устанавливает свой RSS-адрес в файл feeds.mysite.com/mysite, где feeds.mysite.com отскакивает до feedburner). Иногда это блокирует меня на некоторое время и перенаправляет на их "automated requests" error page.

+1

Сайты не перенаправляют на feedburner, чтобы скрыть тот факт, что они его используют, сделайте так, чтобы они сохранили контроль над URL-адресом своего канала. –

ответ

2

Если ваша проблема связана с Feedburner "throttling you", это, безусловно, делает это из-за IP-адреса вашего бота. Путь к «балансировке нагрузки для Feedburner» должен состоять в том, чтобы начать с нескольких разных исходных IP-адресов.

В настоящее время существует множество способов достижения этой цели, 2 из них:

  1. многодомные сервер: несколько IP-адресов на одном компьютере
  2. Множественные дискретные машины

Конечно, не переходите в поле NAT перед ними ;-)


Вышеупомянутые данные t akes заботится о возможных «проблемах дросселирования», теперь для «части планирования». Вы должны поддерживать «виртуальный планировщик» на «пункт назначения» и не превышать параметры веб-службы (например, Feedburner), о которой идет речь. Теперь сложная часть состоит в том, чтобы завладеть этими «ограничениями» ... иногда они рекламируются, и иногда вам нужно их экспериментально определить.

Я понимаю, что это «архитектурные принципы высокого уровня», но я не готов к кодированию это для вас ... Я надеюсь, что вы простите меня ;-)

1

«, как я могу загрузить баланс исходящих запросов так что я слишком часто не попадаю ни в один из хостов? "

Как правило, вы делаете это, создавая лучший алгоритм.

Например, случайным образом скремблируйте ваши запросы.

Или перетасуйте их «честно», чтобы вы обходили вокруг источников. Это будет простой список очередей, в которых вы удаляете один запрос от каждого хоста.

+0

... это никоим образом не поможет, если службы на другом конце «дросселируют по источнику IP». – jldupont

+0

... который любой разумный веб-сервис ** должен делать в любом случае. «Всегда управляйте своим периметром или еще ...» – jldupont

+0

Мне нужно понравиться перехват urllib в точке разрешения dns, чтобы рассказать о загрузке на каждом хосте. –

3

Возможно, вы должны сделать одноразовый запрос (в неделю/месяц, независимо от того, подходит ли он). для каждого фида и следовать переадресации, чтобы получить «истинный» адрес. Независимо от вашей ситуации регулирования в то время вы должны иметь возможность разрешать все каналы, сохранять эти данные, а затем просто делать это один раз для каждого нового фида, который вы добавляете в список. Вы можете посмотреть urllib's geturl(), поскольку он возвращает окончательный URL-адрес из URL-адреса, который вы вставляете в него. Когда вы выполняете ping-каналы, обязательно используйте оригинал (сохраняйте «реальный» просто для балансировки нагрузки), чтобы убедиться, что он перенаправляется правильно, если пользователь переместил его или аналогично.

Как только это будет сделано, вы можете просто разработать механизм загрузки, такой как только X запросов в час для данного домена, проходящий через каждый канал и пропускающий каналы, хосты которых достигли предела.Если feedburner сохраняет свои ограничения публично (вряд ли), вы можете использовать это для X, но в противном случае вам просто нужно будет оценить его и сделать приблизительную оценку, которую вы знаете, чтобы быть ниже предела. Однако, зная Google, их ограничения могут измерять шаблоны и не иметь определенного жесткого ограничения.

Редактировать: Добавлено предложение из комментария.

+0

Я бы изменил один раз в один раз в день. Люди меняют свои переадресации время от времени. –