使用 redis 操作简单,能承受的并发大,写入和读取都很快。
想问问各位 V 友还有什么其他的类似技术、工具有在爬虫中使用的吗?
欢迎交流学习~
1
gabon 2018-05-17 18:36:22 +08:00 via Android
用 netty 写一个调度器。
|
2
golmic 2018-05-17 18:38:45 +08:00
kafka
|
3
sunwei0325 2018-05-17 18:53:06 +08:00
scrapy 官方开源的分布式爬虫 frontera 了解一下
https://github.com/scrapinghub/frontera |
4
wzwwzw 2018-05-17 21:24:24 +08:00
rabbitmq
|
5
whatsmyip 2018-05-17 22:31:38 +08:00
消息队列 +1
redis 速度很快,但是容量太小了 |
6
feverzsj 2018-05-17 23:34:58 +08:00
redis 或者数据库做任务队列的最大优势是支持事务性,如果不需要事务性,那用 nats 之类的消息队列更简单
|
7
woscaizi 2018-05-17 23:59:16 +08:00 via iPhone
消息队列
|
8
galaxyyao 2018-05-18 00:03:32 +08:00 via iPhone
@whatsmyip 爬虫任务队列每条最多也就几 k 了吧。按一条 10k 来算,就算是只有 8G 内存的服务器,至少也可以存 60w 条任务,一秒爬 1 条都可以爬足足 7 天了
|
9
kimown 2018-05-18 08:38:23 +08:00 via Android
redis 他爸写了个 disque,会合并到 redis4.2 里面
|
10
whatsmyip 2018-05-18 09:43:29 +08:00
@galaxyyao 爬不了 7 天。我用 100 并发,千兆带宽爬教育网内数据,基本一两天就写满了 6G 的内存。而且 redis 一旦达到一定的内存使用量,就会开始不停的进行写入磁盘操作,CPU 占满,读写速度骤减。要控制队列的量也不是一个简单的事情
|
11
Nick2VIPUser OP @whatsmyip 另开一个线程定时定量把 redis 中的数据取出来持久化到其他硬盘数据库(如 MySQL ),减轻 Redis 压力
|
12
julyclyde 2018-05-18 11:19:33 +08:00
用 kafka 的基本上属于分不清 pubsub 和 messaging 模式
|