Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何跨多个爬虫实现url测试/缓存并保持良好的性能?_Java_Mysql_Database_Caching_Web Crawler - Fatal编程技术网

Java 如何跨多个爬虫实现url测试/缓存并保持良好的性能?

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过滤器,但是当你有无限个爬虫程序时,我被困在如何做到这一点上——因为它们需要同步?所以需要一个中央缓存或者其他什么,它如何保持快速

目前,我正在开发一个小型webcrawler,用于私人测试

我的基本设置如下:

-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。但在这种情况下,您需要类似爬虫管理器的东西来处理爬虫结果,并将爬虫的任务放入队列中。