クローラーは負荷を低減・分散するために数多くの技術を使用しています。このうち通信負荷を減らすhttp getと、分散処理を行うことで巡回効率を向上する分散型ロボットについて説明します。

広く使われる通信プロトコル

コンピュータ間の情報取得の方法には様々なものがありますが、クローラーがWebページの情報を収集する際には、一般的に、http getというプロトコルを用います。これはWebブラウザによる通常のブラウジングを行う場合にも使われる一般的な通信プロトコルです。

例えばWebブラウザは、表示されたハイパーリンクがクリックされた際に、このhttp getでリンク先のページ内容を読み込みます。クローラーのUAもプログラムの基本はWebブラウザと変わりはなく、http getを用いてWebサーバーから取得しています。

通信負荷を低減するhttp getプロトコル

http getは、他の通信プロトコルに比べ、自由に・負荷なく情報を取得できる面で優れています。それは、http getが「ステート情報」を必要としない通信プロトコルだからです。

ステート情報とは、2台のコンピュータでファイルを交換する際に、双方の間でやり取りしなければならない「履歴」情報のことです。ステート情報をやり取りすることでより確実で安全性の高い情報交換ができますが、反面、相互にやり取りする情報が負荷となってしまうデメリットがあります。その点、http getではステート情報を必要としないため、Webサーバー上で公開される任意の情報を自由に負荷なく取得することができます。

例えば、ある家電製品の概要について知りたいとき、販売員に聞くには自分の個性や理解力を相手に伝えた上で順を追った会話が必要です。しかし、カタログを見る分には棚に置かれたカタログの好きなページを読むことができます。この例のカタログのように、ステート情報を必要ないhttp getは、不特定多数のコンピュータ間で情報のやり取りを行うウェブにとって、手続きと気軽さの面で優れたプロトコルです。

膨大な数のクロールを効率的に行う分散型ロボット

分散型ロボットとは、巡回の効率を上げるために、複数のシステムでクローリングを分担する技術です。検索エンジンがインデックスしなければならないWebページの数とその情報量は膨大ですが、1台のコンピュータ・1つのシステムだけで処理することのできる情報量には限界があります。そのため、複数のコンピュータ・複数のシステムを用いた分散処理を行います。

分散処理のマネージメント

分散処理を行うには、システム同士の適切な役割分担が欠かせません。たとえば、単に同じシステムを複数用意するだけでは、巡回先の重複も生じてクローリングは非効率なものとなってしまいます。そのため、検索エンジンでは個々のクローラーに巡回すべきWebページを配分する、マネージャー役のシステムを設置しています。

マネージャーが個々のクローラーに巡回すべきWebページを指示し、集まってくる情報をまとめることで、複数のクローラーが1つのクローリングユニットとして機能することができます。また、より上位のマネージャーによって複数のクローリングユニットを統合することも可能で、必要に応じて何階層にでも組み上げて行くことができます。

このようなかたちでシステム全体を組み上げていくことで、多くのコンピュータ・システムを用いて効率的なクローリングの分散を行うことができます。

巡回先の分担方法

巡回するWebページの分担の決め方としては、主に次のような方法があげられます。いずれの方法も単独で用いているわけではなく、検索エンジンごとに、その他の様々な方法と高度に組み合わせて使用しています。

地理的な分担
クローラーが廻るべき個々のWebサイト・ページを、物理的に分ける方法です。地域範囲を決定する要素としては、サイトにおけるドメイン・サブドメインや言語、サーバの置かれている国などが考えられます。
メディアによる分担
個々のクローラーが収集する情報の種類について振り分ける方法です。収集する情報の分け方としては、HTML、画像、pdf、MS Wordファイルなど様々です。