可扩展搜索子系统需要解决2大问题,第一是节点间URL的划分策略,第二是系统的动态可配置性设计。黄聪已经在上一节《2.6.1、可扩展搜索子系统--节点间URL的划分策略》分析了第一个问题的解决方法,本文主要是针对第二个问题做讲解。

我们假设一开始有节点1、2,他们分别负责处理的URL数目为N1和N2,某时刻搜索引擎新增了一个节点3,那么如何将节点1和节点2的工作平均的分担给节点3呢?如果单纯的是将N1、N2的1/3的URL分担给节点3,那么必定存在网页重复抓取的问题。因此,我们需要一个合理的搜索子系统动态可配置性设计。

搜索子系统的动态可配置性设计

  • 1、我们可以采用将要抓取的网页通过一个映射表来表示,映射表中每个URL的下标是它负责的节点号,一开始将这些URL平均的分配给各个节点。
  • 2、当要增加一个节点的时候,每个节点都要让出一部分的URL给新的节点,即对映射表进行部分修改,并且要将各个节点已经抓取过的URL发送给新的节点,已确保新节点不会重复抓取网页。
  • 3、当要删除一个节点的时候,同样要把该节点的URL平均分配给其他节点,并且修改映射表以及将抓取过的网页列表发送给各个节点。

小结

通过以上的策略,搜索引擎可以实现节点的动态配置,并且整个系统依然可以正常运作。至此我们已经讲完了搜索引擎的网页搜集部分。从下一章起我们分析搜索引擎的预处理部分《3.1、搜集信息的预处理--系统结构》