【问题标题】:building a url queue建立一个 url 队列
【发布时间】:2009-06-02 02:39:37
【问题描述】:

哪个更适合在大型网络爬虫中构建 URL 队列。链表还是 B 树?

【问题讨论】:

    标签: url queue web-crawler


    【解决方案1】:

    如果你不需要搜索队列(并且队列通常不需要搜索),那么使用链表。

    【讨论】:

    • 是的,我的队列应该更像一个带有 push 和 pop 的堆栈。但由于它要处理数千个 url,我需要一个非常快速的实现。是否可以在链表上先进先出?
    • 是的。您需要使用头尾指针。在尾部插入并从头部移除。
    【解决方案2】:

    如果顺序很重要(队列也很重要),那么使用链表。如果你需要搜索队列,那么B-tree。

    【讨论】:

    • 不需要搜索,因为它像堆栈一样工作,只有我需要一个非重复的感知列表。有专门的链表吗?
    【解决方案3】:

    如果您正在构建一个大型爬虫,您几乎肯定希望使用 AMQP 消息队列之类的东西,很可能是 RabbitMQ。 RabbitMQ(和许多其他类似的 MQ)在正常安装的情况下每秒将执行超过 100,000 个事务。我在自己的蜘蛛/爬虫设置中使用它,它就像一个魅力。当然比从头开始构建类似的东西要容易得多。

    【讨论】:

    • 顺便说一下,最先进的高速消息队列确实在内部使用链表,并带有指向头部和尾部的指针。有时还会引用指向队列中其他位置的指针。真的取决于 MQ 的功能集。例如,AMQP 1.0 定义了“链接”的概念,链接必须维护自己的指向队列的指针。
    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多