关于去重的问题
来源:18-2 分布式爬虫架构

linzexin
2020-05-05
老师您好, 课程很好, 已经学完了, 回过来做去重有点疑惑.
我理解的去重的本质是是找个容器visitedUrls把访问过的url存起来, 下一个url去看一下这容器里有没有.
那05:30说的worker去调去重, 会不会有多个goroutine并发访问容器visitedUrls?
09:14时说, 把map换成redis, 在多个goroutine中访问, 好像也会有同步的问题?
还有, 05:57说并发版的爬虫各自调自己的去重服务是什么意思, 可以有很多个去重服务?
写回答
1回答
-
ccmouse
2020-05-05
谢谢同学的支持。
如果让每个worker去调用去重,的确需要处理并发的问题。需要加锁来保护。
把map换成redis的话是不需要处理同步问题的。redis当然能够支持并发访问。只是对于同一个key的值并发访问,我们可能需要在redis层面做一下保护,但是我们去重服务一般会把url或是url的hash作为key,值无关紧要,不存在对同一个key的值并发访问的问题。
还有各自去调去重服务,不一定是多个,一般一个去重服务就够了,所有的worker都可以去调它。
022020-05-08
相似问题