《2.6、页面搜集原理、技术和系统--可扩展搜索子系统》中我们知道一个好的搜索子系统需要解决2大问题,第一是节点间URL的划分策略,第二是系统的动态可配置性设计。本文主要是针对第一个问题做讲解。

节点间URL的划分策略体系结构图

节点间URL的划分策略体系结构图

从上图可以看出,调度器为了实现URL的合理划分,会管理多个协调进程,每个协调进程中都维护自己的已访问URL表和未访问URL表,然后调度器就可以按照以下步骤实现URL的划分:

  1. 对每个域名进行离散算法,平均的为每个节点分配域名。
  2. 每个节点通过蜘蛛抓取到网页,并对抓取到的网页进行分析,得到新的链接。
  3. 节点得到链接依次判断,是否该URL是自己负责的。如果不是,则询问调度器,看该URL由哪个节点负责,并且发送给该节点;如果是,则看是否存在已访问URL表中,存在则丢弃,否则添加到未访问URL表中。

小结

通过以上的策略,搜索引擎可以将URL平均的分配给各个节点,并且可以确保各个节点抓取的内容不会重复。

由于搜索引擎有成千上万的节点,每时每刻都存在节点损耗,新增节点的可能。如何确保节点增加或者减少的过程中工作仍然可以正常进行呢?黄聪会和大家在下一节一起分析。有兴趣的朋友请看《2.6.2、可扩展搜索子系统--系统的动态可配置性设计》