Java 如何跨多个爬虫实现url测试/缓存并保持良好的性能?
目前,我正在开发一个小型webcrawler,用于私人测试 我的基本设置如下:Java 如何跨多个爬虫实现url测试/缓存并保持良好的性能?,java,mysql,database,caching,web-crawler,Java,Mysql,Database,Caching,Web Crawler,目前,我正在开发一个小型webcrawler,用于私人测试 我的基本设置如下: -2 Computers do the crawling (small ram) -1 Computer is the main "Database" (big ram). 我的主要问题是如何在多个爬虫上正确地实现URL测试 如果我只有一个爬虫程序,我会在java中实现一个bloom过滤器,但是当你有无限个爬虫程序时,我被困在如何做到这一点上——因为它们需要同步?所以需要一个中央缓存或者其他什么,它如何保持快速
-2 Computers do the crawling (small ram)
-1 Computer is the main "Database" (big ram).
我的主要问题是如何在多个爬虫上正确地实现URL测试
如果我只有一个爬虫程序,我会在java中实现一个bloom过滤器,但是当你有无限个爬虫程序时,我被困在如何做到这一点上——因为它们需要同步?所以需要一个中央缓存或者其他什么,它如何保持快速
在一段时间后用数百万行查询MySQL可能会非常慢…它们不必完全同步。想想看-如果你在爬虫程序1上的缓存中添加一个URL,然后爬虫程序2在几秒钟内看不到它,最糟糕的情况是它们都会抓取相同的页面,这可能已经发生了。是的,但我不应该尝试避免重复抓取URL以保持良好的速度吗?还有,为什么你认为查询一个有数百万行的表会很慢?我读过一篇文章,有人使用MySQL作为缓存,当你向队列中添加url时,它会根据缓存检查每个url。我认为某种消息队列会有所帮助。例如,RabbitMQ。但在这种情况下,您需要类似爬虫管理器的东西来处理爬虫结果,并将爬虫的任务放入队列中。