(57)【要約】課題  ロードバランサ等の装置を設置することなく、サービス処理サーバが自律してリクエストを分散処理することを可能とする。解決手段  複数のサービス処理サーバをＰ２Ｐネットワークを用いてオーバーレイネットワークで接続し、あるサービス処理サーバへのサービスリクエストをＰ２Ｐアルゴリズムに従いサービス処理サーバ間でルーティングさせ、接続先のサービス処理サーバの負荷状態に応じて、ルーティング途中のサービス処理サーバが接続先のサービス処理サーバに代わってサービスリクエストの処理を実行する。
2009034994.tif 000002
【特許請求の範囲】
【請求項１】
複数のサービス処理サーバをＰ２Ｐネットワークを用いてオーバーレイネットワークで接続し、
あるサービス処理サーバへのサービスリクエストをＰ２Ｐアルゴリズムに従いサービス処理サーバ間でルーティングさせ、接続先の前記サービス処理サーバの負荷状態に応じて、ルーティング途中のサービス処理サーバが接続先のサービス処理サーバに代わってサービスリクエストの処理を実行することを特徴とする負荷分散システム。
【請求項２】
ルーティング途中の前記サービス処理サーバが、接続先の前記サービス処理サーバの負荷が高い場合に、接続先のサービス処理サーバに代わって前記サービスリクエストの処理を実行することを特徴とする請求項１に記載の負荷分散システム。
【請求項３】
前記サービス処理サーバは、
外部ネットワークと接続され、他のサービス処理サーバとメッセージを送受信する送受信部と、
他のサービス処理サーバとＰ２Ｐ管理メッセージとＰ２Ｐ検索メッセージをやりとりすることでＰ２Ｐネットワークを構築し、当該Ｐ２Ｐネットワークを用いて他のサービス処理サーバを検索するＰ２Ｐ機能部と、
前記サービスの処理及びサービスの代行の依頼と代行処理を実施するサーバ機能部と、
自サービス処理サーバの負荷を検知する負荷検知機能部と、
サービスを保存管理するサービスデータベースとを含むことを特徴とする請求項１又は請求項２に記載の負荷分散システム。
【請求項４】
前記送受信部は、外部ネットワークと接続され、前記Ｐ２Ｐ機能部から発信されるＰ２Ｐ管理メッセージとＰ２Ｐ検索メッセージ、負荷状態通知メッセージと、サービス要求メッセージとサービス送信メッセージとを、当該メッセージに記載される他のサービス処理サーバへ送信する機能と、他のサービス処理サーバからＰ２Ｐ管理メッセージと、Ｐ２Ｐ検索メッセージと、負荷状態通知メッセージと、サービス要求メッセージとサービス送信メッセージとを受信した場合、Ｐ２Ｐ機能部に当該メッセージを通知する機能と、クライアントからサービスリクエストメッセージを受信した場合、Ｐ２Ｐ機能部に当該メッセージを送信する機能とを有することを特徴とする請求項３に記載の負荷分散システム。
【請求項５】
前記Ｐ２Ｐ機能部は、他のサービス処理サーバとＰ２Ｐ管理メッセージを送受信し合いＰ２Ｐネットワークを構築するＰ２Ｐ管理機能部と、前記Ｐ２Ｐネットワークを用いてＰ２Ｐ検索メッセージを送受信し合い他のサービス処理サーバを検索するＰ２Ｐ検索機能部と、前記Ｐ２Ｐネットワークを用いて検索するための情報を保存するＰ２Ｐデータベースを有することを特徴とする請求項３又は請求項４に記載の負荷分散システム。
【請求項６】
前記Ｐ２Ｐ管理機能部は、他のサービス処理サーバと管理メッセージをやり取りすることで、前記Ｐ２Ｐネットワークを維持管理する機能を有することを特徴とする請求項５に記載の負荷分散システム。
【請求項７】
前記Ｐ２Ｐ検索機能部は、前記Ｐ２Ｐネットワークに対し検索メッセージを送信することによって所望の他のサービス処理サーバを検索する機能と、検索結果から得られる一時的ルート情報を前記サーバ機能部に通知する機能とを有することを特徴とする請求項５又は請求項６に記載の負荷分散システム。
【請求項８】
前記Ｐ２Ｐデータベースは、前記Ｐ２Ｐネットワークを維持し、前記Ｐ２Ｐネットワークを用いて検索可能にするための情報を保存する機能を有することを特徴とする請求項５から請求項７の何れかに記載の負荷分散システム。
【請求項９】
前記サーバ機能部は、サービス代行の依頼と受理を管理する代行機能部と、他のサービス処理サーバとサービスを送受信するサービス送受信機能部と、前記サービスデータベースに保存するサービスを処理するサービス処理機能部とを有することを特徴とする請求項３から請求項８に記載の負荷分散システム。
【請求項１０】
前記代行機能部は、
前記負荷が低いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、前記サービスリクエストメッセージを前記サービス処理機能部に処理させる機能と、
前記負荷が低いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバと所望サービス処理サーバとの間のサービス処理サーバのうち、自サービス処理サーバより１ホップサービス処理サーバ側のサービス処理サーバに前記サービスリクエストメッセージを送信する機能と、
前記負荷が高いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、前記サービスデータベースに保存するサービスを読み出し、サービス送信メッセージに前記サービスを付加して送信する機能と、
前記負荷が高いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、負荷の状態通知メッセージを送信する機能とを有することを特徴とする請求項３から請求項９の何れかに記載の負荷分散システム。
【請求項１１】
前記代行機能部は、他サービス処理サーバから負荷状態通知メッセージを受信した場合、サービスリクエストメッセージを所望のサービス処理サーバに送信するようＰ２Ｐ機能部に通知する機能を有することを特徴とする請求項１０に記載の負荷分散システム。
【請求項１２】
前記代行機能部は、他サービス処理サーバからサービスリクエストメッセージを受信した場合、前記サービス送受信機能部にサービスデータベースに保存したサービスを読み出し、サービス送信メッセージに前記サービスを付加して送信するよう通知する機能を有することを特徴とする請求項１０又は請求項１１に記載の負荷分散システム。
【請求項１３】
前記代行機能部において、他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスを前記サービスデータベースに保存し、前記サービス処理機能部に前記サービスを読み込ませるよう前記送受信機能部に通知する機能を有することを特徴とする請求項１０から請求項１２の何れかに記載の負荷分散システム。
【請求項１４】
前記送受信機能部は、
前記代行機能部からの指示により前記サービスデータベースに保存したサービスを読み出し、サービスを付加したサービス送信メッセージを他のサービス処理サーバに送信する機能と、
前記代行機能部からの指示により他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスを前記サービスデータベースに保存し、前記サービス処理機能部に前記サービスを読み込ませる機能とを有することを特徴とする請求項１０から請求項１２の何れかに記載の負荷分散システム。
【請求項１５】
前記サービス処理機能部は、前記サービスデータベースからサービスを読み出し、サービスリクエストメッセージを処理する機能を有することを特徴とする請求項３から請求項１４の何れかに記載の負荷分散システム。
【請求項１６】
負荷検知機能部は、前記サービス処理サーバ内のリソースを管理し、サービス処理サーバの負荷状態を検知し、前記サーバ機能部に通知する機能を有することを特徴とする請求項３から請求項１５の何れかに記載の負荷分散システム。
【請求項１７】
前記サービスデータベースは、サービスを保存する機能と、サービスの有効期限を監視し、有効期限の切れたサービスを発見した場合に当該サービスを削除する機能を有することを特徴とする請求項３から請求項１６の何れかに記載の負荷分散システム。
【請求項１８】
複数のサービス処理サーバをＰ２Ｐネットワークを用いてオーバーレイネットワークで接続し、各サービス処理サーバが、
クライアントからサービスリクエストメッセージを受信したときに、前記サービス処理サーバの負荷状況によりサービスリクエストを処理するサービス処理サーバを決定する第１のステップと、
他のサービス処理サーバからサービスリクエストメッセージが転送されたときに、自サービス処理サーバの負荷状況によってサービスリクエストの処理を自サービス処理サーバが処理するか、処理の代行を依頼するか、さらに他のサービス処理サーバに転送するかを決定する第２のステップとを実行することを特徴とする負荷分散方法。
【請求項１９】
前記サービス処理サーバが、
他サービス処理サーバからＰ２Ｐ管理メッセージを受信したときに、Ｐ２Ｐ管理メッセージを返信する第３のステップと、
他サービス処理サーバからＰ２Ｐ検索メッセージを受信したときに、Ｐ２Ｐ検索メッセージを返信する第４のステップとを有することを特徴とする請求項１８に記載の負荷分散方法。
【請求項２０】
前記第１のステップは、クライアントからサービスリクエストメッセージを受信した場合、受信したサービスリクエストのサービス要求先を確認するステップと、受信したサービスリクエストを処理するステップと、他サービス処理サーバ宛で有効期限内のサービスを保持しているかを確認するステップと、受信したサービスリクエストを所定のサービス処理サーバへ転送するための一時的ルート情報を取得するため、Ｐ２Ｐデータベースを参照し他サービス処理サーバへ経路検索をするステップと、取得した一時的ルート情報を用い、次のサービス処理サーバへサービスリクエストを転送するステップと、転送したサービスリクエストが受理されたかを確認すると、一時的ルート情報を参照し、所定のサービス処理サーバに対しサービス要求を送信すると、要求したサービスを受信するとステップを含むことを特徴とする請求項１８又は請求項１９に記載の負荷分散方法。
【請求項２１】
前記第２のステップは、他のサービス処理サーバからサービスリクエストメッセージを受信した場合、自サービス処理サーバの負荷状況をチェックするステップと、サービスリクエストメッセージのサービス要求先を確認するステップと、サービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信するステップと、負荷状況通知メッセージを送信した他サービス処理サーバよりサービス要求メッセージを受信するステップと、サービス要求メッセージを送信してきた他サービス処理サーバに対し、サービスを送信するステップと、サービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信するステップとを含むことを特徴とする請求項１８から請求項２０の何れかに記載の負荷分散方法。
【請求項２２】
前記第３のステップは、他のサービス処理サーバよりＰ２Ｐ管理メッセージを受信するステップと、前記Ｐ２Ｐ管理メッセージを送信した他の前記サービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を含めてＰ２Ｐ管理メッセージを送信するステップとを含むことを特徴とする請求項１９から請求項２１の何れかに記載の負荷分散方法。
【請求項２３】
前記第４のステップは、他のサービス処理サーバよりＰ２Ｐ検索メッセージを受信するステップと、Ｐ２Ｐ検索メッセージを送信した他のサービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を参照しＰ２Ｐ検索メッセージを送信するステップとを含むことを特徴とする請求項１９から請求項２２の何れかに記載の負荷分散方法。
【請求項２４】
他のサービス処理サーバとＰ２Ｐネットワークを用いてオーバーレイネットワークで接続され、
クライアントから受信したサービスリクエストを、接続先のサービス処理サーバの負荷状態に応じて、接続先のサービス処理サーバに代わってサービスリクエストの処理を実行する手段を備えることを特徴とするサービス処理サーバ。
【請求項２５】
接続先の前記サービス処理サーバの負荷が高い場合に、接続先のサービス処理サーバに代わって前記サービスリクエストの処理を実行することを特徴とする請求項２４に記載のサービス処理サーバ。
【請求項２６】
外部ネットワークと接続され、他のサービス処理サーバとメッセージを送受信する送受信部と、
他のサービス処理サーバとＰ２Ｐ管理メッセージとＰ２Ｐ検索メッセージをやりとりすることでＰ２Ｐネットワークを構築し、当該Ｐ２Ｐネットワークを用いて他のサービス処理サーバを検索するＰ２Ｐ機能部と、
前記サービスの処理及びサービスの代行の依頼と代行処理を実施するサーバ機能部と、
自サービス処理サーバの負荷を検知する負荷検知機能部と、
サービスを保存管理するサービスデータベースとを含むことを特徴とする請求項２４又は請求項２５に記載のサービス処理サーバ。
【請求項２７】
前記送受信部は、外部ネットワークと接続され、前記Ｐ２Ｐ機能部から発信されるＰ２Ｐ管理メッセージとＰ２Ｐ検索メッセージ、負荷状態通知メッセージと、サービス要求メッセージとサービス送信メッセージとを、当該メッセージに示される他のサービス処理サーバへ送信する機能と、他のサービス処理サーバからＰ２Ｐ管理メッセージと、Ｐ２Ｐ検索メッセージと、負荷状態通知メッセージと、サービス要求メッセージとサービス送信メッセージとを受信した場合、Ｐ２Ｐ機能部に当該メッセージを通知する機能と、クライアントからサービスリクエストメッセージを受信した場合、Ｐ２Ｐ機能部に当該メッセージを送信する機能とを有することを特徴とする請求項２６に記載のサービス処理サーバ。
【請求項２８】
前記Ｐ２Ｐ機能部は、他のサービス処理サーバとＰ２Ｐ管理メッセージを送受信し合いＰ２Ｐネットワークを構築するＰ２Ｐ管理機能部と、前記Ｐ２Ｐネットワークを用いてＰ２Ｐ検索メッセージを送受信し合い他のサービス処理サーバを検索するＰ２Ｐ検索機能部と、前記Ｐ２Ｐネットワークを用いて検索するための情報を保存するＰ２Ｐデータベースを有することを特徴とする請求項２６又は請求項２７に記載のサービス処理サーバ。
【請求項２９】
前記Ｐ２Ｐ管理機能部は、他のサービス処理サーバと管理メッセージをやり取りすることで、前記Ｐ２Ｐネットワークを維持管理する機能を有することを特徴とする請求項２８に記載のサービス処理サーバ。
【請求項３０】
前記Ｐ２Ｐ検索機能部は、前記Ｐ２Ｐネットワークに対し検索メッセージを送信することによって所望の他のサービス処理サーバを検索する機能と、検索結果から得られる一時的ルート情報を前記サーバ機能部に通知する機能とを有することを特徴とする請求項２８又は請求項２９に記載のサービス処理サーバ。
【請求項３１】
前記Ｐ２Ｐデータベースは、前記Ｐ２Ｐネットワークを維持し、前記Ｐ２Ｐネットワークを用いて検索可能にするための情報を保存する機能を有することを特徴とする請求項２８から請求項３０の何れかに記載のサービス処理サーバ。
【請求項３２】
前記サーバ機能部は、サービス代行の依頼と受理を管理する代行機能部と、他のサービス処理サーバとサービスを送受信するサービス送受信機能部と、前記サービスデータベースに保存するサービスを処理するサービス処理機能部とを有することを特徴とする請求項２６から請求項３１に記載のサービス処理サーバ。
【請求項３３】
前記代行機能部は、
前記負荷が低いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、前記サービスリクエストメッセージを前記サービス処理機能部に処理させる機能と、
前記負荷が低いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバと所望サービス処理サーバとの間のサービス処理サーバのうち、自サービス処理サーバより１ホップサービス処理サーバ側のサービス処理サーバに前記サービスリクエストメッセージを送信する機能と、
前記負荷が高いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、前記サービスデータベースに保存するサービスを読み出し、サービス送信メッセージに前記サービスを付加して送信する機能と、
前記負荷が高いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、負荷の状態通知メッセージを送信する機能とを有することを特徴とする請求項２６から請求項３２の何れかに記載のサービス処理サーバ。
【請求項３４】
前記代行機能部は、他サービス処理サーバから負荷状態通知メッセージを受信した場合、サービスリクエストメッセージを所望のサービス処理サーバに送信するようＰ２Ｐ機能部に通知する機能を有することを特徴とする請求項３３に記載のサービス処理サーバ。
【請求項３５】
前記代行機能部は、他サービス処理サーバからサービスリクエストメッセージを受信した場合、前記サービス送受信機能部にサービスデータベースに保存したサービスを読み出し、サービス送信メッセージに前記サービスを付加して送信するよう通知する機能を有することを特徴とする請求項３３又は請求項３４に記載のサービス処理サーバ。
【請求項３６】
前記代行機能部において、他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスを前記サービスデータベースに保存し、前記サービス処理機能部に前記サービスを読み込ませるよう前記送受信機能部に通知する機能を有することを特徴とする請求項３３から請求項３５の何れかに記載のサービス処理サーバ。
【請求項３７】
前記送受信機能部は、
前記代行機能部からの指示により前記サービスデータベースに保存したサービスを読み出し、サービスを付加したサービス送信メッセージを他のサービス処理サーバに送信する機能と、
前記代行機能部からの指示により他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスを前記サービスデータベースに保存し、前記サービス処理機能部に前記サービスを読み込ませる機能とを有することを特徴とする請求項３３から請求項３５の何れかに記載のサービス処理サーバ。
【請求項３８】
前記サービス処理機能部は、前記サービスデータベースからサービスを読み出し、サービスリクエストメッセージを処理する機能を有することを特徴とする請求項２６から請求項３７の何れかに記載のサービス処理サーバ。
【請求項３９】
負荷検知機能部は、前記サービス処理サーバ内のリソースを管理し、サービス処理サーバの負荷状態を検知し、前記サーバ機能部に通知する機能を有することを特徴とする請求項２６から請求項３８の何れかに記載のサービス処理サーバ。
【請求項４０】
前記サービスデータベースは、サービスを保存する機能と、サービスの有効期限を監視し、有効期限の切れたサービスを発見した場合に当該サービスを削除する機能を有することを特徴とする請求項２６から請求項３９の何れかに記載のサービス処理サーバ。
【請求項４１】
Ｐ２Ｐネットワークを用いてオーバーレイネットワークで接続したサービス処理サーバとして機能する複数のコンピュータに、
クライアントからサービスリクエストメッセージを受信したときに、前記サービス処理サーバの負荷状況によりサービスリクエストを処理するサービス処理サーバを決定する第１の処理と、
他のサービス処理サーバからサービスリクエストメッセージが転送されたときに、自サービス処理サーバの負荷状況によってサービスリクエストの処理を自サービス処理サーバが処理するか、処理の代行を依頼するか、さらに他のサービス処理サーバに転送するかを決定する第２の処理を実行させることを特徴とする負荷分散プログラム。
【請求項４２】
前記コンピュータに、
他サービス処理サーバからＰ２Ｐ管理メッセージを受信したときに、Ｐ２Ｐ管理メッセージを返信する第３の処理と、
他サービス処理サーバからＰ２Ｐ検索メッセージを受信したときに、Ｐ２Ｐ検索メッセージを返信する第４の処理を実行させることを特徴とする請求項４１に記載の負荷分散プログラム。
【請求項４３】
前記第１の処理が、クライアントからサービスリクエストメッセージを受信した場合、受信したサービスリクエストのサービス要求先を確認する処理と、受信したサービスリクエストを処理する処理と、他サービス処理サーバ宛で有効期限内のサービスを保持しているかを確認する処理と、受信したサービスリクエストを所定のサービス処理サーバへ転送するための一時的ルート情報を取得するため、Ｐ２Ｐデータベースを参照し他サービス処理サーバへ経路検索をする処理と、入手した一時的ルート情報を用い、次のサービス処理サーバへサービスリクエストを転送する処理と、転送したサービスリクエストが受理されたかを確認すると、一時的ルート情報を参照し、所定のサービス処理サーバに対しサービス要求を送信すると、要求したサービスを受信すると処理を含むことを特徴とする請求項４１又は請求項４２に記載の負荷分散プログラム。
【請求項４４】
前記第２の処理は、他のサービス処理サーバからサービスリクエストメッセージを受信した場合、自サービス処理サーバの負荷状況をチェックする処理と、サービスリクエストメッセージのサービス要求先を確認する処理と、サービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信する処理と、負荷状況通知メッセージを送信した他サービス処理サーバよりサービス要求メッセージを受信する処理と、サービス要求メッセージを送信してきた他サービス処理サーバに対し、サービスを送信する処理と、サービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信する処理とを含むことを特徴とする請求項４１から請求項４３の何れかに記載の負荷分散プログラム。
【請求項４５】
前記第３の処理は、他のサービス処理サーバよりＰ２Ｐ管理メッセージを受信する処理と、前記Ｐ２Ｐ管理メッセージを送信した他の前記サービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を含めてＰ２Ｐ管理メッセージを送信する処理とを含むことを特徴とする請求項４２から請求項４４の何れかに記載の負荷分散プログラム。
【請求項４６】
前記第４の処理は、他のサービス処理サーバよりＰ２Ｐ検索メッセージを受信する処理と、Ｐ２Ｐ検索メッセージを送信した他のサービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を参照しＰ２Ｐ検索メッセージを送信する処理とを含むことを特徴とする請求項４２から請求項４５の何れかに記載の負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散システム、負荷分散方法及びそのプログラムに関し、特に、１箇所のサービス処理サーバに大量のクライアントからインタラクティブなリクエストが集中する場合にそのリクエストを分散処理する負荷分散システム、負荷分散方法及びプログラムに関する。
【背景技術】
【０００２】
ある一箇所に存在するサービス処理サーバに対し複数のクライアントから大量のリクエストが集中する場合、これまではサービス処理サーバを複数台用意し、サービス処理サーバの手前にロードバランサを設置する手法が用いられている。【０００３】
このような手法では、クライアントとサービス処理サーバの間にあるロードバランサに仮想アドレスを割り振る。サービス処理サーバは、ロードバランサの先に複数台用意される。クライアントは、仮想アドレスにリクエストを送信し、リクエストを受信したロードバランサは、あるアルゴリズムに従って、最適なサービス処理サーバに処理を転送する。この場合のアルゴリズムとしては、例えば、ラウンドロビン方式、最小接続方式、最速方式などがある。【０００４】
ネットワークにおける負荷分散の技術としては、例えば、特許文献１に記載される技術がある。この特許文献１に開示される技術においては、ネットワーク上のノードが自律的に負荷を検出し、その負荷情報を他のノードと交換することにより、ネットワーク上で負荷が集中しているノードを判別し、判別結果に基づいてノード毎にリソースを割り当てることにより、効率的に負荷を分散させる。【０００５】
また、特許文献２には、クライアント端末からの要求によってサービスを提供するサービス提供装置の負荷が高まった場合に、動作モードが変更になり、予め定められた処理の一部を、クライアント端末とサービス提供装置との通信を中継する中継機器が代行することにより、負荷分散を実現するシステムが提案されている。
【特許文献１】特開２００５−３０３８２８号
【特許文献２】特開２００６−１５７６０１号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
サービス処理サーバを複数台用意しサービス処理サーバの手前にロードバランサを設置する上記の手法では、インタラクティブなリクエストを多数処理しなければならない場合に、処理可能なリクエスト数がロードバランサの能力で決定されてしまう、という問題がある。【０００７】
その理由は、ロードバランサに接続されるサービス処理サーバが多数存在し、処理能力が十分であったとしても、ロードバランサが維持管理可能なセッション数が、インタラクティブなリクエストを処理するシステムとしての限界になってしまうためである。【０００８】
また、特許文献１に記載の技術においては、ネットワーク上のノードが自律的に負荷を検出し、その負荷情報を他のノードと交換することにより、ネットワーク上で負荷が集中しているノードを判別するため、負荷情報を適宜交換する必要があるため、負荷情報の送信によって負荷が増大してしまい、効果的な負荷分散を実現できないという問題がある。【０００９】
さらに、特許文献２に記載の技術においては、予め定められた処理の一部のみを中継機器が代行する方式であるので、代行できる処理に制限があり、十分効率的に負荷分散を実現できないという問題がある。【００１０】
（目的）
本発明の目的は、ロードバランサを設置することなく、サービス処理サーバが自律してリクエストを分散処理することを可能とする負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明による負荷分散システムは、複数のサービス処理サーバをＰ２Ｐネットワークを用いてオーバーレイネットワークで接続し、あるサービス処理サーバへのサービスリクエストをＰ２Ｐアルゴリズムに従いサービス処理サーバ間でルーティングさせ、接続先のサービス処理サーバの負荷状態に応じて、ルーティング途中のサービス処理サーバが接続先のサービス処理サーバに代わってサービスリクエストの処理を実行する。【００１２】
本発明による負荷分散方法は、複数のサービス処理サーバをＰ２Ｐネットワークを用いてオーバーレイネットワークで接続し、各サービス処理サーバが、クライアントからサービスリクエストメッセージを受信したときに、サービス処理サーバの負荷状況によりサービスリクエストを処理するサービス処理サーバを決定する第１のステップと、他のサービス処理サーバからサービスリクエストメッセージが転送されたときに、自サービス処理サーバの負荷状況によってサービスリクエストの処理を自サービス処理サーバが処理するか、処理の代行を依頼するか、さらに他のサービス処理サーバに転送するかを決定する第２のステップとを実行する。【００１３】
本発明によるサービス処理サーバは、他のサービス処理サーバとＰ２Ｐネットワークを用いてオーバーレイネットワークで接続され、クライアントから受信したサービスリクエストを、接続先のサービス処理サーバの負荷状態に応じて、接続先のサービス処理サーバに代わってサービスリクエストの処理を実行する手段を含む。【００１４】
本発明による負荷分散プログラムは、Ｐ２Ｐネットワークを用いてオーバーレイネットワークで接続したサービス処理サーバとして機能する複数のコンピュータに、クライアントからサービスリクエストメッセージを受信したときに、サービス処理サーバの負荷状況によりサービスリクエストを処理するサービス処理サーバを決定する第１の処理と、他のサービス処理サーバからサービスリクエストメッセージが転送されたときに、自サービス処理サーバの負荷状況によってサービスリクエストの処理を自サービス処理サーバが処理するか、処理の代行を依頼するか、さらに他のサービス処理サーバに転送するかを決定する第２の処理を実行させる。
【発明の効果】
【００１５】
第１の効果は、ロードバランサ等の装置を設置することなく、サービス処理サーバの負荷状態を踏まえたリクエストの分散ができることにある。【００１６】
その理由は、サービス処理サーバをＰ２Ｐ技術を用いてオーバーレイネットワークで接続し、サービス処理サーバへのリクエストをＰ２Ｐアルゴリズムに従いサービス処理サーバ間でルーティングさせ、接続先のサービス処理サーバの負荷に応じて、サービス処理サーバが接続先のサービス処理サーバに代わってリクエストの処理をすることにより、リクエストが分散されるためである。【００１７】
第２の効果は、可用性の高いサービスシステムを提供することができることにある。【００１８】
その理由は、サービス処理サーバがＰ２Ｐ技術を用いてオーバーレイネットワークで接続されているため、メンテナンスのためにサービス処理サーバを停止しても他のサービス処理サーバに影響を与えず、サービス増強のためのサービス処理サーバを追加しても他のサービス処理サーバに影響を与えないためである。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態による負荷分散システムのサービス処理サーバの構成を示すブロック図である。
【図２】本発明の第１の実施の形態による負荷分散システムの全体構成を示す図である。
【図３】本発明の第１の実施の形態におけるクライアントからサービスリクエストを受信した場合の動作を説明するフローチャートである。
【図４】本発明の第１の実施の形態における他のサービス処理サーバからサービスリクエストを受信した場合の動作を説明するフローチャートである。
【図５】本発明の第１の実施の形態における他のサービス処理サーバからＰ２Ｐ管理メッセージを受信した場合の動作を説明するフローチャートである。
【図６】本発明の第１の実施の形態における他のサービス処理サーバからＰ２Ｐ検索メッセージを受信した場合の動作を説明するフローチャートである。
【図７】本発明の第２の実施の形態による負荷分散システムのサービス処理サーバの構成を示すブロック図である。
【図８】サービス処理サーバのハードウェア構成を示すブロック図である。
【発明を実施するための最良の形態】
【００２０】
（第１の実施の形態）
以下、本発明の第１の実施の形態について添付図を参照して説明する。【００２１】
図１を参照すると、本発明の第１の実施の形態による負荷分散システムを構成するサービス処理サーバ１は、送受信部１０と、Ｐ２Ｐ機能部２０と、サーバ機能部３０と、負荷検知機能部４０と、サービスデータベース５０を有する構成である。【００２２】
また、第１の実施の形態による負荷分散システムは、図２に示すように、複数のサービス処理サーバ１がＰ２Ｐネットワークにより互いに接続されている。【００２３】
送受信部１０は、外部ネットワークと接続されており、Ｐ２Ｐ機能部２０から発信されるメッセージを、メッセージに記載の他のサービス処理サーバへ情報を送信する。また、他のサービス処理サーバからメッセージを受信した場合、Ｐ２Ｐ機能部２０にそのメッセージを通知する。【００２４】
Ｐ２Ｐ機能部２０は、Ｐ２Ｐ管理機能部２１と、Ｐ２Ｐ検索機能部２２と、Ｐ２Ｐデータベース２３を有する。
このＰ２Ｐ機能部２０は、他のサービス処理サーバとＰ２Ｐ管理メッセージを送受信し合うことによりＰ２Ｐネットワークを構築し、Ｐ２Ｐネットワークを用いてＰ２Ｐ検索メッセージを送受信し合い、他のサービス処理サーバを検索する機能を有する。このときＰ２Ｐ機能部２０による検索結果である一時的ルート情報をサーバ機能３０に通知する。さらに、サービス処理に関するメッセージを受信した場合、サーバ機能部３０に通知する。さらにサーバ機能部３０からサービス処理に関するメッセージ送信依頼が通知された場合は、Ｐ２Ｐによる宛先解決を実施し、メッセージを所望の他のサービス処理サーバに送信する。【００２５】
ここで、一時的ルート情報とは、サービスリクエストメッセージをどのサービス処理サーバに処理させるかをＰ２Ｐ機能部２０を用いて検索した結果得られる所望の他のサービス処理サーバに辿り着くまでに通過するサービス処理サーバの履歴である。Ｐ２Ｐネットワークでは所望の他のサービス処理サーバへのルートは流動的であるため、一時的ルート情報は、長期間保存しない。例えば、サービスリクエストメッセージが処理完了した時点で消去可能である。【００２６】
Ｐ２Ｐ管理機能部２１は、他のサービス処理サーバと管理メッセージをやり取りすることで、Ｐ２Ｐネットワークを維持管理する機能を有する。【００２７】
Ｐ２Ｐ検索機能部２２は、Ｐ２Ｐネットワークに対し検索メッセージを送信することによって所望の他のサービス処理サーバを検索する。このとき得られる一時的ルート情報をサーバ機能部３０に通知する。【００２８】
Ｐ２Ｐデータベース２３は、Ｐ２Ｐネットワークを維持し、Ｐ２Ｐネットワークを用いて検索可能にするための情報を保存するデータベースである。例えば、Ｐ２ＰアルゴリズムにＣｈｏｒｄを選んだ場合、分散ハッシュテーブル（ＤＨＴ）に当たるフィンガーテーブルを保存する。【００２９】
サーバ機能部３０は、代行機能部３１と、サービス送受信機能部３２と、サービス処理機能部３３とを有し、サービスデータベースからサービスを読み込み、クライアントから送信されるサービスリクエストメッセージを処理する。【００３０】
ただし、サーバ機能部３０は、負荷検知機能部４０から通知される負荷が高い場合は、サービスリクエストメッセージを処理せず、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバ１より１ホップクライアント側のサービス処理サーバにサービスリクエストメッセージを送信し、サービス処理を代行させる機能も有する。あるいは、サーバ機能部３０は、他のサービス処理サーバからサービス処理の代行を依頼された場合は、Ｐ２Ｐ機能部２０を用いて送信されてきたサービスリクエストメッセージを受信し、サービス処理を代行する機能も有する。【００３１】
代行機能部３１は、負荷検知機能部４０から通知される負荷情報を用い、送信されてくるサービスリクエストメッセージをどうするか判断する。【００３２】
負荷が低いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、代行機能部３１は、そのサービスリクエストメッセージをサービス処理機能部３３に処理させる。【００３３】
また、負荷が低いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、代行機能部３１は、一時的ルート情報を用いて自サービス処理サーバと所望サービス処理サーバとの間のサービス処理サーバのうち、自サービス処理サーバ１より１ホップ所望サービス処理サーバ側のサービス処理サーバにそのサービスリクエストメッセージをＰ２Ｐ機能部２０及び送受信部１０を用いて送信する。【００３４】
一方負荷が高いときに自サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、代行機能部３１は、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、サービス送受信機能部３２を用いてサービスデータベース５０に保存してあるサービスを読み出し、サービス送信メッセージに読み出したサービスを付加してＰ２Ｐ機能部２０及び送受信部１０を用いて送信する。【００３５】
さらに、負荷が高いときに他サービス処理サーバ宛てのサービスリクエストメッセージを受信した場合、代行機能部３１は、一時的ルート情報を用いて自サービス処理サーバとクライアントの間のサービス処理サーバのうち、自サービス処理サーバより１ホップクライアント側のサービス処理サーバに、負荷状態通知メッセージをＰ２Ｐ機能部２０及び送受信部１０を用いて送信する。【００３６】
ここで、サービスとは、クライアントからのサービスリクエストメッセージにより要求されるプログラムであり、サービス処理機能部３３に読み込まれることによりサービスが処理される。サービスには、有効期限が存在し、他のサービス処理サーバに代行を依頼した場合でも、有効期限の切れたサービスは実行されない。また、サービスは、１回または複数回のサービスリクエストメッセージにより処理が完了する。【００３７】
また代行機能部３１は、他サービス処理サーバから負荷状態通知メッセージを受信した場合、サービス要求メッセージを所望のサービス処理サーバに送信するようＰ２Ｐ機能部２０に通知する。【００３８】
さらに代行機能部３１は、他サービス処理サーバからサービス要求メッセージを受信した場合、サービス送受信機能部３２を用いてサービスデータベース５０に保存してあるサービスを読み出し、サービス送信メッセージにそのサービスを付加してＰ２Ｐ機能部２０及び送受信部１０を用いて送信するよう通知する。【００３９】
さらに代行機能部３１は、他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスをサービスデータベース５０に保存し、サービス処理機能部３３にそのサービスを読み込ませるようサービス送受信機能部３２に通知する。これにより、処理可能なサービスが増え、サービスリクエストメッセージの代行処理を行う。【００４０】
サービス送受信機能部３２は、代行機能部３１からの指示によりサービスデータベースに保存してあるサービスを読み出し、その読み出したサービスを付加したサービス送信メッセージを他のサービス処理サーバにＰ２Ｐ機能部２０及び送受信部１０を用いて送信する。また、代行機能部３１からの指示により他サービス処理サーバからサービス送信メッセージを受信した場合、サービス送信メッセージに付加されているサービスをサービスデータベース５０に保存し、サービス処理機能部３３にそのサービスを読み込ませる。【００４１】
サービス処理機能部３３は、サービスデータベース５０からサービスを読み出し、サービスリクエストメッセージの処理を行う。【００４２】
負荷検知機能部４０は、サービス処理サーバ内のリソースを管理し、サービス処理サーバの負荷状態を検知し、サーバ機能部３０に通知する。このとき、管理するリソースには、ＣＰＵ使用率、メモリ使用率、ハードディスクドライブ使用率、ネットワーク使用率、などが含まれる。【００４３】
サービスデータベース５０は、サービスを保存する。また、サービスデータベース５０は、サービスの有効期限を監視し、有効期限の切れたサービスを発見した場合は当該サービスを削除する。【００４４】
次に、図３と、図４、図５と、図６とを参照して本発明の第１の実施の形態によるサービス処理サーバ１の動作について詳細に説明する。【００４５】
クライアントからサービスリクエストを受信した場合の動作を図３のフローチャートに従って説明する。【００４６】
（１）ステップＳ−Ａ１
初期状態（ステップＳ−０）で、クライアントからサービスリクエストメッセージを受信する。【００４７】
（２）ステップＳ−Ａ２
サーバ機能部３０は、ステップＳ−Ａ１で受信したサービスリクエストのサービス要求先を確認する。サービス要求先が自サービス処理サーバであった場合は、ステップＳ−Ａ３に移行する。サービス要求先が他サービス処理サーバであった場合は、ステップＳ−Ａ４に移行する。【００４８】
（３）ステップＳ−Ａ３
サーバ機能部３０は、ステップＳ−Ａ１で受信したサービスリクエストを処理する。処理完了後は初期状態（ステップＳ−０）に移行する。【００４９】
（４）ステップＳ−Ａ４
他サービス処理サーバ宛のサービスリクエストであっても、すでにサービス処理を代行している可能性がある。そこで、他サービス処理サーバ宛で有効期限内のサービスを保持しているかを確認する。サービスを保持していた場合、ステップＳ−Ａ３に移行する。サービスを保持していなかった場合、ステップＳ−Ａ５に移行する。【００５０】
（５）ステップＳ−Ａ５
ステップＳ−Ａ１で受信したサービスリクエストを所望のサービス処理サーバへ転送するための一時的ルート情報を入手するため、Ｐ２Ｐデータベース２３を参照し他サービス処理サーバへ経路検索をする。【００５１】
（６）ステップＳ−Ａ６
ステップＳ−Ａ５で入手した一時的ルート情報を用い、次のサービス処理サーバへサービスリクエストを送信する。【００５２】
（７）ステップＳ−Ａ７
ステップＳ−Ａ６で転送したサービスリクエストが受理されたかを確認する。受理された場合は初期状態へ移行する。受理されず負荷状況通知を受信した場合は、ステップＳ−Ａ８に移行する。【００５３】
（８）ステップＳ−Ａ８
一時的ルート情報を参照し、所望のサービス処理サーバに対しサービス要求を送信する。【００５４】
（９）ステップＳ−Ａ９
ステップＳ−Ａ８で要求したサービスを受信する。サービス受信後はステップＳ−Ａ３に移行し、受信したサービスを用いてサービスリクエストを処理する。【００５５】
次に、他のサービス処理サーバからサービスリクエストを受信した場合の動作を図４のフローチャートに従って説明する。【００５６】
（１）ステップＳ−Ｂ１
初期状態（ステップＳ−０）で、他のサービス処理サーバからサービスリクエストメッセージを受信する。【００５７】
（２）ステップＳ−Ｂ２
自サービス処理サーバの負荷状況をチェックする。負荷が低い場合、ステップＳ−Ｂ３に移行する。負荷が高い場合、ステップＳ−Ｂ３に移行する。【００５８】
（３）ステップＳ−Ｂ３
サービスリクエストメッセージのサービス要求先を確認する。ステップＳ−Ｂ２において低負荷かつサービス要求先が自サービス処理サーバであった場合、ステップＳ−Ａ３に移行する。ステップＳ−Ｂ２において低負荷かつサービス要求先が他サービス処理サーバであった場合、ステップＳ−Ａ６に移行する。ステップＳ−Ｂ２において高負荷かつサービス要求先が自サービス処理サーバであった場合、ステップＳ−Ｂ４に移行する。ステップＳ−Ｂ２において高負荷かつサービス要求先が他サービス処理サーバであった場合、ステップＳ−Ｂ７に移行する。【００５９】
（４）ステップＳ−Ｂ４
ステップＳ−Ｂ１でサービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信する。【００６０】
（５）ステップＳ−Ｂ５
ステップＳ−Ｂ４で負荷状況通知メッセージを送信した他サービス処理サーバよりサービス要求メッセージを受信する。【００６１】
（６）ステップＳ−Ｂ６
ステップＳ−Ｂ５でサービス要求メッセージを送信してきた他サービス処理サーバに対し、サービスを送信する。【００６２】
（７）ステップＳ−Ｂ７
ステップＳ−Ｂ１でサービスリクエストメッセージを転送してきた他サービス処理サーバに対し、負荷状況通知メッセージを送信する。その後初期状態に移行する。【００６３】
他のサービス処理サーバからＰ２Ｐ管理メッセージを受信した場合の動作を図５のフローチャートに従って説明する。【００６４】
（１）ステップＳ−Ｃ１
他サービス処理サーバよりＰ２Ｐ管理メッセージを受信する。【００６５】
（２）ステップＳ−Ｃ２
ステップＳ−Ｃ１でＰ２Ｐ管理メッセージを送信してきた他サービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を含めてＰ２Ｐ管理メッセージを送信する。【００６６】
他のサービス処理サーバからＰ２Ｐ検索メッセージを受信した場合の動作を図６のフローチャートに従って説明する。
（１）ステップＳ−Ｄ１
他サービス処理サーバよりＰ２Ｐ検索メッセージを受信する。【００６７】
（２）ステップＳ−Ｄ２
ステップＳ−Ｃ１でＰ２Ｐ検索メッセージを送信してきた他サービス処理サーバに対し、Ｐ２Ｐデータベース内の情報を参照しＰ２Ｐ検索メッセージを送信する。【００６８】
（第１の実施の形態による効果）
次に、本発明の第１実施の形態の効果について説明する。【００６９】
本実施の形態は、サービス処理サーバ群をＰ２Ｐ技術を用いてオーバーレイネットワークで接続し、あるサービス処理サーバへのリクエストをＰ２Ｐのアルゴリズムに従いサービス処理サーバ間でルーティングさせる。そして、接続先のサービス処理サーバの負荷が高い場合、ルーティング途中のサービス処理サーバが接続先のサービス処理サーバに代わってリクエストの処理を行う。このように、リクエストの発信場所によって、リクエストのルーティング経路が変化するため、ロードバランサを設置することなく、リクエストを分散させることができる。【００７０】
さらに、本実施の形態は、サービス処理サーバ群がＰ２Ｐ技術を用いてオーバーレイネットワークで接続されているため、メンテナンスのためにサービス処理サーバを停止しても他のサービス処理サーバに影響を与えず、サービス増強のためのサービス処理サーバを追加しても他のサービス処理サーバに影響を与えない、可用性の高いサービスシステムを提供することができる。【００７１】
（第２の実施の形態）
次に、本発明の第２実施の形態について図面を参照して詳細に説明する。【００７２】
図７を参照すると、本発明の第２実施の形態は、本発明の第１の実施の形態と同様に、送受信部１０と、Ｐ２Ｐ機能部２０と、サーバ機能部３０と、負荷検知機能部４０と、サービスデータベース５０を有する。なお、図７において、第１の実施の形態の各構成要素と同じ符号を付した部分は、第１の実施の形態と共通の構成であるので、説明は省略する。【００７３】
この第２実施の形態においては、負荷分散プログラム６０を有している点が、第１の実施の形態と相違している。【００７４】
負荷分散プログラム６０は、送受信部１０と、Ｐ２Ｐ機能部２０と、サーバ機能部３０と、負荷検知機能部４０と、サービスデータベース５０と、に読み込まれ送受信部１０と、Ｐ２Ｐ機能部２０と、サーバ機能部３０と、負荷検知機能部４０と、サービスデータベース５０の動作を制御するプログラムである。【００７５】
そして、送受信部１０と、Ｐ２Ｐ機能部２０と、サーバ機能部３０と、負荷検知機能部４０と、サービスデータベース５０は、負荷分散プログラム６０の制御により第１の実施の形態における負荷分散システムによる処理と同一の処理を実行する。【００７６】
ここで、本実施の形態によるサービス処理サーバ１のハードウェア構成を図８を参照して説明する。【００７７】
図８は、本実施の形態によるサービス処理サーバ１のハードウェア構成を示すブロック図である。【００７８】
図８を参照すると、本実施の形態によるサービス処理サーバ１は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメインメモリであり、データの作業領域やデータの一時退避領域に用いられる主記憶部３０２、ネットワークを介してデータの送受信を行う通信制御部（送受信部１０）３０３、周辺機器と接続してデータの送受信を行うインタフェース部３０４、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置である補助記憶部３０５、本情報処理装置の上記各構成要素を相互に接続するシステムバス３０６等を備えている。【００７９】
本実施の形態によるサービス処理サーバ１は、その動作を、サーバ内部に上述した負荷分散プログラム６０を組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することによりハードウェア的に実現することは勿論として、上記した各構成要素の各機能を提供する負荷分散プログラム６０を、ＣＰＵ３０１で実行することにより、ソフトウェア的に実現することも可能である。【００８０】
ソフトウェア的に実現する場合、ＣＰＵ３０１は、補助記憶部３０５に格納した負荷分散プログラム６０を、主記憶部３０２にロードして実行することにより、上述したＰ２Ｐ機能部２０とサーバ機能部３０の機能を実行する。【００８１】
（第２の実施の形態による効果）
第２実施の形態によれば、負荷分散システム用プログラムを用いることによりコンピュータを負荷分散システムとして動作させることができ、第１実施の形態の効果と同様の効果を得ることが可能である。【００８２】
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。【００８３】
この出願は、２００７年９月１３日に出願された日本出願特願２００７−２３７７７９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2009034994.tif 000003
【図２】
2009034994.tif 000004
【図３】
2009034994.tif 000005
【図４】
2009034994.tif 000006
【図５】
2009034994.tif 000007
【図６】
2009034994.tif 000008
【図７】
2009034994.tif 000009
【図８】
2009034994.tif 000010
【国際調査報告】
2009034994.tif 000011
2009034994.tif 000012
2009034994.tif 000013
2009034994.tif 000014