Балансировщик исходящей нагрузки - PullRequest
1 голос
/ 01 декабря 2009

У меня есть большой многопоточный сценарий поиска каналов в python.

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

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

Ответы [ 3 ]

3 голосов
/ 01 декабря 2009

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

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

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

2 голосов
/ 01 декабря 2009

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

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

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

Конечно, не стоит сейчас ставить перед ними коробку NAT; -)


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

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

1 голос
/ 01 декабря 2009

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

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

Например, случайное шифрование ваших запросов.

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

...