我用python编写了一个爬行过程,它运行在亚马逊上的一个ec2实例上。我已经编写了这个爬虫,这样它就可以用它的结果向一个单独的"hub“实例报告。集线器处理爬虫的结果,爬虫可以自由地继续爬行。我在这个爬行实例中想到的是,克隆爬虫的几个实例很容易,每个实例都要向中心报告以便处理。
因此,在这一点上,我有一个集线器和8个单独的爬行器(都在它们自己的实例上)不断地爬行和报告等等。
我在想用小的,分开的爬行器:
我的问题是,这样做有效率吗?我会更好地旋转一个更大的实例,并以某种方式分割网络利用率吗?
预先感谢您的投入。如果这不是堆叠溢出的话题,请原谅我。
发布于 2015-01-08 20:32:49
我对你问题的看法。
(1)存在冗余,因此,如果一台履带机被挂断,其余的爬虫器就可以继续工作。
与自动缩放组一起设置以管理这些爬虫实例。
(2) (这是一个假设)如果每个爬虫都有自己独立的ip,我就有更好的网络利用率。
是的,如果在公共子网中创建的话,ec2实例可以拥有自己的公共和私有ip。在一个区域内,您可以设置为在不同的可用区域上启动实例(例如,美国-西部-2区域有三个AZs)。有了它,您就可以传播网络使用情况。
(3)根据我目前的需要,我可以旋转几个爬行器或缩小爬行器。
使用自动缩放组,您应该可以轻松地控制这个*。
我的问题是,这样做有效率吗?
*如果可以的话,在不同地区(美国、欧盟、亚洲等)设置ec2实例,以减少某些网站的延迟。*
我会更好地旋转一个更大的实例,并以某种方式分割网络利用率吗?
*在您的例子中,单独的较小的实例应该是一个更好的解决方案,它也为您节省了很多钱。也许您也可以考虑为这些爬虫使用。保存更多*
https://stackoverflow.com/questions/27846439
复制相似问题