Frontier queue budgets(Frontier队列预算)

本文描述的是Heritrix1.14.x的行为,但大部分也适用于Heritrix2.x和Heritrix3.x。

概览

BdbFrontier有一系列可以扩展的设置(在主配置文件中可以配置),它使用“budgeting”处理器来给它内部的队列分配关注度,因此,单独的主机(应该是网络上要抓取的主机)和队列是一一对应的。

在这些配置下,BdbFrontier可能会定期交替队列使队列进入“活动”的状态或者移出“活动”的状态。一个队列处于“活动”状态时,这个队列适合把它的URIs提供给已经准备好的工作线程。正在运行“活动平衡“被耗尽时,这个队列将被做出停用的决定,当URIs被认为具有较高的”成本“时,"平衡"将加快耗尽因此,低成本URIs队列得到更多的关注度高成本的URIs队列得到更少的关注度

一个非活动状态队列会被安排到一个包含所有非活动队列的FIFO队列的后面。(应该是所有非活动队列的后面),当有需要时,非活动队列会变成活动队列然后被提供给一个准备好的工作线程。由于所有的活动状态线程正在被处理中或者处于各种各样的“休眠”的状态中,可能出现上面的情况。当队列变成活动状态后,它的运行活动平衡将会被重新装满(好像游戏中的满血复活),然后每个随后的URI尝试着缩减这个队列的平衡。当平衡变成非正数时,队列又一次进入非活动状态,这会给其它队列变成活动状态和获得关注度的机会,如果此时没有其它的非活动队列,那个被停用的队列的平衡将会被重新装满状态也立刻变成活动状态。

Frontier会在一个队列的生命周期内为它设置一个“总预算”,当一个队列处于活动状态时的总支出超过预算时,这个队列变成"退休"状态--被放置在一边,永久的处于不活动状态,只有操作员介入,例如为那个队列提高总预算--可以把它从永久不活动状态中召回来。当队列处于永久不活动状态时,它仍然保留着它所有的还未处理的URIs,并且继续接收新发现的URIs。

未完待续。。。

posted @ 2013-04-19 16:51  potato1895  阅读(155)  评论(0编辑  收藏  举报