一直使用 Redis 作爬虫的任务队列,请问各位 V 友还有哪些其他选择吗?

2018-05-17 17:32:24 +08:00
 Nick2VIPUser

使用 redis 操作简单,能承受的并发大,写入和读取都很快。
想问问各位 V 友还有什么其他的类似技术、工具有在爬虫中使用的吗?
欢迎交流学习~

4687 次点击
所在节点    Python
12 条回复
gabon
2018-05-17 18:36:22 +08:00
用 netty 写一个调度器。
golmic
2018-05-17 18:38:45 +08:00
kafka
sunwei0325
2018-05-17 18:53:06 +08:00
scrapy 官方开源的分布式爬虫 frontera 了解一下
https://github.com/scrapinghub/frontera
wzwwzw
2018-05-17 21:24:24 +08:00
rabbitmq
whatsmyip
2018-05-17 22:31:38 +08:00
消息队列 +1

redis 速度很快,但是容量太小了
feverzsj
2018-05-17 23:34:58 +08:00
redis 或者数据库做任务队列的最大优势是支持事务性,如果不需要事务性,那用 nats 之类的消息队列更简单
woscaizi
2018-05-17 23:59:16 +08:00
消息队列
galaxyyao
2018-05-18 00:03:32 +08:00
@whatsmyip 爬虫任务队列每条最多也就几 k 了吧。按一条 10k 来算,就算是只有 8G 内存的服务器,至少也可以存 60w 条任务,一秒爬 1 条都可以爬足足 7 天了
kimown
2018-05-18 08:38:23 +08:00
redis 他爸写了个 disque,会合并到 redis4.2 里面
whatsmyip
2018-05-18 09:43:29 +08:00
@galaxyyao 爬不了 7 天。我用 100 并发,千兆带宽爬教育网内数据,基本一两天就写满了 6G 的内存。而且 redis 一旦达到一定的内存使用量,就会开始不停的进行写入磁盘操作,CPU 占满,读写速度骤减。要控制队列的量也不是一个简单的事情
Nick2VIPUser
2018-05-18 09:55:01 +08:00
@whatsmyip 另开一个线程定时定量把 redis 中的数据取出来持久化到其他硬盘数据库(如 MySQL ),减轻 Redis 压力
julyclyde
2018-05-18 11:19:33 +08:00
用 kafka 的基本上属于分不清 pubsub 和 messaging 模式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX