传出负载均衡器

时间:2009-12-01 15:43:14

标签: python networking web-crawler load-balancing feedburner

我在python中有一个很大的线程提要检索脚本。

我的问题是,我如何加载传出请求的余额,以便我不会经常访问任何一个主机?

对于feedburner来说这是一个大问题,因为很大一部分网站通过feedburner代理他们的RSS并且使许多网站将其域上的子域别名替换为feedburner以掩盖他们正在使用它的事实(例如, “mysite”将其RSS网址设置为feeds.mysite.com/mysite,其中feeds.mysite.com反弹到feedburner)。有时它会阻止我一段时间并重定向到他们的"automated requests" error page

3 个答案:

答案 0 :(得分:3)

您应该做一次性请求(每周/每月,无论适合)。对于每个Feed并按照重定向获取“真实”地址。无论您当时的限制情况如何,您都应该能够解析所有供稿,保存该数据,然后只需为添加到列表中的每个新供稿执行一次。您可以查看urllib's geturl(),因为它会从您输入的网址返回最终网址。当您对订阅源执行ping操作时,请确保使用原始文件(保持“真实”仅用于负载平衡)以确保在用户移动它或类似内容时重定向正确。

完成后,您可以简单地设计一个加载机制,例如每个小时只有给定域的X个请求,遍历每个Feed并跳过主机已达到限制的Feed。如果饲料燃烧器将其限制公开(不太可能),您可以将其用于X,但是否则您只需要估算它并粗略估计您知道低于限制。但是,了解谷歌,他们的限制可能会测量模式,而没有特定的硬限制。

修改:添加评论建议。

答案 1 :(得分:2)

如果你的问题与Feedburner“限制你”有关,那么由于机器人的源IP,它肯定会这样做。 “负载均衡到Feedburner”的方法是从多个不同的源IP开始。

现在有很多方法可以实现这一目标,其中2个是:

  1. 多宿主服务器:同一台计算机上的多个IP
  2. 多台独立机器
  3. 当然,你现在不要在他们面前放一个NAT盒子吗? - )


    上面介绍了可能的“节流问题”,现在是“调度部分”。您应该为每个“目标”维护一个“虚拟调度程序”,并确保不要超过相关Web服务(例如Feedburner)的参数。现在,棘手的部分是掌握这些“限制”......有时它们会被广告宣传,有时你需要通过实验来解决它们。

    我理解这是“高级建筑指南”,但我还没准备好为你编写代码......我希望你原谅我; - )

答案 2 :(得分:1)

“我如何对传出的请求进行负载均衡,以便我不经常点击任何一个主机?”

通常,您可以通过设计更好的算法来实现这一目标。

例如,随机加扰您的请求。

或者“公平地”对他们进行洗牌,以便您通过消息来源循环播放。这将是一个简单的队列列表,您可以从每个主机中取出一个请求。